Commit Graph

134 Commits

Author SHA1 Message Date
Roy-043
e4adfc63d7 Draft/BIM: change BezCurve, BSpline and Wire to Part::FeaturePython
Fixes: #7387.

See comment: https://github.com/FreeCAD/FreeCAD/issues/7387#issuecomment-2915599566

PR to change the base object of BezCurve, BSpline and Wire to `Part::FeaturePython`. This will only affect new objects. So code will have to also keep handling the old object type (`Part::Part2DObjectPython`).

The modification of BimPreflight.py needs to be verified. The steps in the old code lacked logic IMO. But I may have misunderstood.
2025-06-02 17:27:20 +02:00
Roy-043
5087c1949f Draft: improve upgrade and downgrade
Fixes #16333.
Follow-up of #19487.

* The functions have been made nesting-aware. New objects are put in the same container (Group, Part) as the original objects. As a consequence for some operations the original objects must be in the same container as well.
* New objects receive the visual properties of the original objects. This is not always perfect. For example when upgrading to multiple wires there is currently no check to see which edge came from which orginal object. The fact that the `format_object` function is called from the Draft `make*` functions is problematic here. If construction mode is active `make_wire` puts new objects in the construction group and we don't always want that. This has been solved with a workaround (see 'cludge' in the code).
* The 'de-parametrize' downgrade option has also been enabled for features of PartDesign Bodies that have the `Profile` property.
* Before deleting objects there is a check to see if they are in use elsewhere (`InList` check). Base objects of arrays are not deleted if they are visible. If a PartDesign Body, or an object inside a Body is selected, the whole Body is deleted.
* The force options did not work for functions that take a single object.
* The `getShapeFromMesh` function in ArchCommands.py could return a solid that was not closed. A check for that has been added.
2025-02-19 18:06:12 +01:00
Roy-043
c26264ec98 Draft: make arrays explodable
Fixes #13085.

