Builtin modules

This page presents more in-depth information over the built-in FreeCAD modules, and what are the functions and properties availible to you. This page is not a complete list of all the contents of these modules, and, because of the fast evolution of FreeCAD, the information presented here might be slightly outdated, but it should give you a good overview of the possibilities. For complete list of the modules content, use the dir(module) function in the interpreter.

The FreeCAD module
This is the principal (root) module of FreeCAD. It can also be called by "App" from the FreeCAD interpreter. It contains everything that is needed to manipulate documents and their contents (objects).

Example: import FreeCAD print FreeCAD.listDocuments mydoc = FreeCAD.activeDocument

Base sub-module
The Base module is contained inside the FreeCAD module and contains constructors for different types of objects heavily used in FreeCAD.


 * BoundBox([Xmin,Ymin,Zmin,Xmax,Ymax,Zmax]), or BoundBox(Tuple, Tuple), or BoundBox(Vector, Vector) - returns a bounding box. A bounding box is an orthographic cube which is a way to describe outer boundaries. You get a bounding box from a lot of 3D types. It is often used to check if a 3D entity lies in the range of another object. Checking for boundig interference first can save a lot of computing time!
 * Matrix - returns a 4x4 matrix, that can be used to apply transformations to objects
 * Vector(x,y,z) - returns a FreeCAD 3D vector, representing a 3D point or a direction.

Vectors
Vectors can be created by one of the following manners:

v=FreeCAD.Vector v=FreeCAD.Vector(1,0,0) v=FreeCAD.Base.Vector

Methods:


 * Vector.Length - returns the length of the vector
 * Vector.add(otherVector) - adds another vector to this one
 * Vector.cross(otherVector) - returns the crossproduct between two vectors
 * Vector.distanceToLine(Vector1,Vector2) - returns the distance between the vector and a line between Vector1 and Vector2
 * Vector.distanceToPlane(Vector1,Vector2) - returns the distance between the vector and a plane defined by a point and a normal
 * Vector.dot(otherVector) - returns the dot product between 2 vectors
 * Vector.getAngle(otherVector) - returns the angle in radians between 2 vectors
 * Vector.multiply(Float) - multiplies (scales) a vector by the given factor
 * Vector.normalize - normalizes a vector (sets its length to 1.0)
 * Vector.projectToLine(Vector1,Vector2) - projects the vector on a line between Vector1 and Vector2
 * Vector.projectToPlane(Vector1,Vector2) - projects the vector on a plane defined by a point and a normal
 * Vector.scale(Float,Float,Float) - Same as multiply but lets specify different values for x, y and z directions
 * Vector.sub(otherVector) - subtracts another vector from the first one
 * Vector.x - returns the x coordinate of a vector
 * Vector.y - returns the y coordinate of a vector
 * Vector.z - returns the z coordinate of a vector

Matrixes
Matrixes can be created by one of the following manners:

m=FreeCAD.Matrix m=FreeCAD.Base.Matrix

Methods:


 * Matrix.A - The matrix elements
 * Matrix.A11 - The matrix elements
 * Matrix.A12 - The matrix elements
 * Matrix.A13 - The matrix elements
 * Matrix.A14 - The matrix elements
 * Matrix.A21 - The matrix elements
 * Matrix.A22 - The matrix elements
 * Matrix.A23 - The matrix elements
 * Matrix.A24 - The matrix elements
 * Matrix.A31 - The matrix elements
 * Matrix.A32 - The matrix elements
 * Matrix.A33 - The matrix elements
 * Matrix.A34 - The matrix elements
 * Matrix.A41 - The matrix elements
 * Matrix.A42 - The matrix elements
 * Matrix.A43 - The matrix elements
 * Matrix.A44 - The matrix elements
 * Matrix.determinant(Float) - Compute the determinant of the matrix
 * Matrix.inverse - inverse -> Matrix - Compute the inverse matrix, if possible
 * Matrix.invert - Compute the inverse matrix, if possible
 * Matrix.move(Vector) - Move the matrix along the vector
 * Matrix.multiply(Matrix|Vector) - Multiply a matrix or vector with this matrix
 * Matrix.rotateX(Float) - rotate around X
 * Matrix.rotateY(Float) - rotate around Y
 * Matrix.rotateZ(Float) - rotate around Z
 * Matrix.scale(Vector) - Scales the matrix with the vector
 * Matrix.transform(Vector,Matrix) - return the dot product of the two vectors
 * Matrix.unity - make this matrix to unity

Console sub-module
This module is contained inside the FreeCAD module and contains methods to send text to FreeCAD's output console and status bar. The messages will have different color if they are message, warning or error.


 * GetStatus(...) - Get the status for either Log, Msg, Wrn or Error for an observer
 * PrintError(string) - Print an error message to the output
 * PrintLog(string) - Print a log message to the output
 * PrintMessage(string) - Print a message to the output
 * PrintWarning(string) - Print a warning to the output
 * SetStatus(...) - Set the stats for either Log, Msg, Wrn or Error for an observer

