Feature editing

Introduction
This page explains the way the PartDesign Workbench is intended to be used starting with FreeCAD 0.17.

While the Part Workbench and other workbenches construct models by combining shapes together, the  PartDesign workbench uses. A feature is an operation that modifies the shape of a model.

Feature editing methodology
The first feature is commonly called the base feature. As more features are added to the model, each feature takes the shape of the previous one and adds or removes matter, creating linear dependencies from one feature to the next. In effect, this methodology mimics a common manufacturing process: a block is cut on one side, then on another side, holes are added, then rounds, etc.

All features are listed sequentially in the Model tree and can be edited at any time, with the last feature at the bottom representing the final part.

Features can be sorted into different categories:


 * Profile-based: these features start from a profile to define the shape of the matter to be added or removed. The profile can be a sketch, a planar face on existing geometry (a profile will be extracted from its edges), a ShapeBinder or a Draft object that has been included in the active Body.


 * Additive: adds matter to the existing model. Additive features show yellow icons.


 * Subtractive: removes matter from the existing model. Subtractive features show red and blue icons.


 * Primitive-based: based on geometric primitives (cube, cylinder, cone, torus…). They can be additive or subtractive.


 * Transformation features: they apply a transformation to existing features (mirrored, linear pattern, polar pattern, multitransform).


 * Dress-up: features that apply a treatment to edges or faces, such as fillets/rounds, chamfers and drafts.


 * Procedural: can be said of features that are not based on sketches, like the transformation and dress-up features.

Body
Working in PartDesign requires first creating a Body. The PartDesign Body is a container that groups a sequence of features forming a single contiguous solid.



What is a single contiguous solid? It is an object like a casting or something machined from a single block of metal. If the object involves nails, screws, glue or welding, it is not a single contiguous solid. As a practical example, a wooden chair would be made of multiple bodies, with one for each of its sub-components (legs, slats, seat, etc).

Multiple bodies can be created in a FreeCAD document; they can also be combined to form a single contiguous solid.

Only one body can be active in a document. The active body gets the new created features. A body can be activated or deactivated by double clicking on it. An activated body is highlighted in light blue. The highlighting color can be set in the preferences under Display/Colors/Active container since version 0.18.

When a model requires multiple bodies, like the previous wooden chair example, the general purpose Part container can be used to group them and move the whole as a unit.

Body visibility management
A body will present by default its most recent feature to the outside. This feature is defined by default as the tip. A good analogy is the expression the tip of the iceberg: only the tip is visible above the water, most of the iceberg's mass (the other features) is hidden. As a new feature is added to the body, visibility of the previous feature is turned off, and the new feature becomes the tip.

There can only be one feature visible at a time. It is possible to toggle the visibility of any feature in the body, by selecting it in the Model tree and pressing the spacebar, in effect going back in the history of the body.

Body Origin
The body has an Origin which consists of reference planes (XY, XZ, YZ) and axes (X, Y, Z) that can be used by sketches and features. Sketches can be attached to Origin planes, and they no longer need to be mapped to planar faces for features based on them to be added or subtracted from the model.

Moving and Reordering Objects
It is possible to temporarily redefine the tip to a feature in the middle of the Body tree to insert new objects (features, sketches or datum geometry). It is also possible to reorder features under a Body, or to move them to a different Body. Select the object and right-click to get a contextual menu that will offer both options. The operation may be prevented if the object has dependencies in the source Body, such as being attached to a face. To move a sketch to another Body, it should not contain links to external geometry.

Difference with other CAD systems
A fundamental difference between FreeCAD and other programs, like Catia, is that FreeCAD doesn't allow you to have many disconnected solids in the same PartDesign Body. That is, a new feature should always be built on top of the previous one. Or said in a different way, the newer feature should "touch" the previous feature, so that both features are fused together and become a single solid. You cannot have "floating" solids.



Datum geometry
Datum geometry consists of custom planes, lines, points or externally linked shapes. They can be created for use as reference by sketches and features. There is a multitude of attachment possibilities for datum objects.