This PR adds the `PlacementList` property to non-link arrays.
2025-02-08 19:20:33 +01:00
Roy-043
830b2aada7 Draft: fix handling of annotation Links in TD DraftViews
Fixes #19199.
2025-01-28 17:37:29 +01:00
Roy-043
d587e6a91a Draft: make move, rotate and scale commands link-aware (#18795)
* Draft: make move, rotate and scale commands link-aware

Fixes #12836.
Fixes #15681.

These changes are presented as a single ('big') PR because the mentioned commands have several similarities. Working on them seperately would have made less sense.

The commands have been made 'link-aware' meaning they can now handle Links and objects in linked containers.

This required several changes in the following main files. For each command all options are handled by a single function now (the `move`, `rotate` and `scale` functions). This was the only reasonable solution to correctly handle nested placements. As a result there is no longer a need to build very complex 'cmd' strings in the gui_*.py files (which is a good thing IMO).

Main files:

* move.py
* rotate.py
* scale.py
* gui_move.py
* gui_rotate.py
* gui_scale.py
* gui_trackers.py

The following files have also been updated:

* Draft.py: Imports updated.
* DraftGui.py: If `CopyMode` is changed the ghosts have to be updated. The move and rotate commands now also show previews of movable children. But since those are not copied they should be removed from the ghosts if `CopyMode` is changed to `True`.
* utils.py: Some helper functions have been added. An existing helper function (only used internally) has been renamed.
* gui_utils.py: The `select` function has been updated to accept a list of tuples to allow the reselection of nested objects.
* clone.py: A new property `ForceCompound`, necessary for non-uniform scaling, has been added.
* join.py: The `join_wires` function now returns the resultant wire objects.
* task_scale.py: Updated to allow negative scale factors. Support for `SubelementMode` preference added.
* dimension.py: `transform` methods added.
* layer.py: `get_layer` function added.
* svg.py: Updated to use `get_layer`.
* view_text.py: Instead of two added `coin.SoTransform()` nodes the main transform node is used instead. This was done so that ghosts of Draft Texts can be handled properly without requiring dedicated code in gui_trackers.py.

Notes:

* Support for "App::Annotation" is limited. Only their `Position` is handled (by the move and rotate commands).
* Support for "Image::ImagePlane" has been removed from the scale command. The object has its own calibrate feature (see https://wiki.freecad.org/Std_Import).
* Copies and clones are always created in the global space.

* Fix several unit test issues.

* Reset value that was changed while testing

* Rebase and update test_modification.py

* Reintroduce scaling of image planes
2025-01-20 18:23:36 +01:00
Roy-043
9b8b962f56 Draft: Remove unnecessary CamelCase names
The related functions were introduced in V0.19. They should not be also available under CamelCase names.
2024-12-26 12:06:29 +01:00
Yorik van Havre
af84424a77 BIM: NativeIFC 2D support - section planes 2024-12-11 10:24:43 +01:00
Roy-043
735a07678d Draft: Draft_Split: apply original view props to split off object
Fixes #16210.

Note that `Draft.format_object` is called from gui_split.py (in the commit). This is not consistent with other tools where this is handled in the `make_*` functions. In this case the new object is formatted twice. The 1st time by the `make_wire` code which (wrongly) applies the current default props.
2024-11-29 10:56:29 +01:00
Roy-043
42d09e08d5 Draft: fix handling of Links in TD DraftViews
Forum topic:
https://forum.freecad.org/viewtopic.php?t=92476

For LinkGroups and Links to Std_Groups that do not have a default placement, a temporary hidden document is used to handle the placement of their children. This is a bit of a hack of course.
2024-11-29 10:55:31 +01:00
Yorik van Havre
f7b639b795 Draft: Implement unhandled svg text rotation 2024-11-15 12:09:53 -05:00
Roy-043
6c8c263297 Draft: Improve layer drag-drop fix.
The fix in #16212 only checks the LayerContainer for layers. Since we do not stop users from moving layers out of that container, we should search the whole document instead.

Fixes: #16201.
2024-10-17 12:29:42 +02:00
Roy-043
d71fcf7593 Draft: Fix upgrade function: delete argument was ignored in case of draftify
Forum topic:
https://forum.freecad.org/viewtopic.php?t=91357
2024-10-14 08:19:03 -05:00
Roy-043
8875672e78 Draft: avoid confusing SVG warning for nested circles and ellipses
Forum topic:
https://forum.freecad.org/viewtopic.php?t=90942
2024-10-07 15:07:51 +02:00
Roy-043
b6599c5315 Draft: Fix regression with layer print color
Problem with the same cause as #16212.
2024-09-16 10:07:40 +02:00
Roy-043
7407eee427 Draft: revert Draft WB changes from #13294
Revert the Draft WB related changes of #13294.
2024-04-24 21:27:04 +02:00
David Carter
495a96a0f5 Material: Material appearance
Uses new material system for appearance

Each feature object now has a property called ShapeMaterial that
describes its physical properties. If it has a shape, it has a
material.

The ShapeColor attribute is replaced by a ShapeAppearance attribute.
This is a material list that describes all appearance properties, not
just diffuse color. As a list in can be used for all elements of a
shape, such as edges and faces.

A new widget is provided to allow the user to select materials in a
consistent fashion. It can also launch the material editor with its
more advanced capabilities.
2024-04-04 07:39:58 -05:00
Roy-043
ca1a10585a Draft: fix wrong selection after commands (improved)
The previous fix was not correct. Some commands would cause a crash and several files were missed.

Forum topic reporting a crash:
https://forum.freecad.org/viewtopic.php?t=85243
2024-02-16 10:56:10 +01:00
Kevin Martin
02ebb17558 Eliminate many "doing what you told me to" messages
These messages were perhaps originally intended as a debuggin aid but now add clutter to the output panes. Remaining messges are mostly the result of methods to display attributes of an object (which one could call from the Python console) or actually provide some information which would not be obvious from the circumstances
2024-02-02 08:58:45 -05:00
Roy-043
56d73f39ac Draft: implement new get_param functions (step 1)
See #11677
2023-12-11 19:31:34 +01:00
Roy-043
ca06e87a38 Draft: Updates related to the PlaneGui class (step 2)
Related issue:
#5603.

Additionally:
Fixed the issue where the texts of Arch_Space objects were not exported to DXF.
2023-10-23 16:25:12 +02:00
Roy-043
3c14a56eed Draft: fix multiline offset for rotated SVG texts
Forum topic:
https://forum.freecad.org/viewtopic.php?p=711184#p711184
2023-10-09 13:27:54 +02:00
CalligaroV
163c30700f [Feature Request] [Draft] [UI/UX] Remove the center arrow on radial dimensions (#10655)
Related to issue #7573

Forum discussion

https://forum.freecadweb.org/viewtopic.php?p=631252#p631252

These modifications don't add the new properties suggested on the issue mentioned above and suggested on the forum discussion but just remove the center arrow

Other info and discussion can be found at https://gitlab.com/calligarov/FreeCAD/-/merge_requests/1
2023-09-13 15:27:51 +02:00
Roy-043
beb996e6a1 Draft: Avoid dictionary.keys() where possible (#10160) 2023-08-13 11:46:25 +02:00
Roy-043
8a4e8ca60e Draft: Fix SVG "Edges not ordered" issue (#10116) 2023-08-12 15:30:54 +02:00
luzpaz
93ddce5008 Fix various typos 2023-08-08 14:25:00 +02:00
Roy-043
a04dfded14 Draft: Improve downgrading of PD bodies (#9934) 2023-07-18 10:46:10 +02:00
Roy-043
ad0c41a60e Draft: get_svg: loose edges in obj with faces also received a fill (#9695) 2023-05-30 08:13:47 +02:00
Yorik van Havre
3c685c556c Draft: Better svg linestyle settings - fixes #6733 2023-05-10 10:14:33 +02:00
Yorik van Havre
b028bb1696 Merge pull request #9376 from Roy-043/Draft-Remove-Drawing-WB-related-code-from-DXF-related-files
Draft: Remove Drawing WB related code from DXF related files
2023-04-28 12:48:08 +02:00
luzpaz
129d5882a7 Migrate domain name from freecadweb to freecad (#9352)
* Migrate domain name from freecadweb to freecad
* Migrate src/Mod/Material files
* Migrate Stylesheet related files
* Migrate *.svg files
* Migrate miscellaneous files
* Migrate some build files
* Migrate recently added TD AR_IRAM template files

Closes #6415
2023-04-24 15:19:20 -05:00
Roy-043
b5a1c0acfb Draft: Remove Drawing WB related code from DXF related files 2023-04-24 16:01:10 +02:00
luzpaz
78bdc34996 Draft: linting bad indentations, superflous markup (#9313) 2023-04-19 09:48:57 +02:00
mosfet80
889ad11e02 [Draft] Remove obsolete code related to Drawing WB
* [Draft] Remove obsolete code related to Drawing WB




remove unused elif

* [Draft] Remove obsolete code related to the Drawing WB

* Update preferences-draftvisual.ui

Also remove the template label.

* Update utils.py

Remove reference to "template"

* Remove Draft_Drawing.svg from Draft.qrc

---------

Co-authored-by: Roy-043 <info@b-k-g.nl>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2023-04-03 16:36:23 +02:00
Roy-043
87b0893044 [Draft] Remove obsolete decode code (#9106) 2023-03-28 21:03:33 +02:00
Yorik van Havre
420636a51c Draft: Removed six module 2023-02-24 13:20:58 +01:00
Roy-043
f34cce97a0 [Draft] typo: object name should be capitalized (#8484) 2023-02-14 15:44:26 +01:00
Roy-043
693ec401f7 Draft: subelement mode ignored nesting (#8319) 2023-02-02 11:49:55 +01:00
Roy-043
25c4792690 Draft: fix issue with undo (#8267) 2023-01-31 21:38:19 +01:00
luzpaz
5fa4482504 Draft: fix trailing whitespace 2023-01-22 20:26:40 +01:00
Roy-043
d81f1f015e Draft: rotate.py: remove Placement.rotate() workaround (#8230) 2023-01-22 16:29:15 +01:00
Roy-043
e6eb208639 Draft: Fix and improve Draft_AnnotationStyleEditor (#8207)
* Draft: Fix and improve Draft_AnnotationStyleEditor

* Draft: Fix and improve Draft_AnnotationStyleEditor 2
2023-01-21 10:28:47 +01:00
Yorik van Havre
e49d30a327 Merge pull request #8081 from Roy-043/Draft-Fix-inconsistent-properties-of-Draft-annotations
Draft: Fix inconsistent properties of Draft annotations
2023-01-13 11:47:00 +01:00
jim
e88b2cbead Make upgrades of type "draftify" return the new object (like the other
upgrade types do)
2022-12-26 13:32:26 -08:00
Roy-043
34f43a245c Draft: Fix inconsistent properties of Draft annotations 2022-12-23 16:49:56 +01:00
Roy-043
3998f3af8d Draft: fix move AngularDimension bug (#8047) 2022-12-15 12:04:12 +01:00
Chris Hennes
7b9acb012c Draft: Remove py2 references 2022-11-09 14:08:54 +01:00
Roy-043
c9233ecdce Draft: fix rectangle with face offset bug 2022-10-30 12:49:28 +01:00
Roy-043
7fe184dcc1 Draft: Fix alignment of angular dimension arrows in svg.py 2022-10-10 21:07:43 +02:00
Roy-043
7bb485e6b7 Update rotate.py
Workaround for `faulty` implementation of Base.Placement.rotate(center, axis, angle).
See: https://forum.freecadweb.org/viewtopic.php?p=613196#p613196
2022-07-28 13:46:26 +02:00
Roy-043
1188423beb Draft: Fix handling of groups on move-copy and rotate-copy 2022-07-26 11:26:50 +02:00