First of all, A great piece of work. Boy! there is lot to learn from your style of coding.
Can you also consider creating an example where you click an intermediate figure under the mouse as soon as a tool is selected.
Example: circle tool. Since you need two dependency list point-point so current behaviour is to get two points from the user before figure completion is completed.
Other option will be, using a default radius a circle is immediately created with its center at current mouse position. User places it and then (if they wish) they can update it by dragging center/radius point.
This is a big help if you have to create a lots of circles of uniform radius. The default radius can then be defined in the settings.
I am trying extend your code to my particular needs. To summarize, I am working on extending your work on solving engineering calculations (solve graphically, circuit diagrams, solve automotive gearbox calculations where user will draw the gears).
It would be a great help, if you can consider converting your classes to partial classes (which ever classes that can be changed to partial).
That way, a user like me can extend the framework and also be in sync with your code.
Once again, thanks a lot for your work. You are teaching lots of users by your work.