The FreeCADGui Module
This module is the counterpart of the FreeCAD module. It contains everything related to the User interface and the 3D views.


 * activateWorkbench(string) - Activate the workbench by name
 * activeDocument - Return the active document or None if no one exists
 * activeWorkbench - Return the active workbench object
 * addCommand(string, object) - Add a command
 * addIcon(string, string or list) - Add an icon as file name or in XPM format to the system
 * addIconPath(string) - Add a new path to the system where to find icon files
 * addPreferencePage(string,string) - Add a UI form to the preferences dialog. The first argument specifies the file nameand the second specifies the group name
 * addWorkbench(string, object) - Add a workbench under a defined name.
 * createDialog(string) - Open a UI file
 * getDocument(string) - Get a document by its name
 * getWorkbench(string) - Get the workbench by its name
 * insert(...) - Open a macro, Inventor or VRML file
 * '''listWorkbenches - Show a list of all workbenches
 * open(...) - Open a macro, Inventor or VRML file
 * removeWorkbench(string) - Remove the workbench with name
 * runCommand(string) - Run command with name
 * updateGui - Update the main window and all its windows

Selection sub-module
The selection submodule is part of the FreeCADGui module.


 * addSelection(object) - Add an object to the selection
 * clearSelection([string]) - Clear the selection to the given document name. If no document is given the complete selection is cleared.
 * getSelection([string]) - Return a list of selected objects for a given document name. If no document is given the complete selection is returned.
 * isSelected(object) - Check if a given object is selected
 * removeSelection(object) - Remove an object from the selection

Document Objects
Being parametric, document objects in FreeCAD can have a lot of additional properties, but these are the basic ones, present in every FreeCAD Document Object. Objects can be retrieved simply by their name:

myObj = FreeCAD.ActiveDocument.myObjectName


 * Object.Content - Return an XML representation of the properties of an object.
 * Object.Label - Gets/sets the objects label. The string can be unicode.
 * Object.Name - Returns the unique name of an object
 * Object.Placement - Gets/sets the Placement of an object. A placement defines an orientation (rotation) and a position (base) in 3D space. It is used when no scaling or other distortion is needed. The following constructors are supported:
 * Placement - empty constructor
 * Placement(Placement) - copy constructor
 * Placement(Matrix) - 4D matrix consisting of rotation and translation
 * Placement(Base, Rotation) - define position and rotation
 * Placement(Base, Rotation,Center) - define position and rotation with center
 * Placement(Base, Axis, Angle) - define position and rotation
 * Object.Pos - returns the position part of the placement
 * Object.PropertiesList - returns a list of the properties of an object
 * Object.State - returns the FreeCAD state of an object (ie. if it needs to be recomputed)
 * Object.Type - returns a string describing the type of an object
 * Object.ViewObject - returns the associated View Provider (FreeCADGUI object) of an object
 * Object.getAllDerivedFrom - Returns all descentences
 * Object.getDocumentationOfProperty - Return the documentation string of the property of this class.
 * Object.getGroupOfProperty - Return the name of the group which the property belongs to in this class. The properties sorted in differnt named groups for convenience.
 * Object.getPropertyByName - Return the value of a named property.
 * Object.getTypeOfProperty - Return the type of a named property. This can be (Hidden,ReadOnly,Output) or any combination.
 * Object.isDerivedFrom - Returns true if given type is a father
 * Object.purgeTouched - Mark the object as unchanged
 * Object.touch - Mark the object as changed (touched)

View Objects
When the GUI is up, each object in the FreeCAD document has an associated ViewObject, that resides in the FreeCADGui document counterpart. A view object can be retrieved by two ways:

myViewObj = FreeCAD.ActiveDocument.myObjectName.ViewObject myViewObj = FreeCADGui.ActiveDocument.myObjectName


 * ViewObject.Annotation - the annotation node of a ViewObject
 * ViewObject.BoundingBox - the bounding box
 * ViewObject.Content - returns an XML representation of a ViewObject's properties
 * ViewObject.DisplayMode - returns the current display mode
 * ViewObject.IV - returns an Inventor representation of the ViewObject
 * ViewObject.Object - returns the associated FreeCAD Document Object of this ViewObject
 * ViewObject.PropertiesList - returns a list of properties of this ViewObject
 * ViewObject.RootNode - returns the Inventor node of this ViewObject
 * ViewObject.Selectable - returns True if the object is selectable
 * ViewObject.Type - returns the type of this ViewObject
 * ViewObject.Visibility - returns True if the viewObject is visible
 * ViewObject.getAllDerivedFrom - Returns all descentences
 * ViewObject.getDocumentationOfProperty - Return the documentation string of the property of this class.
 * ViewObject.getGroupOfProperty - Return the name of the group which the property belongs to in this class. The properties sorted in differnt named groups for convenience.
 * ViewObject.getPropertyByName - Return the value of a named property.
 * ViewObject.getTypeOfProperty - Return the type of a named property. This can be (Hidden,ReadOnly,Output) or any combination.
 * ViewObject.hide - Hides the object
 * ViewObject.isDerivedFrom - Returns true if given type is a father
 * ViewObject.isVisible - Check if the object is visible
 * ViewObject.listDisplayModes - Show a list of all display modes
 * ViewObject.setTransformation - Set a transformation on the Inventor node
 * ViewObject.show - Show the object
 * ViewObject.toString - Return a string representation of the Inventor node
 * ViewObject.update - Update the view representation of the object