]> SALOME platform Git repositories - modules/shaper.git/blob - src/PythonAPI/examples/Platine.py
Salome HOME
[PythonAPI] Add new example Platine. Draft version.
[modules/shaper.git] / src / PythonAPI / examples / Platine.py
1 # Creation of Platine model using the end-user API
2 # Author: Sergey POKHODENKO
3 # -----------------------------
4
5 from GeomDataAPI import geomDataAPI_Point2D
6 import geom
7 import model
8
9 # Initialisation
10 model.begin()
11 partset = model.moduleDocument()
12
13 # Create a new Part
14 part = model.addPart(partset).document()
15
16 L = 64
17 E = 16
18 P = 80
19
20 # Create Parameters
21 model.addParameter(part, "L", str(L))
22 model.addParameter(part, "E", str(E))
23 model.addParameter(part, "P", str(P))
24
25 # Create YOZ sketch
26 sketch = model.addSketch(part, model.defaultPlane("YOZ"))
27
28 model.do()
29
30 # Create base polygon
31 H, L, r = 64, 64, 32
32 dx, dy = 0, 0
33
34 points = [(0, 0), (0, H), (L, H), (L, 0)]
35 points = [(p[0] + dx, p[1] + dy) for p in points]
36 geom_points = [geom.Pnt2d(*p) for p in points]
37 left, top, right, bottom = sketch.addPolygon(*geom_points)
38
39 model.do()
40
41 # Set constraints
42 sketch.setRigid(left.startPointData())
43
44 sketch.setHorizontal(bottom.result())
45 sketch.setHorizontal(top.result())
46
47 sketch.setVertical(right.result())
48 sketch.setVertical(left.result())
49
50 sketch.setLength(top.result(), "L")
51 sketch.setLength(left.result(), "L")
52
53 sketch.setFillet(left.endPointData(), r)
54
55 model.do()
56
57 # Create extrusion
58 YOZ_body = model.addExtrusion(part, sketch.selectFace(), "E")
59
60 model.do()
61
62 # Create XOY sketch
63 sketch = model.addSketch(part, model.defaultPlane("XOY"))
64
65 # Create base polygon
66 L, P = 64, P
67 dx, dy = E, 0
68
69 points = [(0, 0), (0, L), (P, L), (P, 16 + 16), (P - 20, 16 + 16), (P - 20, 16), (P, 16), (P, 0)]
70 points = [(p[0] + dx, p[1] + dy) for p in points]
71 geom_points = [geom.Pnt2d(*p) for p in points]
72 left, top, v2, h2, v1, h1, right, bottom = sketch.addPolygon(*geom_points)
73
74 points = [(P - 20, 16 + 16 / 2), (P - 20, 16), (P - 20, 16 + 16)]
75 points = [(p[0] + dx, p[1] + dy) for p in points]
76 center, start, end = [geom.Pnt2d(*p) for p in points]
77 arc = sketch.addArc(center, start, end)
78
79 model.do()
80
81 # Set Auxiliarity
82 v1.setAuxiliary(True)
83
84 # Set constraints
85 sketch.setCoincident(arc.center(), v1.result())
86 sketch.setCoincident(h2.endPointData(), arc.startPoint())
87 sketch.setCoincident(arc.endPoint(), h1.startPointData())
88
89 sketch.setPerpendicular(bottom.result(), right.result())
90 sketch.setPerpendicular(top.result(), left.result())
91 sketch.setPerpendicular(top.result(), v2.result())
92
93 sketch.setParallel(bottom.result(), h1.result())
94 sketch.setParallel(h1.result(), h2.result())
95 sketch.setParallel(h2.result(), top.result())
96 sketch.setParallel(v1.result(), v2.result())
97
98 sketch.setLength(top.result(), "P")
99 sketch.setLength(h2.result(), "20")
100 sketch.setLength(v1.result(), "16")
101 sketch.setLength(right.result(), "16")
102
103 model.do()
104
105 # Create extrusion
106 XOY_body = model.addExtrusion(part, sketch.selectFace(), "E")
107 # TODO(spo): collision with first object. Move object to the right place.
108
109 # Create XOZ sketch
110 plane = model.defaultPlane("XOZ")
111 plane.o.setY(64)
112 sketch = model.addSketch(part, plane)
113
114 # TODO(spo): select origin point
115
116 # Create base polygon
117 H, L, l, r = 28, 40, 8, 12
118 dx, dy = E, E
119
120 points = [(l + 2 * r, H), (L, H), (L, 0), (0, 0), (0, H), (l, H)]
121 points = [(p[0] + dx, p[1] + dy) for p in points]
122 geom_points = [geom.Pnt2d(*p) for p in points]
123 top_right, right, bottom, left, top_left = sketch.addPolyline(*geom_points)
124
125 points = [(l + r, H), (l, H), (l + 2 * r, H)]
126 points = [(p[0] + dx, p[1] + dy) for p in points]
127 center, start, end = [geom.Pnt2d(*p) for p in points]
128 arc = sketch.addArc(center, start, end)
129
130 model.do()
131
132 # Set constraints
133 sketch.setCoincident(top_left.endPointData(), arc.startPoint())
134 sketch.setCoincident(arc.endPoint(), top_right.endPointData())
135
136 sketch.setPerpendicular(bottom.result(), right.result())
137
138 sketch.setParallel(bottom.result(), top_left.result())
139 sketch.setParallel(bottom.result(), top_right.result())
140 sketch.setParallel(left.result(), right.result())
141
142 sketch.setLength(bottom.result(), L)
143 sketch.setLength(right.result(), H)
144 sketch.setLength(top_left.result(), l)
145
146 sketch.setRadius(arc.result(), r)
147
148 model.do()
149
150 # Create extrusion
151 XOZ_body = model.addExtrusion(part, sketch.selectFace(), "42")
152
153 model.do()
154
155 # Create XOZ 2nd sketch
156 plane = model.defaultPlane("XOZ")
157 plane.o.setY(64)
158 sketch = model.addSketch(part, plane)
159
160 # TODO(spo): make coincidence with existing points
161
162 # Create base polygon
163 dx, dy = E + L, E
164 H, L = 28, 96 - dx
165
166 points = [(0, 0), (0, H), (L, 0)]
167 points = [(p[0] + dx, p[1] + dy) for p in points]
168 geom_points = [geom.Pnt2d(*p) for p in points]
169 left, diagonal, bottom = sketch.addPolygon(*geom_points)
170
171 model.do()
172
173 # TODO(spo): make coincidence instead of constraints
174 sketch.setLength(bottom.result(), L)
175 sketch.setLength(left.result(), H)
176
177 sketch.setPerpendicular(bottom.result(), left.result())
178
179 model.do()
180
181 # Create extrusion
182 XOZ_2nd_body = model.addExtrusion(part, sketch.selectFace(), "12")
183
184 model.do()
185
186 # Create Boolean
187 boolean = model.addAddition(part, YOZ_body.result() + XOY_body.result() +
188                                   XOZ_body.result() + XOZ_2nd_body.result(), [])
189
190 model.do()