Std ExportGraphviz
Menu location |
---|
Tools → Dependency graph... |
Workbenches |
All |
Default shortcut |
None |
Introduced in version |
- |
See also |
None |
Description
The Dependency graph displays the dependencies between objects in the active document as a graph. As opposed to the Model tree, 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, in FreeCAD 0.16, a model exclusively made in the PartDesign workbench should 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.
Installation
To use the Dependency graph, a third-party software named Graphviz needs to be installed first. If you do not have it pre-installed or it is installed in an unconventional location, FreeCAD will display the following dialogue:
Windows
Download the graphviz-2.xx.msi installer from the Graphviz Download page and launch it to install it.
Mac/OSX
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 FreeCAD → 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
/usr/local/bin
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
type dot
It will output something like
dot is /usr/local/bin/dot
And therefore you can tell FreeCAD to look in that directory.
Linux
On most Linux distributions (Debian/Ubuntu, Fedora, OpenSUSE), you just need to install the graphviz package from the repositories. However, similarly to MacOSX, in cases where the Graphviz binaries are installed in a non-standard location, try to find the program with the command:
type dot
It may output something like
dot is /usr/local/bin/dot
And therefore you can point FreeCAD to look in that directory.
Configuration
You shouldn't need any configuration of FreeCAD preferences. If FreeCAD cannot find the utility "dot" (from the Graphviz package) then a dialog comes up and asks the user for its path: set the path to the folder that contains the "dot" executable, do not select the executable itself. FreeCAD then tries to start the utility again and in case it succeeds the value is written automatically to the user parameters.
How to use
- Go to the Tools → Dependency graph... menu
- A new tab titled Dependency graph opens over the main area of the FreeCAD window.
- Use the mouse scroll wheel to zoom in / zoom out.
- Use the horizontal slider at the bottom of the screen to pan the view sideways.
Save/Export
You can save/export the displayed dependency graph as an image file. While the Dependency graph tab is in the foreground:
- Just choose File → Save As to save the graph as a picture (PNG/BMP/GIF/JPG), a vector graphic (SVG) or as a PDF document.
- File → Export or Tools → Save picture will NOT work.
General principles
- The graph shows objects in reverse chronological order, from the bottom to the top.
- 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 geometry 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.
- Part container and PartDesign Body enclose their content inside a frame with a randomly colored background. Their Origin also enclose their content (standard planes and axes) in a frame.
- Group is displayed as a single element linked to its content.
Limitations
- The dependency graph cannot help with issues caused by topological naming. 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.
- A bug in v0.17/v0.18 causes a Body to disappear from the graph and its content to disseminate if a Part or Draft object is created from the Body. This otherwise does not affect the model.
- Standard menu: File, Edit, View, Tools, Macro, Windows, Help
- Structure: Std Part, Std Group, Std LinkMake, Std LinkActions
- File: New, Open, Close, Close all, Save, Save as, Save a copy, Save all, Revert, Import, Export, Merge project, Project information, Print, Print preview, Export PDF, Recent files, Exit
- Edit: Undo, Redo, Cut, Copy, Paste, Duplicate selection, Refresh, Box selection, Box element selection, Select all, Delete, Placement, Alignment, Toggle Edit mode, Preferences
- View: Create new view, Orthographic view, Perspective view, Fullscreen, Standard views (Fit all, Fit selection, Isometric, Dimetric, Trimetric, Front, Top, Right, Rear, Bottom, Left, Rotate left, Rotate right), Freeze display (Save views, Load views, Freeze view, Clear views), Draw style (As is, Flat lines, Shaded, Wireframe, Points, Hidden line, No shading), Bounding box, Stereo (red/cyan, quad buffer, interleaved rows, interleaved columns, Stereo off, Issue camera position), Zoom (Zoom In, Zoom Out, Box zoom), Document window (Docked, Undocked, Full screen), Toggle axis cross, Clipping plane, Texture mapping, Visibility (Toggle visibility, Show selection, Hide selection, Select visible objects, Toggle all objects, Show all objects, Hide all objects, Toggle selectability, Toggle measurement, Clear measurement), Toggle navigation/edit mode, Appearance, Random color, Workbench, Toolbars (File, Workbench, Macro, View, Structure, Navigation), Panels (Report view, Tree view, Property view, Selection view, Combo view, Python console, DAG view), Tree view actions (Sync view, Sync selection, Sync placement, Pre-selection, Record selection, Single document, Multi document, Collapse/expand, Initiate dragging, Go to selection), Status bar
- Tools: Edit parameters, Save picture, Scene inspector, Dependency graph, Project utility, Measure distance, View turntable, Units calculator, Customize, Addon manager
- Macro: Macro recording, Stop macro recording, Macros, Execute macro, Debug macro, Stop debugging, Step over, Step into, Toggle breakpoint
- Windows: Next, Previous, Tile, Cascade, Arrange icons, Windows
- Help: Help, FreeCAD Website, Users documentation, Python scripting documentation, Automatic Python modules documentation, FreeCAD forum, FreeCAD FAQ, About FreeCAD, What's This

- Installation: Linux/Unix, Windows, Mac; Getting started
- Basics: About FreeCAD, Workbenches, Preferences, Document structure, Interface Customization, Properties, Mouse Model; Tutorials
- Workbenches: Std Base; Arch, Draft, FEM, Image, Inspection, Mesh, OpenSCAD, Part, PartDesign, Path, Plot, Points, Raytracing, Reverse Engineering, Robot, Ship, Sketcher, Spreadsheet, Start, Surface workbench, TechDraw, Test Framework, Web
- Scripting: Introduction to Python, FreeCAD scripting tutorial, FreeCAD Scripting Basics, How to install macros, Gui Command, Units Modules: Builtin modules, Workbench creation, Installing more workbenches Meshes: Mesh Scripting, Mesh Module Parts: The Part Module, Topological data scripting, PythonOCC, Mesh to Part Coin scenegraph: The Coin/Inventor scenegraph, Pivy Qt interface: PySide, Using the FreeCAD GUI, Dialog creation Parametric objects: Scripted objects Other: Code snippets, Line drawing function, Embedding FreeCAD, FreeCAD vector math library, Power users hub, Python, Macros, FreeCAD Scripting Basics, Topological data scripting