Algebraic definition
Objects and arithmetic
Set definitions:
\(C^3\) is the set of all Part
objects p
with p._dim = 3
\(C^2\) is the set of all Sketch
objects s
with s._dim = 2
\(C^1\) is the set of all Curve
objects c
with c._dim = 1
Neutral elements:
\(c^3_0\) is the empty Part
object p0 = Part()
with p0._dim = 3
and p0.wrapped = None
\(c^2_0\) is the empty Sketch
object s0 = Sketch()
with s0._dim = 2
and s0.wrapped = None
\(c^1_0\) is the empty Curve
object c0 = Curve()
with c0._dim = 1
and c0.wrapped = None
Sets of predefined basic shapes:
\(B^3 := \lbrace\) Part
, Box
, Cylinder
, Cone
, Sphere
, Torus
, Wedge
, Hole
, CounterBoreHole
, CounterSinkHole
\(\rbrace\)
\(B^2 := \lbrace\) Sketch
, Rectangle
, Circle
, Ellipse
, Rectangle
, Polygon
, RegularPolygon
, Text
, Trapezoid
, SlotArc
, SlotCenterPoint
, SlotCenterToCenter
, SlotOverall
\(\rbrace\)
\(B^1 := \lbrace\) Curve
, Bezier
, FilletPolyline
, PolarLine
, Polyline
, Spline
, Helix
, CenterArc
, EllipticalCenterArc
, RadiusArc
, SagittaArc
, TangentArc
, ThreePointArc
, JernArc
\(\rbrace\)
with \(B^3 \subset C^3, B^2 \subset C^2\) and \(B^1 \subset C^1\)
Operations:
\(+: C^n \times C^n \rightarrow C^n\) with \((a,b) \mapsto a + b\), \(\;\) for \(n=1,2,3\)
\(\; a + b :=\)
a.fuse(b)
for each operation
\(-: C^n \rightarrow C^n\) with \(a \mapsto -a\), \(\;\) for \(n=1,2,3\)
\(\; b + (-a) :=\)
b.cut(a)
for each operation (implicit definition)
\(\&: C^n \times C^n \rightarrow C^n\) with \((a,b) \mapsto a \; \& \; b\), \(\;\) for \(n=2,3\)
\(\; a \; \& \; b :=\)
a.intersect(b)
for each operation
\(\&\) is not defined for \(n=1\) in build123d
The following relationship holds: \(a \; \& \; b = (a + b) + -(a + (-b)) + -(b + (-a))\)
Abelian groups
\(( C^n, \; c^n_0, \; +, \; -)\) \(\;\) are abelian groups for \(n=1,2,3\).
The implementation
a - b = a.cut(b)
needs to be read as \(a + (-b)\) since the group does not have a binary-
operation. As such, \(a - (b - c) = a + -(b + -c)) \ne a - b + c\)This definition also includes that neither
-
nor&
are commutative.
Locations, planes and location arithmetic
Set definitions:
\(L := \lbrace\) Location((x, y, z), (a, b, c))
\(: x,y,z \in R \land a,b,c \in R \rbrace\;\)
with \(a,b,c\) being angles in degrees.
\(P := \lbrace\) Plane(o, x, z)
\(: o,x,z ∈ R^3 \land \|x\| = \|z\| = 1\rbrace\)
with
o
being the origin andx
,z
the x- and z-direction of the plane.
Neutral element: \(\; l_0 \in L\): Location()
Operations:
\(*: L \times L \rightarrow L\) with \((l_1,l_2) \mapsto l_1 * l_2\)
\(\; l_1 * l_2 :=\)
l1 * l2
(multiply two locations)
\(*: P \times L \rightarrow P\) with \((p,l) \mapsto p * l\)
\(\; p * l :=\)
Plane(p.location * l)
(move plane \(p \in P\) to location \(l \in L\))
Inverse element: \(\; l^{-1} \in L\): l.inverse()
Placing objects onto planes
\(*: P \times C^n \rightarrow C^n \;\) with \((p,c) \mapsto p * c\), \(\;\) for \(n=1,2,3\)
Locate an object \(c \in C^n\) onto plane \(p \in P\), i.e.
c.moved(p.location)
Placing objects at locations
\(*: L \times C^n \rightarrow C^n \;\) with \((l,c) \mapsto l * c\), \(\;\) for \(n=1,2,3\)
Locate an object \(c \in C^n\) at location \(l \in L\), i.e.
c.moved(l)