In other CAD systems like Catia you can define a datum plane that is offset from the previous body and you can create a disconnected solid. So, placing a lot of datum planes, and building objects on them is okay and won't cause an error. Typically, you would eventually adjust the planes to their final positions, so that the individual objects are fused together.

In FreeCAD, datum planes make sense if you are placing sketches (and padding) in non-standard orientations, that is, in planes rotated around the three main axes. For sketches that are placed with a simple offset from the XY, XZ, or YZ planes, often there is no need to use datum planes, as the faces of the previous feature can be used as supports. After all, in FreeCAD, the a new feature must be touching the previous feature, so you may as well use the previous feature as support.

Even if not used for supporting sketches, datum objects are still helpful as visual indicators, to draw attention to important features or distances in the modelling process.



Cross-referencing
It is possible to cross-reference elements from a body in another body via datums. For example the datum shape binder allows to copy over faces from a body as reference in another one. This should make it easy to build a box with fitting cover in two different bodies. FreeCAD helps you to not accidentally link to other bodies and queries your intent.

Attachment
Object attachment is not a specific PartDesign tool, but rather a Part utility introduced in v0.17 that can be found in the Part menu. It is heavily used in the PartDesign workbench to attach sketches and reference geometry to the standard planes and axes of the Body. Very extensive ways of creating datum points, lines and planes are available. Optional attachment offset parameters make this tool very versatile.

More info can be found in the Attachment page.

Advice for creating stable models
The idea of parametric modeling implies that you can change the values of certain parameters and subsequent steps are changed according to the new values. However, when severe changes are made, the model can break due to the topological naming problem that is still unresolved in FreeCAD. Breakage can be minimized when you respect the following design principles:


 * Avoid as much as possible mapping sketches to faces of the model. Place your sketches on standard planes, or on custom datum planes. Sketches attached to planes are less at risk of being unexpectedly reattached to a different reference.
 * When creating datum geometry, do not base it on the part topology, base it on standard planes/axes and/or sketches.
 * Use a "master sketch". That is a preferably not too complicated sketch which contains basic geometric elements of your model. These elements can be referenced when modelling subsequent features. Such a master sketch will often be the first sketch in the Body but it doesn't have to be; in fact you don't even have to use it at all for anything else but being referenced.
 * If you inevitably have to reference an intermediate feature, e.g. the result of a thickness operation, use the first reference possible in the list of subsequent features where the referenced geometric element occurs. From FreeCAD 0.17 on you don't have to use the latest feature. If you take an early feature as reference, all changes to intermediate steps won't break your model. And again it is better to reference a sketch than edges and vertices of a solid.

Body building workflow
There are several workflows that are possible with the PartDesign Workbench. What should always be noticed is that all the features created inside a PartDesign Body will be fused together to obtain the final object.

Different sketches
Sketches need to be supported by a plane. This plane can be one of the main planes (XY, XZ, or YZ) defined by the Origin of the Body. A sketch is either extruded into a positive solid (additive), with a tool like PartDesign Pad, or into a negative solid (subtractive), with a tool like PartDesign Pocket. The first adds volume to the final shape of the body, while the latter cuts volume from the final shape. Any number of sketches and partial solids can be created in this way; the final shape (tip) is the result of fusing these operations together. Naturally, the Body can't consist of only subtractive operations, as the final shape should be a positive solid with a non-zero volume.



Sequential features
Sketches can be supported by the faces of previous solid operations. This may be necessary if you need to access a face that is only available after a certain feature has been created. However, this workflow isn't recommended as if the original feature is modified, the following features in the sequence may break. This is the topological naming problem.



Use of datum planes for support
Datum planes are useful to support the sketches. These auxiliary planes can be based on the Origin of the Body, or can be based on the features (edges, faces) of previously created solids. In addition, a PartDesign ShapeBinder can be used to import external geometry into the body to serve as reference; then sketches can be attached to this auxiliary body, either using datum planes or not. Using datum objects is often the best way to produce stable models, although it requires a bit more work from the user.