Topological data scripting

From FreeCAD Documentation
Revision as of 17:45, 25 June 2008 by Wmayer (talk | contribs)

Introduction

First to use the Part module functionality you have to load the Part module into the intereter: import Part

Class Diagram

This is an UML overview about the most important classes of the Part module:

Python classes of the Part module
Python classes of the Part module

Geometry

The Geomtric objects are the Building block of all topological objects:

  • Geom Base class of the geometric objects
  • Line A straight line in 3D, defined by starting point and and point
  • Circle Circle or circle segment defined by a center point and start and end point
  • ...... And soon some more ;-)

Topology

The following topological data types are available:

  • COMPOUND A group of any type of topological object.
  • COMPSOLID A composite solid is a set of solids connected by their faces. It expands the notions of WIRE and SHELL to solids.
  • SOLID A part of space limited by shells. It is three dimensional.
  • SHELL A set of faces connected by their edges. A shell can be open or closed.
  • FACE In 2D it is part of a plane; in 3D it is part of a surface. Its geometry is constrained (trimmed) by contours. It is two dimensional.
  • WIRE A set of edges connected by their vertices. It can be an open or closed contour depending on whether the edges are linked or not.
  • EDGE A topological element corresponding to a restrained curve. An edge is generally limited by vertices. It has one dimension.
  • VERTEX A topological element corresponding to a point. It has zero dimension.
  • SHAPE A generic term covering all of the above.

Creating Basic types

You can directly create basic topological objects through the module: b = Part.createBox(0,0,0,100,100,100) Part.show(b)

Exploring shapes

You can explore the topological data structure:

b = Part.createBox(0,0,0,100,100,100) b.Wires w = b.Wires[0] w w.Wires w.Vertexes Part.show(w) w.Edges e = w.Edges[0] e.Vertexes v = e.Vertexes[0] v.Point


Creating Topology

Wire
Wire

We will now create a topology by constructing it out of simpler geometry. As a case study we use a Part as seen in the picture which consist of four Vertexes, two circles and two lines.

Creating Geometry

First we have to create the distinct geometric parts of this Wire. And we have to take care that the Vertexes of the Geometric Parts are at the same position. Otherwise we can later on not connecting the geometric parts to a topology!

So we create first the points: from FreeCAD import Base V1 = Base.Vector(0,10,0) V2 = Base.Vector(30,10,0) V3 = Base.Vector(30,-10,0) V4 = Base.Vector(0,-10,0)

Circle

Circle
Circle

To create a circle we make a helper point and create the circle through three points: VC1 = Base.Vector(-10,0,0) C1 = Part.Circle(V1,V4,VC1)

  1. and the second one

VC2 = Base.Vector(40,0,0) C2 = Part.Circle(V2,V3,VC2)

Line

Line
Line

The Line can be created very simple out of the Points: L1 = Part.Line(V1,V2)

  1. and the second one

L2 = Part.Line(V4,V3)

Put all together

The last step is to put the geometric base elements together and bake a topological shape: S1 = Part.makeShape([C1,C2,L1,L2])

Load and Save