Macros recipes

This page lists macros that can add functionality to a FreeCAD installation.

If you have written a macro and want to include it in one of the categories on this page, then go to Macro documentation to learn more about properly documenting a macro.

Part_CheckGeometry.svg 3D View operations

 * : This macro aligns the current view to a selected face.


 * : This macro aligns the current view to a selected face.


 * : Copy contents of 3DView resized 640, 480 px to clipboard.


 * : This macro can rotate the screen in a defined angle and the defined axis and creates a plan to face the screen to create a form in the specified plan positions the selected face facing the screen, to detect the position of the camera.


 * : This small macro turns the arrow of the mouse in a precision cross.


 * : This macro rotates the current view by 90° to the left. Only works if you are in [[Image:View-top.svg|Std_ViewTop|16px|link=Std_ViewTop]] XY (top) view.


 * : This macro is used in the Python console and rotates the current view in the angle and plane given.


 * : This macro rotates the current view in View Axonometric.


 * : This macro allows to save the 3D view in the desired format. The 3D view or the full 3D window of FreeCAD takes the desired dimensions.


 * : Easily post screenshots to the FreeCAD forum.


 * : Provides a GUI to permit rotation of view by precise amounts in all three directions.


 * : 1:1 Zoom so objects appear their actual size on the screen.

Draft_FlipDimension.svg Animation

 * : Animate angle constrain in sketcher.


 * : Animate your model by animating its properties with this feature Python object.


 * : Simulation of movements of a 3D printer.


 * : Assembly animate.


 * : Simple example animation Draft wires by use the Expressions for associate many wires and simulate or verify the movement. Here the circle rotation create the movement for all objects connected (This macro run with FreeCAD version 0.16).


 * : Rotation rod and piston.


 * : Open and close hinge.


 * : Simulation of one spring.

Applications-python.svg Code and scripting

 * : This macro provides a utility to assemble a project from sub-project files using the Merge Project facility.


 * : Creates a copy of each selected object and sets its properties to an expression linking to the original object, making it an explicit and editable clone.


 * : Extends the capabilities of FreeCAD's integrated Python editor.


 * : This macro facilitates the user selecting global variables and monitoring their values.


 * : Shows how to give information to the user through the GUI.


 * : Prints the SceneGraph.


 * : This macro provides a cut/copy/paste workspace for Python code, it is segmented so different sections can be selected and it is persistent between FreeCAD sessions.


 * : This macro is only used by programmers Test characters ASCII over 127.


 * : Example of using Qt commands, their connections, extraction and data assignment.


 * [[Image:Text-x-python.png|24px]] scanObjects: Inspection tool for FreeCAD macro development and project debug.


 * : A basic example of how the Topological Naming Problem can be solved. The macro is intended for programmers only.

Arch_MeshToShape.svg Conversion

 * : Imports a 3DXML-ascii file into FreeCAD, limited functionality.


 * : Draft command set in a small macro for the 2D sketch example: work with the DXF files.


 * : This macro create face from a DXF file, the "Layer" are recognized separate and trained in groups.


 * : Make a compound out of a part with a copy of all its shapes.


 * : This macro converts selected elements of imported DXF file to face and sketch.


 * : Macro utility for create unique wire with many wires, the type wire created is selected to MakeWire, Bspline, BsplineCurve, BsplineCurve + Arc, Polygon, Bezier curve.


 * : Extracts boundary wires from selected meshes.


 * : Converts the selected Face to a single Sketch without constraints.


 * : Import Black and White BMP images into FreeCAD as sketch, wire, or solid or Grayscale BMP for lithophanes.


 * : This macro create boolean operation with the objects selected just select the wires give the thickness and click "Create".


 * : Imports an iges file with entity 128, for example an iges-file from FreeShip, into FreeCAD.


 * : Converts selected meshes to parts.


 * : MultiCopy allows the duplication (copy and paste) of multiple FreeCAD objects that can be labelled sequentially and in a custom manner.


 * : Converts selected parts to VRML meshes for small size and faster loading (VRML models Kicad and Blender compatible).

Workbench_Draft.svg Draft Workbench and 2D

 * : This macro aligns the camera to the current Draft Working Plane.


 * : This macro moves the current Draft Working Plane to the center of the current view.


 * : Creates a circle from 3 selected points 2D orthogonal.


 * : Creates a circle from 3 selected points in the space 3D.


 * : Makes tangents to Draft circles.


 * : Converts the selected Edges to a circular Arc if possible. Useful for restoring discretized arcs.


 * : Makes an ellipse by selecting three points (in this order): center, major radius and minor radius.


 * : This macro convert the object line, wire in line Dash, DashDot, DashDotDot, ZigZag and Hand with the dimensions given.


 * : Creates a arc from 3 selected points.


 * : Creates a circle from 3 selected points, the points can be objects.


 * : Creates a parametric rectellipse.

