PartDesign new development, MultiBody and more

About the development of the Part Design module/workbench. PLEASE DO NOT POST HELP REQUESTS HERE!
realthunder
Posts: 1810
Joined: Tue Jan 03, 2017 10:55 am

PartDesign new development, MultiBody and more

Postby realthunder » Tue Nov 17, 2020 3:46 am

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.

Screenshot from 2020-10-14 08-10-20.png
Screenshot from 2020-10-14 08-10-20.png (65.65 KiB) Viewed 1505 times

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.
Screenshot from 2020-10-14 08-01-02 (another copy).png
Screenshot from 2020-10-14 08-01-02 (another copy).png (5.13 KiB) Viewed 1505 times

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.

Image


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.
Screenshot from 2020-11-17 09-54-14.png
Screenshot from 2020-11-17 09-54-14.png (16.72 KiB) Viewed 1505 times

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.
Screenshot from 2020-10-14 08-01-02 (copy).png
Screenshot from 2020-10-14 08-01-02 (copy).png (4.68 KiB) Viewed 1505 times

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.
Screenshot from 2020-10-14 08-17-10.png
Screenshot from 2020-10-14 08-17-10.png (25.51 KiB) Viewed 1505 times

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).

Image


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.

Image


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.

Image


Before the wrap feature is auto created, a dialog will appear asking for confirmation.

Image


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.

Image
Try Assembly3 (latest version 0.11) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
realthunder
Posts: 1810
Joined: Tue Jan 03, 2017 10:55 am

Re: PartDesign new development, MultiBody and more

Postby realthunder » Tue Nov 17, 2020 3:49 am

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.
Try Assembly3 (latest version 0.11) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
hwalseng
Posts: 10
Joined: Tue Jan 07, 2020 11:14 pm

Re: PartDesign new development, MultiBody and more

Postby hwalseng » 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.
realthunder
Posts: 1810
Joined: Tue Jan 03, 2017 10:55 am

Re: PartDesign new development, MultiBody and more

Postby realthunder » Tue Nov 17, 2020 5:39 am

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.
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.
Try Assembly3 (latest version 0.11) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
dulouie
Posts: 94
Joined: Tue Oct 03, 2017 4:14 pm

Re: PartDesign new development, MultiBody and more

Postby dulouie » Tue Nov 17, 2020 9:06 pm

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
User avatar
-alex-
Posts: 637
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: PartDesign new development, MultiBody and more

Postby -alex- » Thu Nov 19, 2020 10:51 pm

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 :lol: )

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.
Rana
Posts: 24
Joined: Tue Oct 01, 2019 6:37 pm

Re: PartDesign new development, MultiBody and more

Postby Rana » Fri Nov 20, 2020 5:44 pm

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
Attachments
2020-11-20 22_57_35-FreeCAD Link Branch Plastic Example.png
Plastic Part for rib example
2020-11-20 22_57_35-FreeCAD Link Branch Plastic Example.png (209.82 KiB) Viewed 701 times
2020-11-20 22_39_39-FreeCAD Link Branch.png
Part Extrusion with drafted faces adds extra face
2020-11-20 22_39_39-FreeCAD Link Branch.png (74.73 KiB) Viewed 701 times
chrisb
Posts: 29041
Joined: Tue Mar 17, 2015 9:14 am

Re: PartDesign new development, MultiBody and more

Postby chrisb » Fri Nov 20, 2020 6:46 pm

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.
A Sketcher Lecture with in-depth information is available in English, auf deutsch, en français, en español.
User avatar
czinehuba
Posts: 83
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: PartDesign new development, MultiBody and more

Postby czinehuba » 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/
User avatar
OficineRobotica
Posts: 340
Joined: Thu Feb 21, 2019 8:17 am

Re: PartDesign new development, MultiBody and more

Postby OficineRobotica » Sat Nov 21, 2020 6:05 am

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.
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.

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>
2nd case
-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?
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/
+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.

Cheers to all and thank you @RT.
Attachments
wrapFeature.FCStd
(18.64 KiB) Downloaded 11 times