Commit Graph

145 Commits

Author SHA1 Message Date
vocx-fc
66959b2688 Draft: clean up CircularArray code
Avoid `Draft.py` in the `make_circular_array` function because
it creates a circular dependency.

Use function to find the object in `make_circular_array`.

Now the make function accepts as input a `"String"` which must be
the `Label` of an object in the document, so it is easier to create
arrays interactively from the Python console.

Clean up the GuiCommand and task panel code, and avoid printing
messages to the terminal, as this is already done
by the make function.
2020-06-03 14:46:15 +02:00
vocx-fc
33d3fb1fa9 Draft: clean up PolarArray code
Avoid `Draft.py` in the `make_polar_array` function because
it creates a circular dependency.

Use function to find the object in `make_polar_rarray`.

Now the make function accepts as input a `"String"` which must be
the `Label` of an object in the document, so it is easier to create
arrays interactively from the Python console.

Clean up the GuiCommand and task panel code, and avoid printing
messages to the terminal, as this is already done
by the make function.
2020-06-03 14:46:15 +02:00
vocx-fc
5dcb4ea104 Draft: clean up OrthoArray code
Avoid `Draft.py` in the `make_ortho_array` function because
it creates a circular dependency.

Use internal functions to abstract the orthogonal arrays.
The `_make_ortho_array` is a simple wrapper over the general
`make_array` function.

The result is four variants:
- `make_ortho_array`
- `make_ortho_array2d`, without the Z component
- `make_rect_array`, strictly rectangular components
- `make_rect_array2d`, strictly rectangular without the Z component

Also use functions to perform checking of the inputs,
whether these are vectors, numbers (integer and floats)
or integers.

Now the make function accepts as input a `"String"` which must be
the `Label` of an object in the document, so it is easier to create
arrays quickly from the Python console.

Clean up the GuiCommand and task panel code, and avoid printing
messages to the terminal, as this is already done
by the make function.
2020-06-03 14:46:15 +02:00
vocx-fc
31c8f49467 Draft: add new options to the make_point_array function
It supports a new parameter `extra` that is used
to provide `ExtraPlacement` for the copies of the array.

Adjust the GuiCommand properly.
2020-06-03 14:44:00 +02:00
vocx-fc
4b65440112 Draft: clean up code, PEP8, and docstrings for PointArray
Test the inputs to the `make_point_array` function
and return `None` if there is a problem.

Now the make function accepts as input a `"String"` which must be
the `Label` of an object in the document, so it is easier to create
arrays quickly from the Python console.

Add a message deprecating the older call `makePointArray`.

Adjust the GuiCommand accordingly. Now it uses the commit
mechanism of the parent `Modifier` class so that the executed
functions are recorded in the Python console.

Clean up the `PointArray` class as well.
2020-06-03 14:44:00 +02:00
carlopav
0b912f7c8b Draft: further cleanup of Draft Edit. 2020-05-29 13:35:51 +02:00
Yorik van Havre
43c4f9af3d Draft: Added a border around the Draft grid (can be disabled in prefs) 2020-05-27 18:02:04 +02:00
carlopav
6d4dc1c834 Draft: Edit arc by 3 points bugfix 2020-05-25 13:37:55 +02:00
carlopav
b6b48b43ec Draft: bugfix on Edit BezCurve 2020-05-25 13:37:55 +02:00
carlopav
f4a47d0ecf Draft: Edit bugfix in Wire/BSpline curve editing 2020-05-25 13:37:55 +02:00
carlopav
caf6606d5f Draft: Edit support for Part Sphere
.
2020-05-25 13:37:55 +02:00
carlopav
d9e2f4f46c Draft: Edit support for Part Cone 2020-05-25 13:37:55 +02:00
carlopav
1b263a6a8f Draft: reordered supported edit objects and support for PartCylinder 2020-05-25 13:37:55 +02:00
carlopav
a98e2076db Draft: Edit reordering 1
Started a general refactor to handle all the conversion between global and object coordinate system inside the main methods and just use object coordinates inside object functions.
Draft: Edit reordering 2

Fixed Editing of Part objects according to the new refactor
Draft: fix in autogroup function for dimensions


Draft: fixed Polygon editing when inscribed or circumscribed


Draft: Edit support for Ellipse object


.


Draft: Edit docstrings


Draft: Edit reordering 3