Workbench_FEM.svg Fem Workbench

 * : This macro exports multiple FEM result objects from a transient analysis to the VTK format and generates a PVU file which can be used to load the results directly into ParaView for post-processing.


 * : Create FEM Meshes by GMSH Mesh Generator.

Std_Windows.svg Gui

 * : This macro resets the position of the toolbars.


 * : Add the macros found in the macros folder to the Macros menu of FreeCAD.


 * : Temporarily split the property editor from the combo view to a separated dock widget.


 * : This macro toggles the visibility of various supporting panels in FreeCAD, allowing the main window to be viewed with all available screen space.

Part_Measure_Linear.svg Info and measurements

 * : This macro red trace (editable) around the BoundingBox with 6 rectangles.


 * : This macro red trace (editable) the center face (mass) with 1 point and print the coordinates.


 * : Gives the total mass and the center of mass of multiple objects selected with the density chosen.


 * : Displays an interactively slidable cross-section.


 * : Gives the Delta values and the distance between 2 points.


 * : This macro generates a listing of all objects in the current document - the list can be in a window or on the Report view.


 * : This macro display all elements below cursor same "Macro Mouse over cb" with GUI (elements covered by other elements will also be displayed).


 * : Gives a series of information about the selected shape and can display a conversion of length, inclination (degrees, radian, grade) shape, surface, volume and the weight of the form in the density selected in various international and Anglo-Saxon units.


 * : Same as above, but for Linux (obsolete).


 * : Gives a series of information about the selected shape as FCInfo in a mini ToolBar.


 * : Gives a series of information about the selected shape and displayed in screen 3D.


 * : Provides informations coordinates, length and angles in real time on the mouse in a bubble annotation displayed in the 3D screen.


 * : Macro for list all objects in the project in one list without hierarchy, options sort by name, label, visibility, group, by length option search by name, label... without case sensitive or with case sensitive and select all objects displayed in the macro window.


 * : Highlight common parts.


 * : Compute the difference between two shapes.


 * : Compute the radius of a circle by 3 points or a circular edge.


 * : This macro display all elements below cursor (elements covered by other elements will also be displayed).


 * : Get the normal vector of a preselected face.


 * : User-friendly "Info" module created by a FreeCAD user.


 * [[Image:Text-x-python.png|24px]] Macro showSpaceModel: Allows to calculate occupied space in 3D by the full model.


 * [[Image:Text-x-python.png|24px]] Macro showSpaceSelected: Allows to calculate occupied space in 3D by all selected elements.


 * : Display in a concise way basic physical properties of an object (volume, bound box dimensions, ...).

Draft_VisGroup.svg Libraries

 * : The aim of BOLTS is to build a free and open-source standard parts library for CAD applications.


 * : Starts the Parts library browser.


 * : This macro creates a screw with or without thread, according to ISO standards (screw_maker1_6.py.zip with Pyside support). (Screw Maker 2.0 - new version!)

Bound-expression.svg Mathematical functions

 * : Draw a function described by parametric equations x(t), y(t) and z(t).


 * : Draws a function described by an equation z=F(x).


 * : Based on the above macro, but for parametric and optionally polar.


 * : Feature Python update of Macro 3D Parametric Curve.

