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.