1 # Creation of Platine model using the end-user API
2 # Author: Sergey POKHODENKO
3 # -----------------------------
5 from GeomDataAPI import geomDataAPI_Point2D
11 partset = model.moduleDocument()
14 part = model.addPart(partset).document()
21 model.addParameter(part, "L", str(L))
22 model.addParameter(part, "E", str(E))
23 model.addParameter(part, "P", str(P))
26 sketch = model.addSketch(part, model.defaultPlane("YOZ"))
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)
42 sketch.setRigid(left.startPointData())
44 sketch.setHorizontal(bottom.result())
45 sketch.setHorizontal(top.result())
47 sketch.setVertical(right.result())
48 sketch.setVertical(left.result())
50 sketch.setLength(top.result(), "L")
51 sketch.setLength(left.result(), "L")
53 sketch.setFillet(left.endPointData(), r)
58 YOZ_body = model.addExtrusion(part, sketch.selectFace(), "E")
63 sketch = model.addSketch(part, model.defaultPlane("XOY"))
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)
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)
85 sketch.setCoincident(arc.center(), v1.result())
86 sketch.setCoincident(h2.endPointData(), arc.startPoint())
87 sketch.setCoincident(arc.endPoint(), h1.startPointData())
89 sketch.setPerpendicular(bottom.result(), right.result())
90 sketch.setPerpendicular(top.result(), left.result())
91 sketch.setPerpendicular(top.result(), v2.result())
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())
98 sketch.setLength(top.result(), "P")
99 sketch.setLength(h2.result(), "20")
100 sketch.setLength(v1.result(), "16")
101 sketch.setLength(right.result(), "16")
106 XOY_body = model.addExtrusion(part, sketch.selectFace(), "E")
107 # TODO(spo): collision with first object. Move object to the right place.
110 plane = model.defaultPlane("XOZ")
112 sketch = model.addSketch(part, plane)
114 # TODO(spo): select origin point
116 # Create base polygon
117 H, L, l, r = 28, 40, 8, 12
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)
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)
133 sketch.setCoincident(top_left.endPointData(), arc.startPoint())
134 sketch.setCoincident(arc.endPoint(), top_right.endPointData())
136 sketch.setPerpendicular(bottom.result(), right.result())
138 sketch.setParallel(bottom.result(), top_left.result())
139 sketch.setParallel(bottom.result(), top_right.result())
140 sketch.setParallel(left.result(), right.result())
142 sketch.setLength(bottom.result(), L)
143 sketch.setLength(right.result(), H)
144 sketch.setLength(top_left.result(), l)
146 sketch.setRadius(arc.result(), r)
151 XOZ_body = model.addExtrusion(part, sketch.selectFace(), "42")
155 # Create XOZ 2nd sketch
156 plane = model.defaultPlane("XOZ")
158 sketch = model.addSketch(part, plane)
160 # TODO(spo): make coincidence with existing points
162 # Create base polygon
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)
173 # TODO(spo): make coincidence instead of constraints
174 sketch.setLength(bottom.result(), L)
175 sketch.setLength(left.result(), H)
177 sketch.setPerpendicular(bottom.result(), left.result())
182 XOZ_2nd_body = model.addExtrusion(part, sketch.selectFace(), "12")
187 boolean = model.addAddition(part, YOZ_body.result() + XOY_body.result() +
188 XOZ_body.result() + XOZ_2nd_body.result(), [])