Part_Primitives.svg Object creation

 * : AeroFoil creates airfoil curves and faces using pre-defined models, algebraic functions, and DAT or CSV Files.


 * : Imports and scales a .dat airfoil to desired chord length.


 * : A GUI dialog that creates an Apothem, (inradius) Based Prism from user input.


 * : Makes a B-spline surface through a grid of points.


 * : Create a circle or arc giving radius, diameter, circumference, area, startangle, endangle, arc, anglecenter, cord, arrow, center (point) on choice (same above without GUI).


 * : Create a circle or arc giving radius, diameter, circumference, area, startangle, endangle, arc, anglecenter, cord, arrow, center (point) on choice (same below but with GUI) plus create sector and face.


 * : Cut a circle or arc and create x arcs, giving the number of cut.


 * : Cut a line and create x points, giving the number of points, create line or not, create points or not, create bicolor or not on choice.


 * : Creates grooved cylinder for cam.


 * : This macro create a text around a cylinder.


 * : Creates parametric honeycomb grid.


 * : This macro creates one spring truncate, the troncature is adjustable on the all coil to choice.


 * : This macro creates one spring (helix) on the surface of the object (solide).


 * : This macro creates a geodesic dome shell.


 * : Guitar Fretboard Maker.


 * : Guitar Nut Maker.


 * : Creates a half turn (left/right) stair from a Data-file.


 * : This macro generates both three dimensional half-hull and full-hull models from a series of 2D line drawings.


 * : Creates an Hilbert curve wire in 2 or 3 dimensions with many iterations.


 * : Creates a feature Python Honeycomb object compatible in and out of PartDesign.


 * : Airfoil coordinates import, then scale the airfoil, rotate, translate in the plane, translate along the span, select the plane and the main axis, and turn the geometry into a sketch.


 * : Finds the intersection between 2 or 3 selected edges/faces, works with Datum Planes and Datum Lines also. Creates a parametric feature Python object containing the shape of the intersection.


 * : Create a line giving coordinate XYZ length and angle to plane X Y.


 * : Create a loft with a list of wire (specially created for Macro Texture).


 * : Creates a rectangular cuboid from 4 points.


 * : Creates an ImagePlane and aligns it to an existing Draft Rectangle.


 * : This macro creates parametric polyhedrons (dodecahedron, icosahedron, tetrahedron, ...). Customizable via radius or side.


 * : This macro creates a parametric pyramid. All parameters are customizable just like with Part Cone.


 * : This macro reproduces all element selected subobject wire or face.


 * : Creates an Arch Site from a series of contour lines.


 * : Creates a solid by sweeping a 2D profile along a trajectory previously selected in the 3D view. The 2D elements can be created through the regular tools in FreeCAD's GUI.


 * : Create stair helix, create your stair nosing select and run the macro.


 * : This macro creates a triangle by giving the head angle and the height of the triangle (the head of the triangle is positioned to the xyz coordinates 0.0).


 * : This macro creates a Wire with the coordinates extracted from a file. The coordinates X Y Z are separated by a space.

Std_TransformManip.svg Object transformation

 * : This macro align the selected object to the current View and set the coordinates Placement of the camera.


 * : Copies the selected object several times, on an array grid.


 * : Bevels selected vertices, creates parametric feature Python object, compatible with all solids (except with round edges) including features in Part Design bodies.


 * : This macro covers the following constraints: Concentric constraint among non cylindrical parts; and Constraint on center Faces and/or Edges. It works also with the new Body and App::Part containers, as well as with STEP hierarchy.


 * : Creates a clone of the object and the converted in the chosen position and size (inch, mm, m, µm...). The base object is recognized in mm (FreeCAd base).


 * : This macro easily creates a connection between two objects, an object and a point or between two points or the selected line, wire, edge (the center of the objects are the starting and ending points of the sweep) can be selected form a configurable ellipse polygon circle.


 * : Flattens draft wires that are not planar to their median Z coordinate.


 * : Flattens draft wires that are not planar to a plane defined by 3 points.


 * : Sometimes arcs are transformed into BSplines, for example when scale operations have been applied to them. This macro recreates valid arcs from them. Useful before exporting to dxf.


 * : Macro for easy scaling drawings, graphics, diagram, blueprint and similar 2D images in Image workbench.


 * : Allows to find and joint all non connected edge to the closest non connected one using a line.


 * [[Image:Text-x-python.png|24px]] Macro magicAngle: Small GUI for the Draft.rotate function. Allows to rotate panels and even other more complicated objects, like construction profiles.


 * : Apply linear space transformations to distort shapes. E.g., non-uniform scaling, shearing, mirroring, axes swapping.


 * : This macro translates the Placement of an object so that a selected location becomes its new origin.


 * : This macro improves boolean cut hierarchy by automatic labeling and using copies for cut.


 * : Boolean operation. Similar to Part Common, but with custom overlap count threshold (parametric).


 * : Macro that provides parametric defeaturing inside and outside the PartDesign Workbench.


 * : This macro positions an object perpendicularl to a selected wire.


 * : Reset Part containers to global origin while maintaining objects absolute position.


 * : Removes all parametric associativity from an object, leaving it as a "dumb" shape.


 * : Macro to rotate an object around the center of its boundbox, its center of mass, or the last clicked point.


 * : Alternative implementation of Part Section tool, more suitable for making sweep paths (parametric).


 * : Re-align object(s) with FreeCAD coordinate system according reference face/edge.


 * : Forces the creation of a Wire from lines and arcs that don't necessarily touch each other. Use this if normal wire operation fails.


 * : Filter wires from a sketch to only use certain ones, also 2D offsets, scales, rearranges wire order.

