PartDesign new development, MultiBody and more
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
PartDesign new development, MultiBody and more
I open this thread for discussion of the new development of PartDesign workbench in my branch. The focus will be on multibody/solid design, but may also include other enhancement. Hopefully, all these can be merged to upstream soon, but you can already try all the features mentioned below in my personal release here.
New body created using my branch will by default support multiple solids, meaning that it won't report error if say a pocket operation cuts the body in two halves. For bodies created with upstream FC, you need to manually turn off the 'SingleSolid' property of the body. That's for the sake of backward compatibility.
Every additive feature now exposes a 'New solid' option in their task panel. Clicking that, a new solid will be created by that feature without fusing to its base feature. And you'll see a new tag color in the tree view. The features with different tag color can toggle visibility independently. Within the same tag, only one feature can be visible. But if you have SelectionOnTop enabled (which is by default), just select or mouse over in the tree view can reveal any feature. You can use boolean feature to operate on features from different tag within the same body. This means you can easily do fork and merge with different solids in the same body. The 'Tip' feature is marked by a tag with its middle colored green. You can now reorder features easily using drag and drop. Currently drag and drop only support moving feature within the same tag. If you really want to move them across, then use the original 'Move tip' action.
There is a new feature called 'Split'. It shares the same underlying code with Part Slice/Fragment feature. You can do slicing using a face or datum plane. Or, you can set its 'Fragment' property to true, and do boolean fragment. The 'Split' feature will expose all splitted solid into individual child features. And you can (un)suppress any of the solid by double clicking it. So it also functions as Part compound filter in a way.
Every feature can be suppressed by right clicking the object in tree view and select 'Suppress'. The suppressed feature is still recomputed so that when you mouse over the feature, it can show the resulting shape in red. Recomputation failure of a suppressed feature is silently ignored.
All 'Pattern' feature can now transform any other feature, not just Additive or Subtractive features. For Additive or Subtractive features, you can choose whether to transform the sub-feature, i.e. the added or subtracted part of the shape, or the entire solid, using property 'SubTransform', or through edit task panel.
There is a new 'GenericPattern' feature that allows you to control the pattern transformations using expression. I saw a feature request in the forum for mutable pattern instance. 'GenericPattern' is of course one way to achieve this. Another way is to create new solid using a pattern feature, then do split and suppress, and finally merge it back to the original solid using boolean operation.
Every 'Pattern' feature has a new 'TransformOffset' property to allow you to apply an offset to the base shape before patterning. You can access it either through the property view, or the editing task panel, which is collapsed by default, because the placement editing conflicts with pattern selection.
Another new feature added is called 'Extrusion', which is mainly for creating non-solid and use them as datum or pad/pocket. You can extrude vertex to edge, edge to face, face to shell, or face to solid if you want (By check the 'New solid' option).
The green SubShapeBinder will now create edges if you bind to a series of vertices, and if there are more than two vertices bound, it will form a closed loop and create a face. It can now create non-planar face, which will be a face with BSpline surface, so yes, it works with BSpline edges as well. If you do not want to create face, just toggle 'MakeFace' property. And if you bind multiple faces, it will try to create a solid if possible. To turn off that behavior, toggle the 'Fuse' property.
There is also the 'Ultimate', 'End-it-all', feature called 'Wrap' that can wrap any non-PartDesign feature and add it to body. There is no visible button for that. PartDesign will monitor object dependency changes, and automatically create the wrap feature and add it to the active body. The criteria of triggering this behavior is,
* There is an active body
* The object is not currently in any container
* The object adds a dependency on some feature inside the active body
I should probably include another criteria that the object does not have any other dependency that is not in the active body. But maybe it is too restrictive. We'll see. The wrapped feature's visual nodes will be removed from the scene graph and grouped under the wrap feature, which will effectively become invisible in normal situation. SelectOnTop option can reveal the feature when you select it in the tree view. Double clicking either the wrap or the wrapped feature will reveal the feature shape also on top. FeatureWrap will insert its own task panel before the wrapped feature's editing panels. You can choose to make this either an 'Additive', 'Subtractive', or 'Standalone' feature. The 'Frozen' option allow to freeze the wrap feature such that it retains the last unfrozen shape from the wrapped feature and stop any further update.
Before the wrap feature is auto created, a dialog will appear asking for confirmation.
Finally, PartDesign will now hijack equivalent Part command if it is operated on an active body. For example, if you select an edge in an active body, and click Part Fillet button, it will create a PartDesign fillet instead. A similar confirmation will appear before hand. You can also change the default behavior in 'Part design' preference page.
New body created using my branch will by default support multiple solids, meaning that it won't report error if say a pocket operation cuts the body in two halves. For bodies created with upstream FC, you need to manually turn off the 'SingleSolid' property of the body. That's for the sake of backward compatibility.
Every additive feature now exposes a 'New solid' option in their task panel. Clicking that, a new solid will be created by that feature without fusing to its base feature. And you'll see a new tag color in the tree view. The features with different tag color can toggle visibility independently. Within the same tag, only one feature can be visible. But if you have SelectionOnTop enabled (which is by default), just select or mouse over in the tree view can reveal any feature. You can use boolean feature to operate on features from different tag within the same body. This means you can easily do fork and merge with different solids in the same body. The 'Tip' feature is marked by a tag with its middle colored green. You can now reorder features easily using drag and drop. Currently drag and drop only support moving feature within the same tag. If you really want to move them across, then use the original 'Move tip' action.
There is a new feature called 'Split'. It shares the same underlying code with Part Slice/Fragment feature. You can do slicing using a face or datum plane. Or, you can set its 'Fragment' property to true, and do boolean fragment. The 'Split' feature will expose all splitted solid into individual child features. And you can (un)suppress any of the solid by double clicking it. So it also functions as Part compound filter in a way.
Every feature can be suppressed by right clicking the object in tree view and select 'Suppress'. The suppressed feature is still recomputed so that when you mouse over the feature, it can show the resulting shape in red. Recomputation failure of a suppressed feature is silently ignored.
All 'Pattern' feature can now transform any other feature, not just Additive or Subtractive features. For Additive or Subtractive features, you can choose whether to transform the sub-feature, i.e. the added or subtracted part of the shape, or the entire solid, using property 'SubTransform', or through edit task panel.
There is a new 'GenericPattern' feature that allows you to control the pattern transformations using expression. I saw a feature request in the forum for mutable pattern instance. 'GenericPattern' is of course one way to achieve this. Another way is to create new solid using a pattern feature, then do split and suppress, and finally merge it back to the original solid using boolean operation.
Every 'Pattern' feature has a new 'TransformOffset' property to allow you to apply an offset to the base shape before patterning. You can access it either through the property view, or the editing task panel, which is collapsed by default, because the placement editing conflicts with pattern selection.
Another new feature added is called 'Extrusion', which is mainly for creating non-solid and use them as datum or pad/pocket. You can extrude vertex to edge, edge to face, face to shell, or face to solid if you want (By check the 'New solid' option).
The green SubShapeBinder will now create edges if you bind to a series of vertices, and if there are more than two vertices bound, it will form a closed loop and create a face. It can now create non-planar face, which will be a face with BSpline surface, so yes, it works with BSpline edges as well. If you do not want to create face, just toggle 'MakeFace' property. And if you bind multiple faces, it will try to create a solid if possible. To turn off that behavior, toggle the 'Fuse' property.
There is also the 'Ultimate', 'End-it-all', feature called 'Wrap' that can wrap any non-PartDesign feature and add it to body. There is no visible button for that. PartDesign will monitor object dependency changes, and automatically create the wrap feature and add it to the active body. The criteria of triggering this behavior is,
* There is an active body
* The object is not currently in any container
* The object adds a dependency on some feature inside the active body
I should probably include another criteria that the object does not have any other dependency that is not in the active body. But maybe it is too restrictive. We'll see. The wrapped feature's visual nodes will be removed from the scene graph and grouped under the wrap feature, which will effectively become invisible in normal situation. SelectOnTop option can reveal the feature when you select it in the tree view. Double clicking either the wrap or the wrapped feature will reveal the feature shape also on top. FeatureWrap will insert its own task panel before the wrapped feature's editing panels. You can choose to make this either an 'Additive', 'Subtractive', or 'Standalone' feature. The 'Frozen' option allow to freeze the wrap feature such that it retains the last unfrozen shape from the wrapped feature and stop any further update.
Before the wrap feature is auto created, a dialog will appear asking for confirmation.
Finally, PartDesign will now hijack equivalent Part command if it is operated on an active body. For example, if you select an edge in an active body, and click Part Fillet button, it will create a PartDesign fillet instead. A similar confirmation will appear before hand. You can also change the default behavior in 'Part design' preference page.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: PartDesign new development, MultiBody and more
I saw some topic asking about the difference between the green SubShapeBinder and the original blue ShapeBinder. Here is a brief summary,
- The original ShapeBinder can only bind to a single Part derived feature, while SubShapeBinder can bind to multiple objects having a shape, e.g. Link, an entire App::Part, etc.
- The original ShapeBinder allow you trace support placement if it is inside different container, but it will not work if the support is in a linked container, or if the binder itself is inside a linked container. SubShapeBinder has full support of context aware placement tracking. If you find any bound shape is out of place, due to container change for example, just double click the binder to resync.
- SubShapeBinder has different bind modes (BindMode property), which allows you to freeze or detach from the support, incase the bound object is gone, or you want to reverse the dependency.
- SubShapeBinder support the advanced CopyOnChange feature that allow you create mutated instance of the original object.
- SubShapeBinder can create edge/face/solid using the bound (sub)shapes.
Re: PartDesign new development, MultiBody and more
Looks great, Realthunder
I'm excited to get started with this version. On a side note: I'm planning to get started with my class of 15 students with FreeCAD soon. Among the things we'll be working with is the Path workbench. My question: how are improvements to FreeCAD in the main branch (master/development) implemented in you branch? Let's take Path as an example; how up to date is your branch with the latest improvements?
Thank you for your contribution, it's much valued and I've recently became a Patreon.
I'm excited to get started with this version. On a side note: I'm planning to get started with my class of 15 students with FreeCAD soon. Among the things we'll be working with is the Path workbench. My question: how are improvements to FreeCAD in the main branch (master/development) implemented in you branch? Let's take Path as an example; how up to date is your branch with the latest improvements?
Thank you for your contribution, it's much valued and I've recently became a Patreon.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: PartDesign new development, MultiBody and more
Thanks for your support. My last merge with upstream is 10.16. If there is any specific upstream feature you want, you can always ask. I'll perform another merge soon.hwalseng wrote: ↑Tue Nov 17, 2020 5:32 am Looks great, Realthunder
I'm excited to get started with this version. On a side note: I'm planning to get started with my class of 15 students with FreeCAD soon. Among the things we'll be working with is the Path workbench. My question: how are improvements to FreeCAD in the main branch (master/development) implemented in you branch? Let's take Path as an example; how up to date is your branch with the latest improvements?
Thank you for your contribution, it's much valued and I've recently became a Patreon.
Re: PartDesign new development, MultiBody and more
I am very happy about the new multibody features, which makes my design work much easier. For example: Screw holes can be applied to several parts with just one sketch and the hole feature, eliminating the need for cumbersome referencing with the shapebinders.
You have much more constructive and creative possibilities and are no longer limited to one coherent body.
The new wrap function also sounds interesting, so in the future a helix from part workbench can be added to the partdesign-body.
I hope the improvement of part design will be your favorite project.
I've been playing around with the new features in the last weeks and I noticed that the visibility of the branches in the tree is a bit bad. Here I would also like to have a branch to unfold or clearer color markings. Also a random color option for new parts would be desirable to distinguish the parts better.
In your LinkStage3 branch I am currently missing the improved hole feature.
https://github.com/FreeCAD/FreeCAD/pull/3999 with any following hole PRs
You have much more constructive and creative possibilities and are no longer limited to one coherent body.
The new wrap function also sounds interesting, so in the future a helix from part workbench can be added to the partdesign-body.
I hope the improvement of part design will be your favorite project.
I've been playing around with the new features in the last weeks and I noticed that the visibility of the branches in the tree is a bit bad. Here I would also like to have a branch to unfold or clearer color markings. Also a random color option for new parts would be desirable to distinguish the parts better.
In your LinkStage3 branch I am currently missing the improved hole feature.
https://github.com/FreeCAD/FreeCAD/pull/3999 with any following hole PRs
You like modern CAD? --> https://github.com/dulouie/FreeCAD-modern-config
Re: PartDesign new development, MultiBody and more
Thank you for all those great improvments, which ease the workflow a lot!
Would be possible to add a "flip normal" property to subshapbinder?
Flip normal would reverse normal of the subshapebinder like Part_ReverseShapes feature does.
This request is related to this post about sheetmetal/shells workflow https://forum.freecadweb.org/viewtopic. ... 40#p446006
Another request: is it possible to disable the jumping from Part filet/chamfer to PD filet/chamfer?
Since by warping Part filet/chamfer it is possible to filet shell objets (get from subshapbinder) in PD workbench, which is very convenient
Otherwise PD filet/chamfer feature is not allowed on non solid object
Or maybe add a condition: if selected object = non solid don't switch to PD feature, else switch = ok.
(as you can my see my code is less powerful than yours )
Thank you for your attention and all your efforts, much appreciated, as usual.
Edit: your great features already satisfy to this request, sorry for the noise
Would be possible to add a "flip normal" property to subshapbinder?
Flip normal would reverse normal of the subshapebinder like Part_ReverseShapes feature does.
This request is related to this post about sheetmetal/shells workflow https://forum.freecadweb.org/viewtopic. ... 40#p446006
Another request: is it possible to disable the jumping from Part filet/chamfer to PD filet/chamfer?
Since by warping Part filet/chamfer it is possible to filet shell objets (get from subshapbinder) in PD workbench, which is very convenient
Otherwise PD filet/chamfer feature is not allowed on non solid object
Or maybe add a condition: if selected object = non solid don't switch to PD feature, else switch = ok.
(as you can my see my code is less powerful than yours )
Thank you for your attention and all your efforts, much appreciated, as usual.
Edit: your great features already satisfy to this request, sorry for the noise
Last edited by -alex- on Mon Nov 30, 2020 10:22 pm, edited 1 time in total.
Re: PartDesign new development, MultiBody and more
First of all, thanks for the improved FreeCADLink.
I would like to request at least 2 features now.
1. Pad / Pocket with drafted surfaces. I know, it can be done with 2 steps -
a. Straight Pad / Pocket
b. Applying draft to the faces.
It is really handy if draft can be applied while extruding a sketch/face for pad/pocket. Though it can be done by using Part workbench with wrap in FreeCADLink, Part extrude does not really work good ( See Picture for reference). In Part design, it works better without addition of extra surface (picture not added). This is just for example. I would say this is must feature for easy work-flow in Part Design Module.
2. Rib Feature for Plastic Parts -
Please see the example picture. Ribs in plastic component are very common. Current work flow is to crate a closed profile sketch with required draft (if possible) and pad it, (if not possible ) add draft after pad.This could be good to have.
Thanks for asking feature request and best wishes for future work.
Rana
I would like to request at least 2 features now.
1. Pad / Pocket with drafted surfaces. I know, it can be done with 2 steps -
a. Straight Pad / Pocket
b. Applying draft to the faces.
It is really handy if draft can be applied while extruding a sketch/face for pad/pocket. Though it can be done by using Part workbench with wrap in FreeCADLink, Part extrude does not really work good ( See Picture for reference). In Part design, it works better without addition of extra surface (picture not added). This is just for example. I would say this is must feature for easy work-flow in Part Design Module.
2. Rib Feature for Plastic Parts -
Please see the example picture. Ribs in plastic component are very common. Current work flow is to crate a closed profile sketch with required draft (if possible) and pad it, (if not possible ) add draft after pad.This could be good to have.
Thanks for asking feature request and best wishes for future work.
Rana
- Attachments
-
- Plastic Part for rib example
- 2020-11-20 22_57_35-FreeCAD Link Branch Plastic Example.png (209.82 KiB) Viewed 9161 times
-
- Part Extrusion with drafted faces adds extra face
- 2020-11-20 22_39_39-FreeCAD Link Branch.png (74.73 KiB) Viewed 9161 times
Re: PartDesign new development, MultiBody and more
I would support your first feature request. There were recently some additions made to Pocket, and I had asked the developer to do it as in Part albeit for clear concepts, but he did something else, so we are left with even more diverging workbenches. You may check the tracker, perhaps exists already a ticket for that.
I vote against the ribs though. From what I have seen here in the forum, they are not quite common in general. This rather looks like it could sensibly be implemented in an addon workbench.
I vote against the ribs though. From what I have seen here in the forum, they are not quite common in general. This rather looks like it could sensibly be implemented in an addon workbench.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: PartDesign new development, MultiBody and more
+1 for draft angle for pad/pocket, and rib.
But also while talking about mold design, web feature would be awsome as well.
See example of the function.
https://www.autodesk.com/products/fusio ... b-command/
But also while talking about mold design, web feature would be awsome as well.
See example of the function.
https://www.autodesk.com/products/fusio ... b-command/
- OficineRobotica
- Posts: 428
- Joined: Thu Feb 21, 2019 8:17 am
- Contact:
Re: PartDesign new development, MultiBody and more
YES.....YES, I LOVE IT . I can see so many uses for that. Sorry for the telegraphic report but I'm a bit on the run. Nov and Dec are 2 really busy months at work.realthunder wrote: ↑Tue Nov 17, 2020 3:55 am You've already known most of the features, except the last 'Wrap' feature. Highly experimental, but I am sure you'll like it.
I'm hitting 2 little problems with "wrap". See attached file.
1st case
-with the body active I try to make a ruled surface between an edge of the cube and the sketch
-if I choose to wrap the feature in the body then the surface is displayed in the tree but invisible in the 3d view
-at the prompt, if I instead choose to not wrap it, the surface is displayed but I also get this error message in the console:
Code: Select all
<App> GeoFeatureGroupExtension.cpp(570): Unnamed#Ruled_Surface.Curve1(links to Unnamed#Box) is out of scope:Unnamed#Body vs. <global>
-have a body active and create a cube from "Part"
-choose no at "Do you want to override this command with an equivalant PartDesign command"
-The cube will be created outside of the body. Perhaps it should be created as a new body inside the active container?
-If instead I choose Yes at the "Do you want to override this command with an equivalant PartDesign command" the cube is wraped but I get a strange shell like result if i hoover over the newly created tree voice.
Perhaps I'm getting something wrong?
+1 from me too . In fact I stumbled across the above behavior while trying to come up with a workflow for creating ribs. It's not an easy task withbought a dedicated command.czinehuba wrote: ↑Fri Nov 20, 2020 7:00 pm +1 for draft angle for pad/pocket, and rib.
But also while talking about mold design, web feature would be awsome as well.
See example of the function.
https://www.autodesk.com/products/fusio ... b-command/
Cheers to all and thank you @RT.
- Attachments
-
- wrapFeature.FCStd
- (18.64 KiB) Downloaded 171 times