Draft: Fixed Edit for structure object

And also refactor Edit methods that control special object display during editing.
Draft: Fixed edit for arch wall object
2020-05-25 13:37:55 +02:00
carlopav
61dd57407e Draft: Split Draft Edit into 4 modules
One for interaction handling and 3 for object editing functions, divided between Draft, Part, Arch
2020-05-25 13:37:55 +02:00
carlopav
8d23cd676a Draft: Cleanup of Draft Edit 2020-05-25 13:37:55 +02:00
vocx-fc
4a765e12a5 Draft: check GUI in upgrade function before using viewprovider
Also make various improvements in style, PEP8, return value
is now a tuple of lists instead of a list of lists.

Delay the import of other modules like `Part` and `DraftGeomUtils`
using the `LazyLoader` class.

Update the Gui Command as well.
2020-05-18 12:17:59 +02:00
vocx-fc
07245dbf00 Draft: check GUI in downgrade before using viewprovider
Also make various improvements in style, PEP8, return value
is now a tuple of lists instead of a list of lists.

Update the Gui Command as well.
2020-05-18 12:17:59 +02:00
vocx-fc
0d9ae239af Draft: cleanup code of AnnotationStyleEditor
Introduced in 1b887fa0f5, 4555a77663, 5b3fea59e0.

Make it PEP8 compliant, and shorten line lengths.

It is based on `GuiCommandSimplest` to inherit basic behavior
such as `IsActive` returning `True` when a document exists.
2020-05-18 12:16:33 +02:00
vocx-fc
d438aec821 Draft: remove old DraftFillet class, and make it a redirect
Remove the make function that creates the old object,
its corresponding Gui Command, and the old `DraftFillet.Fillet`
proxy class, which now is a redirection to the new `Fillet`
class defined in `draftobjects.fillet`.

Also change the unit test, and the `draft_test_object` script
to run `Draft.make_fillet`.
2020-05-13 11:37:56 +02:00
vocx-fc
c17546557d Draft: add new Gui Command for Fillet 2020-05-13 11:37:56 +02:00
carlopav
f433d7f63d Draft: bugfix in Snapper 2020-05-12 10:03:52 +02:00
vocx-fc
de9c9a6be2 Draft: move arc_3points to the make package
Also import it in the `Draft` namespace so that is available
as `Draft.make_arc_3points`.

Use this new function in the unit test `drafttests.test_creation`,
in the GuiCommand `draftguitools.gui_arcs`, and in the
`draft_test_objects` script.
2020-05-12 10:00:41 +02:00
vocx-fc
3a14908c4a Draft: update description of draftguitools package 2020-05-06 12:46:24 +02:00
carlopav
ad92c99664 Draft: fixed edit for dimension objects 2020-05-04 10:53:54 +02:00
carlopav
cbeca1b4a6 Draft: fix ScaleMultiplier on annotation objects
Object auto create the property when opening an old Draft annotation
.
2020-05-04 10:53:54 +02:00
luz.paz
d8b41f70d6 [skip-ci] Fix typos in Draft, Mesh, and src/Tools
Found via codespell v1.17.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-04-30 11:40:38 +02:00
luz.paz
06a1099e2b [skip-ci] Fix typos
Found via codespell v1.17.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-04-27 11:29:32 +02:00
vocx-fc
cc75bf91d7 Draft: change super() so it is compatible with Python 2
In Python 3 `super()` can be used without an argument
in order to get the parent class, `super()`.
In Python 2 the present class must be used as an argument,
`super(ThisClass, self)`.

This commit is done to support Python 2,
as without it all Gui Command tools will be broken
and will fail to launch, even if the unit tests pass.

Also, set the `__metaclass__` variable to `type`.
This is done to turn all classes into "new style" classes
in Python 2. This is required so `super()` works correctly
in this version of Pyton.

This commit can be reverted once Python 2 support
is completely dropped, and only Python 3 compatible code
is used.
2020-04-27 11:05:51 +02:00
vocx-fc
e6652aaac1 Draft: move Mirror GuiCommand to gui_mirror module 2020-04-24 13:49:13 +02:00
vocx-fc
b259d94125 Draft: move Draft_Clone GuiCommand to gui_clone module
Rename the Gui Command to `Clone`, and provide an alias
for the older name `Draft_Clone`, just in case.
2020-04-24 13:49:13 +02:00
vocx-fc
dc2c103fe6 Draft: rename Circular, Ortho, and Polar arrays
The internal GuiCommand classes are renamed to `CircularArray`,
`OrthoArray`, and `PolarArray`. This is a shorter name than the
previous `GuiCommandCircularArray`, `GuiCommandOrthoArray`,
and `GuiCommandPolarArray`.