Part_FaceColors.svg Object visibility, view properties and textures

 * [[Image:Text-x-python.png|24px]] colorManager: Allows to set face colors for all objects from a spreadsheet. Also you can browse colors for a manually selected face or object and see the effect in the 3D model in real-time.


 * : Easily set colors of faces, edges, and vertices, including individual transparency levels.


 * : Easily managed textures with a parametric feature python object that persists between FreeCAD and Document sessions.


 * : This macro check hidden all object in the document (Visibility=False).


 * : Create a project from a bmp image to create a texture easily.


 * : This macro allows you to temporarily put a texture image on the selected objects.


 * : This macro toggles the Drawstyle of the selected object.


 * : This macro toggles the Drawstyle of the selected object (same as Macro Toggle Drawstyle above but optimized for all languages).


 * : Set of three macro, macro 1: hidden the objects not selected, macro 2: displayed alls objects, macro 3: hidden alls objects.


 * : Set of two macro, macro 1:Macro_Toggle_Visibility2_1-2 hidden the objects not selected, macro 2:Macro_Toggle_Visibility2_2-2 displayed alls objects, macro with the original visibility.


 * : Set of two macro, macro 1:Macro_Toggle_Visibility2_1-2 hidden the objects not selected, macro 2:Macro_Toggle_Visibility2_2-2 displayed alls objects, macro with the original visibility.


 * : This macro check visible all object in the document (Visibility=True).


 * : Manage visibility of document objects by type or individually.


 * [[Image:Text-x-python.png|24px]] setTextures: Allows to permanently store the URL of textures in a FreeCAD project and load stored textures.

Workbench_PartDesign.svg PartDesign Workbench

 * : Encapsulates non-PartDesign solids for use in PartDesign Bodies, and more.

View.svg Printer 3D

 * : Exports current design to slicer software or CAM software.


 * : This code, when run, will export the visible bodies at the top level (bodies deeper in the tree will be ignored) of the currently open design to individual STL files, and open them it in the slicing software that you use. This macro will look for Cura as the default but you can change it to any other slicer by changing the SLICERAPP variable in the source code.


 * : Macro that creates an stl file with perfect rounding, i.e. without visible facets, from selected objects. It also allows to launch programs of your choice. For example to automate the FreeCAD -> Slicer -> printing workflow.

Preferences-raytracing.svg Raytracing

 * : Export from FreeCAD to Kerkythea.


 * : Makes a grayscale heightmap in Z.

Spreadsheet.svg Spreadsheet Workbench

 * : Helps managing aliases inside FreeCAD Spreadsheet workbench. It is able to create, delete, move aliases and create a 'part family' group of files.


 * : Quickly create aliases in FreeCAD Spreadsheet workbench. It uses the labels from one column to create aliases for adjacent cells in the next column to the right, e.g. labels from Column A become aliases for the cells in Column B.


 * : This macro save the data in a csv file with the formula or in a xml file.


 * : Quickly add a length constraint to a line or between 2 points using a spreadsheet cell alias or address.


 * : This macro helps managing cells inside FreeCAD Spreadsheet workbench.


 * : Exports a spreadsheet as styled html. Intended as support in transfering data to office suits.


 * [[Image:Text-x-python.png|24px]] sheet2export: Allows to export FreeCAD spreadsheet to file formats (.md, .html, .csv, .json).

