I work for improving the usability of drawing.
My plan for now is this:
- add guideline shapes: vertical and horizontal (infinite) lines that the solver is aware of them so it will make them sticky and make more precise
- add rectangle shape for default planes (XOY, YOZ, XOZ) defined by two points. This combined with guideline lines will make hopefully a breeze to define a (more) precise rectangle from user interface.
- make possibility constraints to be interpreter based instead of function based (most code is here). This will mean that will be possible that when you click a point that is an end of an edge, to get questioned: do you want this point to be linked? and from that moment on the point will be "sticky" with the point you defined on. This can be done with actual design also but need a lot of changes from the shape creation standpoint. As the actual constraints are viewed as "external shapes" and meta-actions work just with one current shape, this will make that you cannot add constraints in the same time when you draw a line. Setting them as an interpreter, will make that possible
- I know how to create a constraint of: "middle of rectangle" or in general: "middle of a face" but yet I don't know how to create a constraint: distance from an edge (because the plane can be arbitrary, when in case of middle of a "faced shape", it's face is the plane you work on) I will need to investigate on. But I want based on the previous work to make the following constraints: - end of edge, middle of edge, middle of rectangle, middle of circle.
- improve solver to: align on main planes on rounding values (like grid values), to align to helper geometry, to ask user for constraint matching and to provide this constraint to that point
This work will hopefully take around two-three days and more on spotting bugs that may occur.