A Part TopoShape, or formally a
Part::TopoShape, is a class that defines a parametric topological shape in the software. Objects in the document that show something in the 3D view normally have a TopoShape.
The topological shapes, as well as their methods, are defined by the OpenCASCADE Technology kernel (OCCT). FreeCAD uses these shapes, and builds App DocumentObjects around them.
Simplified diagram of the relationships between the core objects in the program. The
Part::TopoShape class is embedded in the
Part::Feature object and from there it is propagated to all objects that are derived from it.
The Part TopoShape is an object that is assigned to some App DocumentObjects.
In particular, the basic object that handles these types of attributes is the Part Feature (
Part::Feature class). All objects derived from this class will have access to a Part TopoShape.
Some of the most important objects with Part TopoShape are the following:
- Any primitive solid created with the Part Workbench.
- Any PartDesign Body and PartDesign Feature created with the PartDesign Workbench.
- Any object derived from Part Part2DObject, like most objects created with the Draft Workbench.
- Any sketch, that is, Sketcher SketchObject, created with the Sketcher Workbench.
- Any object created by importing a STEP, BREP, and similar solid format files.
All objects derived from
Part::Feature will have a Part TopoShape, which is normally accessible from its
import FreeCAD as App doc = App.newDocument() obj = App.ActiveDocument.addObject("Part::Box", "Box") print(obj.Shape)
A TopoShape has many attributes (variables) and methods that contain information about it, and which allow doing operations with it. These variables and methods can be tested in the Python console.
print(obj.Shape.Area) print(obj.Shape.BoundBox) print(obj.Shape.CenterOfMass) print(obj.Shape.ShapeType) obj.Shape.check() obj.Shape.copy() obj.Shape.exportStep("my_file.step") obj.Shape.exportStl("my_file.stl")