24
from FreeCAD import Vector
25
from draftutils.translate import translate
28
WindowPresets = ["Fixed", "Open 1-pane", "Open 2-pane", "Sash 2-pane", "Sliding 2-pane",
29
"Simple door", "Glass door", "Sliding 4-pane", "Awning", "Opening only"]
31
def makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,placement=None):
33
"""makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,[placement]): makes a
34
window object based on the given data. windowtype must be one of the names
35
defined in Arch.WindowPresets"""
37
if not FreeCAD.ActiveDocument:
38
FreeCAD.Console.PrintError("No active document. Aborting\n")
41
def makeSketch(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2):
46
height = float(height)
57
FreeCAD.Console.PrintError("H1, H2, W1 and W2 parameters cannot be zero. Aborting\n")
63
s = FreeCAD.ActiveDocument.addObject('Sketcher::SketchObject','Sketch')
65
def addRectangle(s,p1,p2,p3,p4):
67
"adds a rectangle to the given sketch"
70
s.addGeometry(Part.LineSegment(p1,p2))
71
s.addGeometry(Part.LineSegment(p2,p3))
72
s.addGeometry(Part.LineSegment(p3,p4))
73
s.addGeometry(Part.LineSegment(p4,p1))
74
s.addConstraint(Sketcher.Constraint('Coincident',idx,2,idx+1,1))
75
s.addConstraint(Sketcher.Constraint('Coincident',idx+1,2,idx+2,1))
76
s.addConstraint(Sketcher.Constraint('Coincident',idx+2,2,idx+3,1))
77
s.addConstraint(Sketcher.Constraint('Coincident',idx+3,2,idx,1))
78
s.addConstraint(Sketcher.Constraint('Horizontal',idx))
79
s.addConstraint(Sketcher.Constraint('Horizontal',idx+2))
80
s.addConstraint(Sketcher.Constraint('Vertical',idx+1))
81
s.addConstraint(Sketcher.Constraint('Vertical',idx+3))
83
def addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8):
85
"adds two rectangles to the given sketch"
87
addRectangle(s,p1,p2,p3,p4)
88
addRectangle(s,p5,p6,p7,p8)
90
def simpleFrame(s,width,height,h1,h2,tol):
92
"creates a simple frame with constraints"
94
p1 = Vector(h1+tol,h1+tol,0)
95
p2 = Vector(width-(h1+tol),h1+tol,0)
96
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
97
p4 = Vector(h1+tol,height-(h1+tol),0)
98
p5 = Vector(h1+h2,h1+h2,0)
99
p6 = Vector(width-(h1+h2),h1+h2,0)
100
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
101
p8 = Vector(h1+h2,height-(h1+h2),0)
102
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
103
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
104
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2))
105
s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2))
106
s.addConstraint(Sketcher.Constraint('DistanceY',14,1,10,1,h2))
107
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
108
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
109
s.addConstraint(Sketcher.Constraint('DistanceX',10,1,6,1,tol))
110
s.addConstraint(Sketcher.Constraint('DistanceY',10,1,6,1,tol))
112
s.renameConstraint(39,'Frame5')
113
s.renameConstraint(40,'Frame6')
114
s.renameConstraint(42,'Frame7')
115
s.renameConstraint(41,'Frame8')
117
def outerFrame(s,width,height,h1,w1,o1):
120
p2 = Vector(width,0,0)
121
p3 = Vector(width,height,0)
122
p4 = Vector(0,height,0)
124
p6 = Vector(width-h1,h1,0)
125
p7 = Vector(width-h1,height-h1,0)
126
p8 = Vector(h1,height-h1,0)
127
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
128
s.addConstraint(Sketcher.Constraint('DistanceY',1,height))
129
s.addConstraint(Sketcher.Constraint('DistanceX',0,width))
130
s.renameConstraint(16, 'Height')
131
s.renameConstraint(17, 'Width')
132
s.addConstraint(Sketcher.Constraint('DistanceY',6,2,2,2,h1))
133
s.addConstraint(Sketcher.Constraint('DistanceX',2,2,6,2,h1))
134
s.addConstraint(Sketcher.Constraint('DistanceX',4,2,0,2,h1))
135
s.addConstraint(Sketcher.Constraint('DistanceY',0,2,4,2,h1))
136
s.renameConstraint(18, 'Frame1')
137
s.renameConstraint(19, 'Frame2')
138
s.renameConstraint(20, 'Frame3')
139
s.renameConstraint(21, 'Frame4')
140
s.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1))
141
return ["OuterFrame","Frame","Wire0,Wire1",str(w1-w2)+"+V","0.00+V"]
143
def doorFrame(s,width,height,h1,w1,o1):
146
p2 = Vector(width,0,0)
147
p3 = Vector(width,height,0)
148
p4 = Vector(0,height,0)
150
p6 = Vector(width-h1,0,0)
151
p7 = Vector(width-h1,height-h1,0)
152
p8 = Vector(h1,height-h1,0)
153
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
154
s.addConstraint(Sketcher.Constraint('DistanceY',1,height))
155
s.addConstraint(Sketcher.Constraint('DistanceX',0,width))
156
s.renameConstraint(16, 'Height')
157
s.renameConstraint(17, 'Width')
158
s.addConstraint(Sketcher.Constraint('DistanceY',6,2,2,2,h1))
159
s.addConstraint(Sketcher.Constraint('DistanceX',2,2,6,2,h1))
160
s.addConstraint(Sketcher.Constraint('DistanceX',4,2,0,2,h1))
161
s.addConstraint(Sketcher.Constraint('DistanceY',0,2,4,2,0.0))
162
s.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1))
163
s.renameConstraint(18, 'Frame1')
164
s.renameConstraint(19, 'Frame2')
165
s.renameConstraint(20, 'Frame3')
166
return ["OuterFrame","Frame","Wire0,Wire1",str(w1-w2)+"+V","0.00+V"]
168
if windowtype == "Fixed":
170
wp = outerFrame(s,width,height,h1,w1,o1)
171
wp.extend(["Glass","Glass panel","Wire1",str(w1/gla),str(w1/2)+"+V"])
173
elif windowtype == "Open 1-pane":
175
wp = outerFrame(s,width,height,h1,w1,o1)
176
simpleFrame(s,width,height,h1,h2,tol)
180
wp.extend(["InnerFrame","Frame","Wire2,Wire3,Edge8,Mode1",fw,str(o2)+"+V"])
181
wp.extend(["InnerGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
183
elif windowtype == "Open 2-pane":
185
wp = outerFrame(s,width,height,h1,w1,o1)
186
p1 = Vector(h1+tol,h1+tol,0)
187
p2 = Vector((width/2)-tol,h1+tol,0)
188
p3 = Vector((width/2)-tol,height-(h1+tol),0)
189
p4 = Vector(h1+tol,height-(h1+tol),0)
190
p5 = Vector(h1+h2,h1+h2,0)
191
p6 = Vector((width/2)-h2,h1+h2,0)
192
p7 = Vector((width/2)-h2,height-(h1+h2),0)
193
p8 = Vector(h1+h2,height-(h1+h2),0)
194
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
195
p1 = Vector((width/2)+tol,h1+tol,0)
196
p2 = Vector(width-(h1+tol),h1+tol,0)
197
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
198
p4 = Vector((width/2)+tol,height-(h1+tol),0)
199
p5 = Vector((width/2)+h2,h1+h2,0)
200
p6 = Vector(width-(h1+h2),h1+h2,0)
201
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
202
p8 = Vector((width/2)+h2,height-(h1+h2),0)
203
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
204
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2))
205
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
206
s.addConstraint(Sketcher.Constraint('DistanceX',21,2,17,2,h2))
207
s.addConstraint(Sketcher.Constraint('DistanceY',21,2,17,2,h2))
208
s.addConstraint(Sketcher.Constraint('DistanceX',16,1,20,1,h2))
209
s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2))
210
s.addConstraint(Sketcher.Constraint('Equal',22,14))
211
s.addConstraint(Sketcher.Constraint('DistanceY',8,2,16,1,0.0))
212
s.addConstraint(Sketcher.Constraint('DistanceY',10,1,18,2,0.0))
213
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
214
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
215
s.addConstraint(Sketcher.Constraint('DistanceX',6,1,18,1,-tol))
216
s.addConstraint(Sketcher.Constraint('DistanceY',6,1,18,1,-tol))
217
s.addConstraint(Sketcher.Constraint('DistanceX',9,1,19,2,tol))
218
s.addConstraint(Sketcher.Constraint('PointOnObject',13,2,22))
219
s.addConstraint(Sketcher.Constraint('PointOnObject',20,1,12))
221
s.renameConstraint(55,'Frame5')
222
s.renameConstraint(56,'Frame6')
223
s.renameConstraint(57,'Frame7')
224
s.renameConstraint(58,'Frame8')
225
s.renameConstraint(59,'Frame9')
226
s.renameConstraint(60,'Frame10')
230
wp.extend(["LeftFrame","Frame","Wire2,Wire3,Edge8,Mode1",fw,str(o2)+"+V"])
231
wp.extend(["LeftGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
232
wp.extend(["RightFrame","Frame","Wire4,Wire5,Edge6,Mode2",fw,str(o2)+"+V"])
233
wp.extend(["RightGlass","Glass panel","Wire5",str(w2/gla),str(o2+w2/2)+"+V"])
235
elif windowtype == "Sash 2-pane":
237
wp = outerFrame(s,width,height,h1,w1,o1)
238
p1 = Vector(h1+tol,h1+tol,0)
239
p2 = Vector(width-(h1+tol),h1+tol,0)
240
p3 = Vector(width-(h1+tol),(height/2)-tol,0)
241
p4 = Vector(h1+tol,(height/2)-tol,0)
242
p5 = Vector(h1+h2,h1+h2,0)
243
p6 = Vector(width-(h1+h2),h1+h2,0)
244
p7 = Vector(width-(h1+h2),(height/2)-h2,0)
245
p8 = Vector(h1+h2,(height/2)-h2,0)
246
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
247
p1 = Vector(h1+tol,(height/2)+tol,0)
248
p2 = Vector(width-(h1+tol),(height/2)+tol,0)
249
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
250
p4 = Vector(h1+tol,height-(h1+tol),0)
251
p5 = Vector(h1+h2,(height/2)+h2,0)
252
p6 = Vector(width-(h1+h2),(height/2)+h2,0)
253
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
254
p8 = Vector(h1+h2,height-(h1+h2),0)
255
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
256
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2))
257
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
258
s.addConstraint(Sketcher.Constraint('DistanceX',21,2,17,2,h2))
259
s.addConstraint(Sketcher.Constraint('DistanceY',21,2,17,2,h2))
260
s.addConstraint(Sketcher.Constraint('DistanceY',16,2,20,1,h2))
261
s.addConstraint(Sketcher.Constraint('DistanceY',10,2,14,2,-h2))
262
s.addConstraint(Sketcher.Constraint('Equal',23,15))
263
s.addConstraint(Sketcher.Constraint('DistanceX',12,1,20,1,0.0))
264
s.addConstraint(Sketcher.Constraint('DistanceX',13,2,20,2,0.0))
265
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
266
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
267
s.addConstraint(Sketcher.Constraint('DistanceX',6,1,18,1,-tol))
268
s.addConstraint(Sketcher.Constraint('DistanceY',6,1,18,1,-tol))
269
s.addConstraint(Sketcher.Constraint('DistanceY',10,1,16,1,tol))
270
s.addConstraint(Sketcher.Constraint('PointOnObject',9,2,17))
271
s.addConstraint(Sketcher.Constraint('PointOnObject',16,1,11))
273
s.renameConstraint(55,'Frame5')
274
s.renameConstraint(56,'Frame6')
275
s.renameConstraint(57,'Frame7')
276
s.renameConstraint(58,'Frame8')
277
s.renameConstraint(59,'Frame9')
278
s.renameConstraint(60,'F10')
279
s.setExpression('.Constraints.F10','-.Constraints.Frame5')
283
wp.extend(["LowerFrame","Frame","Wire2,Wire3",fw,str(o2+w2)+"+V"])
284
wp.extend(["LowerGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2+w2/2)+"+V"])
285
wp.extend(["UpperFrame","Frame","Wire4,Wire5",fw,str(o2)+"+V"])
286
wp.extend(["UpperGlass","Glass panel","Wire5",str(w2/gla),str(o2+w2/2)+"+V"])
288
elif windowtype == "Sliding 2-pane":
290
wp = outerFrame(s,width,height,h1,w1,o1)
291
p1 = Vector(h1+tol,h1+tol,0)
292
p2 = Vector((width/2)-tol,h1+tol,0)
293
p3 = Vector((width/2)-tol,height-(h1+tol),0)
294
p4 = Vector(h1+tol,height-(h1+tol),0)
295
p5 = Vector(h1+h2,h1+h2,0)
296
p6 = Vector((width/2)-h2,h1+h2,0)
297
p7 = Vector((width/2)-h2,height-(h1+h2),0)
298
p8 = Vector(h1+h2,height-(h1+h2),0)
299
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
300
p1 = Vector((width/2)+tol,h1+tol,0)
301
p2 = Vector(width-(h1+tol),h1+tol,0)
302
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
303
p4 = Vector((width/2)+tol,height-(h1+tol),0)
304
p5 = Vector((width/2)+h2,h1+h2,0)
305
p6 = Vector(width-(h1+h2),h1+h2,0)
306
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
307
p8 = Vector((width/2)+h2,height-(h1+h2),0)
308
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
309
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2))
310
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
311
s.addConstraint(Sketcher.Constraint('DistanceX',21,2,17,2,h2))
312
s.addConstraint(Sketcher.Constraint('DistanceY',21,2,17,2,h2))
313
s.addConstraint(Sketcher.Constraint('DistanceX',16,1,20,1,h2))
314
s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2))
315
s.addConstraint(Sketcher.Constraint('Equal',22,14))
316
s.addConstraint(Sketcher.Constraint('DistanceY',8,2,16,1,0.0))
317
s.addConstraint(Sketcher.Constraint('DistanceY',10,1,18,2,0.0))
318
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
319
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
320
s.addConstraint(Sketcher.Constraint('DistanceX',6,1,18,1,-tol))
321
s.addConstraint(Sketcher.Constraint('DistanceY',6,1,18,1,-tol))
322
s.addConstraint(Sketcher.Constraint('DistanceX',9,1,19,2,tol))
323
s.addConstraint(Sketcher.Constraint('PointOnObject',13,2,22))
324
s.addConstraint(Sketcher.Constraint('PointOnObject',12,2,20))
326
s.renameConstraint(55,'Frame5')
327
s.renameConstraint(56,'Frame6')
328
s.renameConstraint(57,'Frame7')
329
s.renameConstraint(58,'Frame8')
330
s.renameConstraint(59,'Frame9')
331
s.renameConstraint(60,'Frame10')
335
wp.extend(["LeftFrame","Frame","Wire2,Wire3",fw,str(o2)+"+V"])
336
wp.extend(["LeftGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
337
wp.extend(["RightFrame","Frame","Wire4,Wire5",fw,str(o2+w2)+"+V"])
338
wp.extend(["RightGlass","Glass panel","Wire5",str(w2/gla),str(o2+w2+w2/2)+"+V"])
340
elif windowtype == "Sliding 4-pane":
342
wp = outerFrame(s,width,height,h1,w1,o1)
343
p1 = Vector(h1+tol,h1+tol,0)
344
p2 = Vector(width/4-tol,h1+tol,0)
345
p3 = Vector(width/4-tol,height-(h1+tol),0)
346
p4 = Vector(h1+tol,height-(h1+tol),0)
347
p5 = Vector(h1+h2,h1+h2,0)
348
p6 = Vector(width/4-h2,h1+h2,0)
349
p7 = Vector(width/4-h2,height-(h1+h2),0)
350
p8 = Vector(h1+h2,height-(h1+h2),0)
351
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
352
p1 = Vector(width/4+tol,h1+tol,0)
353
p2 = Vector(width/2-tol,h1+tol,0)
354
p3 = Vector(width/2-tol,height-(h1+tol),0)
355
p4 = Vector(width/4+tol,height-(h1+tol),0)
356
p5 = Vector(width/4+h2,h1+h2,0)
357
p6 = Vector(width/2-h2,h1+h2,0)
358
p7 = Vector(width/2-h2,height-(h1+h2),0)
359
p8 = Vector(width/4+h2,height-(h1+h2),0)
360
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
361
p1 = Vector(width/2+tol,h1+tol,0)
362
p2 = Vector(width*3/4-tol,h1+tol,0)
363
p3 = Vector(width*3/4-tol,height-(h1+tol),0)
364
p4 = Vector(width/2+tol,height-(h1+tol),0)
365
p5 = Vector(width/2+h2,h1+h2,0)
366
p6 = Vector(width*3/4-h2,h1+h2,0)
367
p7 = Vector(width*3/4-h2,height-(h1+h2),0)
368
p8 = Vector(width/2+h2,height-(h1+h2),0)
369
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
370
p1 = Vector(width*3/4+tol,h1+tol,0)
371
p2 = Vector(width-(h1+tol),h1+tol,0)
372
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
373
p4 = Vector(width*3/4+tol,height-(h1+tol),0)
374
p5 = Vector(width*3/4+h2,h1+h2,0)
375
p6 = Vector(width-(h1+h2),h1+h2,0)
376
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
377
p8 = Vector(width*3/4+h2,height-(h1+h2),0)
378
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
379
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
380
s.addConstraint(Sketcher.Constraint('DistanceX',8,2,16,1,tol))
381
s.addConstraint(Sketcher.Constraint('DistanceX',17,1,27,2,tol))
382
s.addConstraint(Sketcher.Constraint('DistanceX',24,2,32,1,tol))
383
s.addConstraint(Sketcher.Constraint('DistanceX',32,2,4,2,tol))
384
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
385
s.addConstraint(Sketcher.Constraint('DistanceY',10,2,6,2,tol))
386
s.addConstraint(Sketcher.Constraint('DistanceY',17,2,26,2,0.0))
387
s.addConstraint(Sketcher.Constraint('DistanceY',25,2,34,2,0.0))
388
s.addConstraint(Sketcher.Constraint('DistanceY',8,2,16,1,0.0))
389
s.addConstraint(Sketcher.Constraint('DistanceY',9,2,18,2,0.0))
390
s.addConstraint(Sketcher.Constraint('DistanceY',16,2,24,1,0.0))
391
s.addConstraint(Sketcher.Constraint('DistanceY',24,2,32,1,0.0))
392
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
393
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2))
394
s.addConstraint(Sketcher.Constraint('DistanceX',13,2,9,2,h2))
395
s.addConstraint(Sketcher.Constraint('DistanceY',13,2,9,2,h2))
396
s.addConstraint(Sketcher.Constraint('DistanceX',16,1,20,1,h2))
397
s.addConstraint(Sketcher.Constraint('DistanceY',16,1,20,1,h2))
398
s.addConstraint(Sketcher.Constraint('DistanceX',21,2,17,2,h2))
399
s.addConstraint(Sketcher.Constraint('DistanceY',21,2,17,2,h2))
400
s.addConstraint(Sketcher.Constraint('DistanceX',24,1,28,1,h2))
401
s.addConstraint(Sketcher.Constraint('DistanceY',24,1,28,1,h2))
402
s.addConstraint(Sketcher.Constraint('DistanceX',29,2,25,2,h2))
403
s.addConstraint(Sketcher.Constraint('DistanceY',29,2,25,2,h2))
404
s.addConstraint(Sketcher.Constraint('DistanceX',32,1,36,1,h2))
405
s.addConstraint(Sketcher.Constraint('DistanceY',32,1,36,1,h2))
406
s.addConstraint(Sketcher.Constraint('DistanceX',37,2,33,2,h2))
407
s.addConstraint(Sketcher.Constraint('DistanceY',37,2,33,2,h2))
408
s.addConstraint(Sketcher.Constraint('Equal',14,22))
409
s.addConstraint(Sketcher.Constraint('Equal',22,30))
410
s.addConstraint(Sketcher.Constraint('Equal',30,38))
412
s.renameConstraint(100,'Frame5')
413
s.renameConstraint(101,'Frame6')
414
s.renameConstraint(102,'Frame7')
415
s.renameConstraint(103,'Frame8')
416
s.renameConstraint(104,'Frame9')
417
s.renameConstraint(105,'Frame10')
418
s.renameConstraint(106,'Frame11')
419
s.renameConstraint(107,'Frame12')
420
s.renameConstraint(108,'Frame13')
421
s.renameConstraint(109,'Frame14')
422
s.renameConstraint(110,'Frame15')
423
s.renameConstraint(111,'Frame16')
424
s.renameConstraint(112,'Frame17')
425
s.renameConstraint(113,'Frame18')
426
s.renameConstraint(114,'Frame19')
427
s.renameConstraint(115,'Frame20')
431
wp.extend(["LeftMostFrame","Frame","Wire2,Wire3",fw,str(o2)+"+V"])
432
wp.extend(["LeftMostGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
433
wp.extend(["LeftFrame","Frame","Wire4,Wire5",fw,str(o2+w2)+"+V"])
434
wp.extend(["LeftGlass","Glass panel","Wire5",str(w2/gla),str(o2+w2+w2/2)+"+V"])
435
wp.extend(["RightFrame","Frame","Wire6,Wire7",fw,str(o2+w2)+"+V"])
436
wp.extend(["RightGlass","Glass panel","Wire7",str(w2/gla),str(o2+w2+w2/2)+"+V"])
437
wp.extend(["RightMostFrame","Frame","Wire8,Wire9",fw,str(o2)+"+V"])
438
wp.extend(["RightMostGlass","Glass panel","Wire9",str(w2/gla),str(o2+w2/2)+"+V"])
440
elif windowtype == "Awning":
442
wp = outerFrame(s,width,height,h1,w1,o1)
443
simpleFrame(s,width,height,h1,h2,tol)
447
wp.extend(["InnerFrame","Frame","Wire2,Wire3,Edge7,Mode1",fw,str(o2)+"+V"])
448
wp.extend(["InnerGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
451
elif windowtype == "Simple door":
453
wp = doorFrame(s,width,height,h1,w1,o1)
454
wp.extend(["Door","Solid panel","Wire1,Edge8,Mode1",str(w2),str(o2)+"+V"])
456
elif windowtype == "Glass door":
458
wp = doorFrame(s,width,height,h1,w1,o1)
459
p1 = Vector(h1+tol,h1+tol,0)
460
p2 = Vector(width-(h1+tol),h1+tol,0)
461
p3 = Vector(width-(h1+tol),height-(h1+tol),0)
462
p4 = Vector(h1+tol,height-(h1+tol),0)
463
p5 = Vector(h1+h2,h1+h3,0)
464
p6 = Vector(width-(h1+h2),h1+h3,0)
465
p7 = Vector(width-(h1+h2),height-(h1+h2),0)
466
p8 = Vector(h1+h2,height-(h1+h2),0)
467
addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8)
468
s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2))
469
s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h3))
470
s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2))
471
s.addConstraint(Sketcher.Constraint('DistanceY',14,1,10,1,h2))
472
s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol))
473
s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol))
474
s.addConstraint(Sketcher.Constraint('DistanceX',10,1,6,1,tol))
475
s.addConstraint(Sketcher.Constraint('DistanceY',10,1,6,1,tol))
477
s.renameConstraint(39,'Frame5')
478
s.renameConstraint(40,'Frame6')
479
s.renameConstraint(42,'Frame7')
480
s.renameConstraint(41,'Frame8')
484
wp.extend(["InnerFrame","Frame","Wire2,Wire3,Edge8,Mode1",fw,str(o2)+"+V"])
485
wp.extend(["InnerGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"])
487
elif windowtype == "Opening only":
491
p2 = Vector(width,0,0)
492
p3 = Vector(width,height,0)
493
p4 = Vector(0,height,0)
494
addRectangle(s,p1,p2,p3,p4)
495
s.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1))
496
s.addConstraint(Sketcher.Constraint('DistanceX',0,width))
497
s.addConstraint(Sketcher.Constraint('DistanceY',1,height))
498
s.renameConstraint(9,'Width')
499
s.renameConstraint(10,'Height')
503
if windowtype in WindowPresets:
505
default = makeSketch(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2)
506
FreeCAD.ActiveDocument.recompute()
509
default[0].Placement = placement
510
FreeCAD.ActiveDocument.recompute()
511
obj = Arch.makeWindow(default[0],width,height,default[1])
512
obj.Preset = WindowPresets.index(windowtype)+1
515
obj.Placement = FreeCAD.Placement()
516
if "door" in windowtype.lower():
518
obj.Label = translate("Arch","Door")
519
elif "opening" in windowtype.lower():
520
obj.IfcType = "Opening Element"
521
obj.Label = translate("Arch","Opening")
522
FreeCAD.ActiveDocument.recompute()
525
print("Arch: Unknown window type")