| 2020 May | |
| These modules contain the basic functions to create custom "scripted objects" | |
| defined within the workbench. | |
| Each scripted object has a "make function" like `make_rectangle`, | |
| a proxy class like `Rectangle`, and a viewprovider class | |
| like `ViewProviderRectangle`. | |
| Each make function should import the two corresponding classes | |
| in order to create a new object with the correct data | |
| and visual properties for that object. | |
| These classes should be defined in the modules in `draftobjects/` | |
| and `draftviewproviders/`. | |
| The make functions can be used in both graphical and non-graphical | |
| modes (terminal only); in the latter case the viewprovider is not used. | |
| The functions are also used internally by the graphical "GuiCommands" | |
| (buttons, menu actions) defined in the modules in `draftguitools/` | |
| and `drafttaskpanels/`. | |
| These make functions were previously defined in the `Draft.py` module, | |
| which was very large. Now `Draft.py` just loads the individual modules | |
| in order to provide these functions under the `Draft` namespace. | |
| ```py | |
| import Draft | |
| new_obj1 = Draft.make_rectangle(...) | |
| new_obj2 = Draft.make_circle(...) | |
| new_obj3 = Draft.make_line(...) | |
| ``` | |
| The functions in the `Draft` namespace are considered to be the public | |
| application programming interface (API) of the workbench, and should be | |
| usable in scripts, macros, and other workbenches. | |
| For more information see the thread: | |
| [[Discussion] Splitting Draft tools into their own modules](https://forum.freecad.org/viewtopic.php?f=23&t=38593&start=10#p341298) | |