|Tools → Dependency graph...|
|Introduced in version|
The Std DependencyGraph command displays the dependencies between objects in the active document in a 'dependency graph'. As opposed to the Tree view, objects are listed in reverse chronological order, with the first created object at the bottom.
It can be useful in analyzing a FreeCAD document and locating forks in a tree. The dependency graph layout will depend on which workbench was used to create the objects in the document. For example a model made exclusively in the PartDesign workbench can display a linear dependency graph with a single vertical branch. A model made with Part operations will have many branches, but for a single part they will join up at the top after Boolean operations. If they don't, it means that they are separate objects.
The dependency graph is purely a visualization tool, therefore it cannot be edited. It automatically updates if changes are made to the model.
Example of a dependency graph with a PartDesign body on the left and an object created with Part operations on the right
To use the command a third-party software named Graphviz needs to be installed. If you do not have it pre-installed or it is installed in an unconventional location, FreeCAD will display the following dialog:
Download the graphviz-2.xx.msi installer from the Graphviz Download page and launch it to install it.
You can install graphviz using Homebrew:
brew install graphviz
This installs the graphviz binaries under /usr/local/bin. Unfortunately we can't navigate directly there from the file dialog that comes up from Tools → Dependency graph.... When you get the file selection dialog use the keys Cmd+Shift+G to get an input field for the path. Enter
and confirm the input field and the file selection dialog.
In case the Graphviz binaries are installed in a non-standard location try to find the program with the command
It will output something like
dot is /usr/local/bin/dot
And therefore you can tell FreeCAD to look in that directory.
On most Linux distributions (Debian/Ubuntu, Fedora, OpenSUSE), you just need to install the graphviz package from the repositories. However, similar to the Mac/OSX, in cases where the Graphviz binaries are installed in a non-standard location, try to find the program with the command:
It may output something like
dot is /usr/local/bin/dot
And therefore you can point FreeCAD to look in that directory.
- Select the Tools → Dependency graph... option from the menu.
- A new tab titled Dependency graph opens in the Main view area.
- Use the mouse scroll wheel to zoom in or out.
- Use the sliders at the bottom and at the right of the screen to pan the view.
You can save a dependency graph:
- Make sure the Dependency graph tab is in the foreground.
- Select the File → Save or File → Save As option from the menu.
- Enter a filename and select the file type (*.png, *.bmp, *.gif, *.jpg, *.svg or *.pdf).
- Press the button.
- The graph shows objects in reverse chronological order.
- The direction of arrows showing dependencies should always point down, from the child object to the parent object. An arrow pointing up indicates a cyclic dependency, an issue that needs to be resolved.
- A sketch that contains links to external geometry will have a number with an 'x' suffix besides the arrow linking it to its parent, showing the number of external geometries linked in the sketch.
- Objects can have dependencies to multiple parents. For example, for a model built in PartDesign, a Pocket may be linked to its Sketch and to the Pad feature that came before it.
- Disallowed dependencies (for example, between a Draft/Part operation and an element inside a PartDesign Body) will show with a red arrow. This type of link usually shows a 'Links go out of allowed scope' error in the Report view.
- A Part container and PartDesign Body enclose their content inside a frame with a randomly colored background. Their Origin also encloses its content (standard planes and axes) in a frame.
- A Groups is displayed as a single element linked to its content.
- The dependency graph cannot help with the topological naming problem. If a sketch switches faces of a feature after an edit, it is still linked to the feature. Even if some features are broken, the dependency graph will remain unchanged.