Part TopoShape
Introduction
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.
Another type of class is that of meshes; this class is not very parametric because it can't be redefined easily except by specifying individual vertices and triangular surfaces.
Left: parametric Part TopoShape defined by properties. Right: non-parametric mesh, defined by vertices and triangular surfaces.
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.
Usage
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.
Scripting
See also: FreeCAD Scripting Basics, and scripted objects.
All objects derived from Part::Feature
will have a Part TopoShape, which is normally accessible from its Shape
attribute.
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")
For a full list of attributes and methods, consult the source documentation, and the Std PythonHelp tool.
You can obtain a quick summary of all methods using Python's built-in help()
function.
help(obj.Shape)
- Primitives: Box, Cylinder, Sphere, Cone, Torus, Tube, Create primitives, Shape builder
- Creation and modification: Create sketch, Extrude, Revolve, Mirror, Scale, Fillet, Chamfer, Make face from wires, Ruled Surface, Loft, Sweep, Section, Cross sections, 3D Offset, 2D Offset, Thickness, Projection on surface, Color per face
- Boolean: Make compound, Explode compound, Compound Filter, Boolean, Cut, Union, Intersection, Connect objects, Embed object, Cutout for object, Boolean fragments, Slice apart, Slice to compound, Boolean XOR, Check geometry, Defeaturing
- Other tools: Import CAD file, Export CAD file, Box selection, Create shape from mesh, Create points object from geometry, Convert to solid, Reverse shapes, Create simple copy, Create transformed copy, Create shape element copy, Refine shape, Attachment
- Preferences: Preferences, Fine tuning
- Core: App DocumentObject
- Basic: App FeaturePython, App GeoFeature, Part Feature, Mesh Feature, Fem FemMeshObject
- Internal shapes: Part TopoShape, Mesh MeshObject, Fem FemMesh
- Structure: App DocumentObjectGroup (Std Group), App Part (Std Part), App Link (Std LinkMake)
- Derived: Part Part2DObject, Sketcher SketchObject, PartDesign Body, PartDesign Feature
- Getting started
- Installation: Download, Windows, Linux, Mac, Additional components, Docker, AppImage, Ubuntu Snap
- Basics: About FreeCAD, Interface, Mouse navigation, Selection methods, Object name, Preferences, Workbenches, Document structure, Properties, Help FreeCAD, Donate
- Help: Tutorials, Video tutorials
- Workbenches: Std Base, Assembly, BIM, CAM, Draft, FEM, Inspection, Material, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework
- Hubs: User hub, Power users hub, Developer hub