forked from clothbot/skeind
/
oo_outline.txt
144 lines (141 loc) · 3.8 KB
/
oo_outline.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Outline of the Object Oriented Structure:
- Mesh
- is composed of triangles
- sorts triangles from Z- to Z+ order
- subsorts triangles from Y- to Y+
- subsorts triangles from X- to X+
- has a bounding cube
- detects degenerate Triangle
- zero-area
- can be constructed from ModelSlices
- Line3D
- is made of two Vector3D points
- has a Vector3D absolute start position
- allows for
- has a Vector3D end position relative to the start position
- Triangle
- is made of three Vector3D points
- first point is min Z
- subsort to min Y
- subsort to min X
- last point is max Z
- subsort to max Y
- subsort to max X
- has properties
- has a Vector3D normal
- has functions
- calculate2DArea
- Line3D calculate3DBCube
- intersectPlane
- Slice
- is a QPainterPath
- has properties (read-only direct access)
- has a thickness
- has a bounding box
- local (untransformed)
- has a QVector3D position
- has a QVector3D orientation
- has a QTransform transform
- resize 2D content
- has a gridScaleX, gridScaleY
- quantize data for grid-snap, machine limitations, etc.
- has functions
- get2DBBox (transformed 2D bounding box)
- get3DBCube (transformed, oriented bounding cube)
- setPosition
- setOrientation
- setTransform
- setThickness
- has 2D operators
- geomOr()
- equiv to OpenSCAD union or QPainterPath united()
- Slice geomOr(Slice first, QList<Slice> rest)
- Slice geomOr(Slice first, Slice rest)
- default properties inherited from first.
- geomAnd()
- equiv to OpenSCAD intersection() or QPainterPath intersected()
- Slice geomAnd(Slice first, QList<Slice> rest)
- Slice geomAnd(Slice first, Slice rest)
- default properties inherited from first.
- geomAndNot()
- equiv to OpenSCAD difference() or QPainterPath subtracted()
- Slice geomAndNot(Slice first, QList<Slice> rest)
- Slice geomAndNot(Slice first, Slice rest)
- default properties inherited from first.
- geomXor()
- Slice geomXor(Slice first, QList<Slice> rest)
- Slice geomXor(Slice first, Slice rest)
- default properties inherited from first.
- shell()
- Slice shell(qreal wallThickness)
- Stream Operators
- readGDSII
- writeGDSII
- readSVG
- writeSVG
- readDXF
- writeDXF
- readGCode
- writeGCode
- readGerber
- writeGerber
- Model
- is a QList<Slice>
- has properties
- has a bounding cube
- maintained as slices added/removed/changed.
- has a Material
- has Pseudo-3D operators
- union()
- Model union(QList<Model> models)
- threaded/multiprocessor execution
- thread per slice
- intersection()
- Model intersection(QList<Model> models)
- threaded/multiprocessor execution
- thread per slice
- difference()
- Model difference(Model first, QList<Model> rest)
- threaded/multiprocessor execution
- thread per slice
- xor()
- Model xor(QList<Model> models)
- threaded/multiprocessor execution
- thread per slice
- has 2.5D operators
- generateFillPattern()
- threaded/multiprocessor execution
- thread per slice
- generateShell()
- threaded/multiprocessor execution
- thread per slice
- generateBridges()
- threaded/multiprocessor execution
- thread per two slices
- slice geometry with no overlap below
- straight line support from both sides
- no holes mid-bridge.
- generateTops()
- threaded/multiprocessor execution
- thread per two slices
- slice geometry with no overlap above.
- supportOverhangs()
- threaded/multiprocessor execution
- thread per two slices
- slice geometry with no overlap below
- not bridge geometry
- Stream Operators
- readSTL
- writeSTL
- readDAE
- writeDAE
- readGDSII
- writeGDSII
- readSVG
- writeSVG
- readDXF
- writeDXF
- readGCode
- writeGCode
- readGerber
- writeGerber