(This is just a photo of my desk setup. I expect it to entice you to read further. As a side note, I don't know how to make images smaller here in the FreeCAD Forum. Any advice?)
Disclaimer: Dial-a-sketch is currently a proof of concept. I've spent just 3 days on it so far. If you know of any pre-existing designs that do what I'm doing, or if you see anything I should change, TELL ME NOW before I build any muscle memory.
Ok, but what actually IS dial-a-sketch? It's a system of keyboard shortcuts I came up with so that I never have to take my hand off the number pad. Unlike traditional keyboard shortcuts, where each key is associated with the name of an action, dial-a-sketch ties each key to a basic concept, then you chain concepts together to create the action you want to accomplish. For example, if you wanted to create a loft, you would dial M489. M=part design (remapped to my mouse), 4=complex, 8=additive, and 9=pad. If you wanted to create a lofted cut, you would dial M459, because 5=cut. If you wanted to make a regular pad, you would dial M89, dropping the 4 because pads are not complicated. The basic concept for each key is this:
Code: Select all
7 8 9
(part design) pattern additive pad
(sketch) use existing polyline, rim polygon
(constrain) lock colinear intersect
4 5 6
(part design) complex cut revolve
(sketch) vertical point, center circle
(constrain) vertical coincident diameter
1 2 3
(part design) feature datum junk drawer
(sketch) horizontal construction arc
(constrain) horizontal reference radius
0 .
measure (constraint) snell's law
Hopefully that gave you a basic mental image of the dialer layout, but I've found it very difficult to convey what the keys represent and how they relate to each other. Fortunately, there are a few neat organizational tricks I've employed to tidy things up. You'll note that the upper row involves "more", while the lower rows involve "less". 8 is about creating lines or extruding shapes, 5 is about cutting things or creating single points, and 2 is devoted entirely to invisible items: datums, construction lines, and reference dimensions. In terms of columns, the rightmost column is all about shapes, the central column deals with points and lines, and the leftmost column is all about modifications to existing things (The left column came together by accident, so it's not as structured as the others.)
I've also employed a simple technique used in ergonomic keyboard layouts: actions are designed to "flow" horizontally, using multiple fingers. Contradicting concepts are placed in the same column to minimize repeated use of the same finger. For example, in the sketcher, 6 is circle and 9 is polygon. You will *sometimes* dial 69 for slot, but you're more regularly going to dial 65 for "circle with a center point" and 68 for "circle defined by a rim".
Just two more things:
First, I set up dial-a-sketch to be used on my Corne, a keyboard you can learn about in the r/crkbd subreddit. I also use the Colemak-DH keyboard layout instead of standard qwerty, which you can read about here: https://colemakmods.github.io/mod-dh/ . I'm using letters, not numbers, to dial in my codes. 123456789 corresponds to XCDRSTWFP on my board, so whatever config files I have won't work for you.
Second, I made a Reddit post to announce this... project? Idea? Whatever it ends up being. It's the same contents, but if you want to go upvote it, do so here: https://www.reddit.com/r/FreeCAD/commen ... &context=3
And now: an unabridged list of all dial-a-sketch codes!
Part design: M, (I mapped m to my mouse as the first key in any Part Design sequence; it also cycles the Polyline modes in the Sketcher.)
2,5 datum point
2,8 datum line
2,9 datum plane
2,3 datum coordinate system
8,9 pad
8,6 revolve
4,8,9 loft
4,8,6 helix
4,8,3 sweep (also called pipe)
primitive (not mapped, too many variants.)
5,9 cut
5,6 revolve cut
5,3 hole
4,5,9 loft cut
4,5,6 helix cut
4,5,3 sweep cut
primitive cut (not mapped, too many variants.)
7,8 mirror
7,9 linear pattern
7,6 polar pattern
7,3 multitransform pattern
1,6 fillet
1,8 chamfer
1,9 draft
1,3 thick solid (I haven't tried this tool out yet, what does it do?)
2,2 Boolean operation
Sketcher: No prefix, this makes dialing sketcher codes faster.
5 point
8 line (polyline)
3,5 arc, centerpoint
3,8 arc, rim
6,5 circle, centerpoint
6,8 circle, rim
3,3,5 arc ellipse centerpoint
6,6,5 circular ellipse centerpoint
6,6,8 circular ellipse rim
6,3 B-spline, control (open shape)
3,6 B-spline, periodic control (closed shape)
8 Polyline (same as line)
9,8 Rectangle
9,5 centerpoint polygon with N sides.
6,9 slot
7,3 fillet (regular)
7,6 fillet (constraint-retaining)
7,5 Trim
7,8 Extend
7,9 Link to external geometry
7,7 copy geometry
2 make construction geometry
Sketcher constraints: (+ is the prefix)
5,5 Coincident Point
5,9 Point on object
5,8 symmetrical
1 horizontal
4 vertical
8,8 parallel
8,9 perpendicular
8,6 tangent
7 block movement
2,2 switch between driving and reference modes
2,7 activate/deactivate selected constraints
Sketcher measurement constraints: 0, (this prefix can be inconvenient for traditional number pads; on my keyboard I can press it with my thumb.)
0 equal (remember, this means hit 0 twice, first as the prefix and again for the command.)
7 lock with dimensions
1 measure horizontal
4 measure vertical
8 measure distance
3 measure radius
6 measure diameter
9 measure angle
. Snell's law (I have literally never clicked on this but somehow it ended up with its own dedicated key.)
Bonus: dial-a-sketch for viewing angles. prefix: shift
Code: Select all
7 zoom to fit 8 top 9 trimetric
4 left 5 front 6 right
1 normal to sketch 2 bottom 3 toggle visibility
0 backside
What's next:
I have a relatively clear mental picture of dial-a-sketch in my head, but getting it into writing (or any format, really) has proven quite difficult. Any advice for "showing" dial-a-sketch more clearly would be appreciated.
The list of codes is far from complete! I haven't even opened the TechDraw, Part, or Assembly4 workbenches yet, let alone understood them. Additional view-related codes would be nice. (wireframe/solid, section view, navigation between tabs, etc.) There are a few missing odds and ends as well, such as entering/exiting a sketch or creating a sketch. Finally, I'm thinking of using ctrl as a prefix for menu bar actions. Saving, undo/redo, measuring objects, and macros could all fit under that category.
If someone with a more traditional keyboard layout tries dial-a-sketch, they may want to share their config files to make it easier for others to join in the fun. I don't even know where shortcuts are stored, to be honest.
It would be really nice if FreeCAD could filter keyboard shortcuts based on the current workbench. Is this already possible? If so, how is it done? I don't like to type M before every Part Design code. It would also make the addition of more workbenches relatively easy.