These classes are not part of the scripting interface of Draft
so we don't risk breaking previous files.
2020-04-24 13:49:13 +02:00
vocx-fc
0fb2d9cf78 Draft: small changes to the loading of the array modules 2020-04-24 13:49:13 +02:00
vocx-fc
cc26565b3a Draft: move PointArray GuiCommand to gui_pointarray module 2020-04-24 13:49:13 +02:00
vocx-fc
720dc919c3 Draft: move PathLinkArray GuiCommand to gui_patharray module 2020-04-24 13:49:13 +02:00
vocx-fc
f58212c07d Draft: move PathArray GuiCommand to gui_patharray module 2020-04-24 13:49:13 +02:00
vocx-fc
4b8dda1555 Draft: move LinkArray GuiCommand to gui_array_simple module
The code is kept for historical reasons, but the tool
is no longer accessible from the toolbars or menus,
as it was superseded by the three commands `Draft_OrthoArray`,
`Draft_PolarArray` and `Draft_CircularArray`.
2020-04-24 13:49:13 +02:00
vocx-fc
82efd33581 Draft: move Array GuiCommand to gui_array_simple module
The code is kept for historical reasons, but the tool
is no longer accessible from the toolbars or menus,
as it was superseded by the three commands `Draft_OrthoArray`,
`Draft_PolarArray` and `Draft_CircularArray`.
2020-04-24 13:49:13 +02:00
vocx-fc
d4c699c844 Draft: move Draft2Sketch GuiCommand to gui_draft2sketch module 2020-04-24 13:49:13 +02:00
vocx-fc
6f060d513d Draft: move Shape2DView GuiCommand to gui_shape2dview module 2020-04-24 13:49:13 +02:00
vocx-fc
8643025d49 Draft: move WireToBSpline GuiCommand to gui_wire2spline module 2020-04-24 13:49:13 +02:00
vocx-fc
4ed80cdf83 Draft: move Drawing GuiCommand to gui_drawing module
Also, finally the command is removed from the toolbar
as the Drawing Workbench is obsolete since v0.17.

The command is still loaded and defined by the workbench
but it is no longer presented to the user interface in the menu
or toolbar.
2020-04-24 13:49:13 +02:00
vocx-fc
868435bfd9 Draft: move Scale GuiCommand to gui_scale module
The scale operation can be used with subelements, vertices
and edges, but in this case this only works with polylines
(wires) because internally the functions `scaleVertex`
and `scaleEdges` only work with polylines that have a `Points`
property.

When doing a copy and scale, it also calls `copyScaledEdges`
which calls `joinWires`, so problems with joining wires
may also be present when performing this operation.
2020-04-24 13:49:13 +02:00
vocx-fc
81d77e2ca1 Draft: move Trimex GuiCommand to gui_trimex module 2020-04-24 13:49:13 +02:00
vocx-fc
418bafe6ee Draft: move Downgrade GuiCommand to gui_downgrade module 2020-04-24 13:49:13 +02:00
vocx-fc
c3221222b3 Draft: move Upgrade GuiCommand to gui_upgrade module 2020-04-24 13:49:13 +02:00
vocx-fc
a9688f7d00 Draft: move Split GuiCommand to gui_split module 2020-04-24 13:49:13 +02:00
vocx-fc
cb5aa765fb Draft: move Join GuiCommand to gui_join module
Occasionally it fails to join lines even if the lines
visually share a point.

This is a rounding error in the comparison of the shared point;
a small distance will result in the points being considered
different and thus the lines not joining.

The solution is to test properly the two points using
`DraftVecUtils.equals` which considers the value of
the `precision` set in the Draft preferences.
2020-04-24 13:49:13 +02:00
vocx-fc
8ea1358dcb Draft: move Stretch GuiCommand to gui_stretch module 2020-04-24 13:49:13 +02:00
vocx-fc
eb21502d0f Draft: move Offset GuiCommand to gui_offset module
Include Yorik's commit 97c8eff825.
2020-04-24 13:49:13 +02:00