Arch_Survey.svg Utility

 * : This macro help you to create an Arch Axis System along a line with a set of parameters.


 * : This macro testing if one selection are duplicate, select the object IN THE 3D VIEW the "ForbiddenCursor" stay if the or one selection is duplicate, the macro stay resident.


 * : This macro makes Cutouts for Enclosures in a very handy way.


 * : This macro expand selected items in the tree view. If not selection all item are expand/collapse.


 * : Finds user config files system.cfg and user.cfg, copies folder location to system clipboard, instructs user on renaming these files in order to reset FreeCAD settings, and opens folder with default file browser.


 * : Forces manual recompute of model.


 * : All object not selected are deleted!


 * : Shows a list of US Imperial Arch scales list with the corresponding factor to apply to TechDraw pages or views.


 * : Merges materials that have the same base name (with different numeral endings like 001, 002,...) into one.


 * : Sends a selected object to PCBWay for manufacturing through CNC milling, laser cutting or 3D printing.


 * : Ping users on the forum with ease.


 * : Measures time it takes to recompute each object in a project.


 * : Replaces a part (simple copy) in an "Assembly" with another Part (simple copy).


 * : This macro select a choice Face, Edge, Vertex hovering by the mouse.


 * : All visible objects in the tree will be selected.


 * : Shake a sketch in order to discover its unconstrained parts.


 * : Unmap a sketch from its current support and makes its placement absolute, eventually creating a locating datum plane.


 * : Prints model tree as "ASCII art" with custom pattern & style, and export to clipboard, file or embedded document.


 * : Rebinds standard view commands from digit keys to Ctrl+digit, so that they don't spin the view by accident when entering numbers.


 * : Tool utility to create points, axes, planes and many other useful features to facilitate the creation of your project.

Bulb.svg Wizards

 * : Additional Workbench to create different types of gears, involute gear, involute rack, cycloide gear, bevel gear.


 * : This little macro is dedicate to users of Windows 10. The explorer fonts for use the ShapeString is empty and this little macro can help you see easily the font to use.


 * : Macro for automatic drawing generation with 3 normal projections and one isometric.


 * : Macro for automatic 2D views generation with 6 normal projections and one isometric.


 * : Allows the user to create a Geneva wheel mechanism from scratch. Must edit values within the Macro to alter the size of the object.


 * : A GUI front end that allows the user to create a Geneva wheel mechanism from scratch.


 * : Display a Megaminx and interactively do slice rotations.


 * : This little macro create one Property additional (memo or other text) for you object (only Draft).


 * : Display a Rubik Cube and interactively do slice rotations.


 * : Creates an unfolded part from a sheet-metal-part.


 * : Allows to unfold the surfaces of a box of any shape and to draw them on a page.


 * : Allows to unroll ruled surfaces and to draw them on a page.

Arch_Equipment.svg Woodworking

 * [[Image:Text-x-python.png|24px]] getDimensions: FreeCAD macro to get chipboards dimensions to cut (BOM, cutlist).


 * : Creates side and top/bottom walls for a cabinet with drilled holes for connection parts of manufacturer Hettich.


 * : Creates a variety of joints, such as mortise/tenon, box joints, dovetail joints, and snap joints.


 * [[Image:Text-x-python.png|24px]] makeTransparent: Switches all parts from non-transparent to transparent, and back, allowing you to preview pilot holes, countersinks and other joints.

Std_FreeCADWebsite.svg Other interesting macros created by FreeCAD users

 * [[Image:Text-x-python.png|24px]] By hamish2014: FreeCAD_assembly2, FreeCAD_drawing_dimensioning, and more.


 * [[Image:2364.png|24px]] By microelly2 : FreeCAD_macro, geodata, Animation, freecad-nurbs, PieMenu, and more.


 * [[Image:Text-x-python.png|24px]] By oddtopus: Flamingo (workbench for metal structures).


 * [[Image:Text-x-python.png|24px]] By realthunder: Assembly3 Workbench, and more.


 * [[Image:681.jpg|24px]] By rockn: FreeCAD-Timber, FreeCAD-addons, FreeCAD-library, FreeCAD-StructuresBois, and more.


 * [[Image:Text-x-python.png|24px]] By Siardeni: Workbench for create metal profiles, square tubing, z profile, palette, rotation, drawing, and more.


 * [[Image:Text-x-python.png|24px]] By triplus: IconThemes, ShortCuts, NavigationIndicator, TabBar, Launcher, PersistentToolbars, PieMenu, and more.

Usage
See how to install macros for a full description, and customize toolbars to add the macros to a toolbar for easy access.

Installing many macros is equivalent to installing a new workbench; see how to install additional workbenches for this information.

Automatic installation
Use the Addon Manager in to install a macro that has been included in the FreeCAD-macros repository.

Manual installation
If the Addon Manager is not used, the macro can be installed manually.
 * Copy the Python code from the corresponding macro page.
 * Open the macros menu, press , and give it a name.
 * Paste the Python code that you copied.
 * Press the button, and restart FreeCAD.
 * To use it, open again the macros menu, select your new macro, and press.

Add a macro to a custom toolbar

 * Go to.
 * In the tab, add a new macro name, and optionally define an icon and a keyboard shortcut.
 * In the tab, create a new toolbar, and add your macro, taking it from the  category.