Newer
Older
bl_info = {
"name": "Window Generator 2",
"version": (2, 0),
"blender": (2, 6, 3),
"api": 33333,
"location": "View3D > Add > Mesh > Say3D",
"warning": "",
"wiki_url": "",
"tracker_url": "",
"category": "Add Mesh"}
import bpy
from bpy.props import *
from math import pi, sin, cos, sqrt
def MAT(AD,R,G,B):
if AD not in bpy.data.materials:
mtl=bpy.data.materials.new(AD)
mtl.diffuse_color = ([R,G,B])
mtl.diffuse_shader = 'LAMBERT'
mtl.diffuse_intensity = 1.0
def Fitil(vr,fc,X,Z,x,y,z,zz,xx):
k3=z*2
vr.extend([[X[x ]+xx,-z+zz,Z[y ]+xx],[X[x ]+xx+k3,-z+zz,Z[y ]+xx+k3],[X[x ]+xx+k3,z+zz,Z[y ]+xx+k3],[X[x ]+xx,z+zz,Z[y ]+xx]])
vr.extend([[X[x ]+xx,-z+zz,Z[y+1]-xx],[X[x ]+xx+k3,-z+zz,Z[y+1]-xx-k3],[X[x ]+xx+k3,z+zz,Z[y+1]-xx-k3],[X[x ]+xx,z+zz,Z[y+1]-xx]])
vr.extend([[X[x+1]-xx,-z+zz,Z[y+1]-xx],[X[x+1]-xx-k3,-z+zz,Z[y+1]-xx-k3],[X[x+1]-xx-k3,z+zz,Z[y+1]-xx-k3],[X[x+1]-xx,z+zz,Z[y+1]-xx]])
vr.extend([[X[x+1]-xx,-z+zz,Z[y ]+xx],[X[x+1]-xx-k3,-z+zz,Z[y ]+xx+k3],[X[x+1]-xx-k3,z+zz,Z[y ]+xx+k3],[X[x+1]-xx,z+zz,Z[y ]+xx]])
n=len(vr)
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2]])
fc.extend([[n- 4,n- 3,n-15,n-16],[n- 3,n- 2,n-14,n-15],[n- 2,n- 1,n-13,n-14]])
z=0.005
vr.extend([[X[x]+xx+k3,-z+zz,Z[y]+xx+k3],[X[x]+xx+k3,-z+zz,Z[y+1]-xx-k3],[X[x+1]-xx-k3,-z+zz,Z[y+1]-xx-k3],[X[x+1]-xx-k3,-z+zz,Z[y]+xx+k3]])
vr.extend([[X[x]+xx+k3, z+zz,Z[y]+xx+k3],[X[x]+xx+k3, z+zz,Z[y+1]-xx-k3],[X[x+1]-xx-k3, z+zz,Z[y+1]-xx-k3],[X[x+1]-xx-k3, z+zz,Z[y]+xx+k3]])
fc.extend([[n+1,n+0,n+3,n+2],[n+4,n+5,n+6,n+7]])
def Kapak(vr,fc,X,Z,x,y,z,zz):
k2=z*2
vr.extend([[X[x ],-z+zz,Z[y ]],[X[x ]+k2,-z+zz,Z[y ]+k2],[X[x ]+k2,z+zz,Z[y ]+k2],[X[x ],z+zz,Z[y ]]])
vr.extend([[X[x ],-z+zz,Z[y+1]],[X[x ]+k2,-z+zz,Z[y+1]-k2],[X[x ]+k2,z+zz,Z[y+1]-k2],[X[x ],z+zz,Z[y+1]]])
vr.extend([[X[x+1],-z+zz,Z[y+1]],[X[x+1]-k2,-z+zz,Z[y+1]-k2],[X[x+1]-k2,z+zz,Z[y+1]-k2],[X[x+1],z+zz,Z[y+1]]])
vr.extend([[X[x+1],-z+zz,Z[y ]],[X[x+1]-k2,-z+zz,Z[y ]+k2],[X[x+1]-k2,z+zz,Z[y ]+k2],[X[x+1],z+zz,Z[y ]]])
n=len(vr)
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10],[n-13,n-16,n-12,n- 9]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6],[n- 9,n-12,n- 8,n- 5]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2],[n- 5,n- 8,n- 4,n- 1]])
fc.extend([[n- 4,n- 3,n-15,n-16],[n- 3,n- 2,n-14,n-15],[n- 2,n- 1,n-13,n-14],[n- 1,n- 4,n-16,n-13]])
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
def Prs(s):
if s.prs=='1':
s.gen=3;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=190;s.mr=True
s.gnx0= 60;s.gnx1= 110;s.gnx2= 60
s.k00 =True;s.k01 =False;s.k02 =True
if s.prs=='2':
s.gen=3;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=190;s.mr=True
s.gnx0= 60;s.gnx1= 60;s.gnx2= 60
s.k00 =True;s.k01 =False;s.k02 =True
if s.prs=='3':
s.gen=3;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=190;s.mr=True
s.gnx0= 55;s.gnx1= 50;s.gnx2= 55
s.k00 =True;s.k01 =False;s.k02 =True
if s.prs=='4':
s.gen=3;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=150;s.mr=True
s.gnx0= 55;s.gnx1= 50;s.gnx2= 55
s.k00 =True;s.k01 =False;s.k02 =True
if s.prs=='5':
s.gen=3;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=150;s.mr=True
s.gnx0= 50;s.gnx1= 40;s.gnx2= 50
s.k00 =True;s.k01 =False;s.k02 =True
if s.prs=='6':
s.gen=1;s.yuk=1;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=40;s.mr=True
s.gnx0=40
s.k00 =False
if s.prs=='7':
s.gen=1;s.yuk=2;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=195;s.gny1=40
s.gnx0=70
s.k00 =True;s.k10 =False
s.mr=False
if s.prs=='8':
s.gen=1;s.yuk=2;s.kl1=5;s.kl2=5;s.fk=2
s.gny0=180;s.gny1=35
s.gnx0=70
s.k00 =True;s.k10 =False
s.mr=False
def add_object(self, context):
fc=[];vr=[];kx=[]
mx=self.gen;my=self.yuk;k1=self.kl1/100;y=my*4+4;k2=self.kl2/100;k3=self.fk/200;fr=(k1+k2)*0.5-0.01
RES=self.RES
u=self.kl1/100;X=[0,round(u,2)]
if mx> 0:u+=self.gnx0 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 1:u+=self.gnx1 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 2:u+=self.gnx2 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 3:u+=self.gnx3 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 4:u+=self.gnx4 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 5:u+=self.gnx5 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 6:u+=self.gnx6 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
if mx> 7:u+=self.gnx7 /100;X.append(round(u,2));u+=k2;X.append(round(u,2))
X[-1]=X[-2]+k1
u=self.kl1/100;Z=[0,round(u,2)]
if my> 0:u+=self.gny0 /100;Z.append(round(u,2));u+=k2;Z.append(round(u,2))
if my> 1:u+=self.gny1 /100;Z.append(round(u,2));u+=k2;Z.append(round(u,2))
if my> 2:u+=self.gny2 /100;Z.append(round(u,2));u+=k2;Z.append(round(u,2))
if my> 3:u+=self.gny3 /100;Z.append(round(u,2));u+=k2;Z.append(round(u,2))
if my> 4:u+=self.gny4 /100;Z.append(round(u,2));u+=k2;Z.append(round(u,2))
Z[-1]=Z[-2]+k1
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
u = X[-1]/2
for i in range(0,len(X)):X[i]-=u
kx=[[self.k00,self.k10,self.k20,self.k30,self.k40],
[self.k01,self.k11,self.k21,self.k31,self.k41],
[self.k02,self.k12,self.k22,self.k32,self.k42],
[self.k03,self.k13,self.k23,self.k33,self.k43],
[self.k04,self.k14,self.k24,self.k34,self.k44],
[self.k05,self.k15,self.k25,self.k35,self.k45],
[self.k06,self.k16,self.k26,self.k36,self.k46],
[self.k07,self.k17,self.k27,self.k37,self.k47]]
cam=[];mer=[];ftl=[];SM=[]
#VERTICES ------------------------
vr.extend([[X[0],-k1/2,Z[0]],[X[0],k1/2,Z[0]]])
for x in range(1,len(X)-1):vr.extend([[X[x],-k1/2,Z[1]],[X[x], k1/2,Z[1]]])
vr.extend([[X[-1],-k1/2,Z[0]],[X[-1], k1/2,Z[0]]])
for z in range(2,len(Z)-2,2):
for x in range(0,len(X)):vr.extend([[X[x],-k1/2,Z[z]],[X[x], k1/2,Z[z]]])
for x in range(0,len(X)):vr.extend([[X[x],-k1/2,Z[z+1]],[X[x], k1/2,Z[z+1]]])
z=len(Z)-2
vr.extend([[X[0],-k1/2,Z[z+1]],[X[0], k1/2,Z[z+1]]])
ALT=[];UST=[len(vr)-2,len(vr)-1]
for x in range(1,len(X)-1):
vr.extend([[X[x],-k1/2,Z[z]],[X[x], k1/2,Z[z]]])
ALT.extend([len(vr)-2,len(vr)-1])
vr.extend([[X[-1],-k1/2,Z[z+1]],[X[-1],k1/2,Z[z+1]]])
SON=[len(vr)-2,len(vr)-1]
#FACES ---------------------------
fc.append([0,1,3+mx*4,2+mx*4])
FB=[0];FR=[1]
for i in range(0,mx*4,4):
fc.append([i+3,i+2,i+4,i+5])
FB.extend([i+2,i+4])
FR.extend([i+3,i+5])
FR.append(3+mx*4);FB.append(2+mx*4)
FB.reverse()
fc.extend([FB,FR])
#Yatay
Y=(mx*4+4);V=mx*4+2
for z in range(0,(my-1)*Y*2,Y*2):
fc.extend([[z+Y+1,z+Y,z+Y+4+mx*4,z+Y+5+mx*4],[z+Y+V,z+Y+V+1,z+Y+V+5+mx*4,z+Y+V+4+mx*4]])
for i in range(0,mx*4+2,2):fc.extend([[z+i+Y+0,z+i+Y+2,z+i+Y+V+4,z+i+Y+V+2],[z+i+Y +3,z+i+Y +1,z+i+Y+V+3,z+i+Y+V+5]])
for i in range(0,mx*4-3,4):fc.extend([[z+i+Y+2,z+i+Y+3,z+i+Y +5,z+i+Y +4],[z+i+Y+V+5,z+i+Y+V+4,z+i+Y+V+6,z+i+Y+V+7]])
#Dikey
for Y in range(0,my):
z=Y*(mx*4+4)*2
for i in range(0,mx*4+2,4):fc.extend([[z+i+1,z+i+0,z+i+V+2,z+i+V+3],[z+i+3,z+i+1,z+i+V+3,z+i+V+5],[z+i+2,z+i+3,z+i+V+5,z+i+V+4],[z+i+0,z+i+2,z+i+V+4,z+i+V+2]])
#Fitil-------------------
if self.UST=='1':y1=my
else: y1=my-1
for y in range(0,y1):
for x in range(0,mx):
if kx[x][y]==True:
Kapak(vr,fc,X,Z,x*2+1,y*2+1,k2/2,(k1+k2)*0.5-0.01)
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,(k1+k2)*0.5-0.01,k2)
else:
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,0,0)
m=len(fc);cam.extend([m-1,m-2])
ftl.extend([m-3,m-4,m-5,m-6,m-7,m-8,m-9,m-10,m-11,m-12,m-13,m-14])
#-----------------------------------------------------
if self.UST=='1':#Duz
fc.append([UST[1],UST[0],SON[0],SON[1]])
for i in range(0,mx*4,4):
fc.append([ALT[i],ALT[i+1],ALT[i+3],ALT[i+2]])
ON=[UST[0]]
AR=[UST[1]]
for i in range(0,len(ALT)-1,2):
ON.append(ALT[i ])
AR.append(ALT[i+1])
ON.append(SON[0])
fc.append(ON)
AR.append(SON[1])
AR.reverse();fc.append(AR)
elif self.UST=='2':#Yay
if self.DT2=='1':
H=self.VL1/100
if H<0.01:H= 0.01;self.VL1=1
elif H >= u:H=u-0.01;self.VL1=H*100
h=sqrt(u**2+H**2)/2
e=h*(u/H)
C=sqrt(h**2+e**2)
T1=Z[-1]-H
elif self.DT2=='2':
C=self.VL2/100
if C<u+0.01:
C=u+0.01
self.VL2=C*100
T1=sqrt(C**2-u**2)+Z[-1]-C
R=C-k1;F=R-k3*2
K=R-k2;E=K-k3*2
z=Z[-1]-C
vr[UST[0]][2]=T1;vr[UST[1]][2]=T1
vr[SON[0]][2]=T1;vr[SON[1]][2]=T1
for i in ALT:vr[i][2]=sqrt(R**2-vr[i][0]**2)+z
ON=[SON[0]];U1=[]
for i in range(0,RES):
A=i*pi/RES;x=cos(A)*C
if x>-u and x<u:
vr.append([x,-k1/2,sin(A)*C+z]);ON.append(len(vr)-1)
U1.extend(ON);U1.append(UST[0])
ON.extend([UST[0],ALT[0]])
AR=[];D1=[];D2=[]
for i in range(0,len(ALT)-2,4):
x1=vr[ALT[i+0]][0]; x2=vr[ALT[i+2]][0]
ON.append(ALT[i+0]);AR.append(ALT[i+1])
T1=[ALT[i+0]]; T2=[ALT[i+1]]
for j in range(0,RES):
A=j*pi/RES;x=-cos(A)*R
if x1<x and x<x2:
vr.extend([[x,-k1/2,sin(A)*R+z],[x,k1/2,sin(A)*R+z]])
ON.append(len(vr)-2);AR.append(len(vr)-1)
T1.append(len(vr)-2);T2.append(len(vr)-1)
ON.append(ALT[i+2]);AR.append(ALT[i+3])
T1.append(ALT[i+2]);T2.append(ALT[i+3])
D1.append(T1); D2.append(T2)
AR.append(SON[1])
U2=[SON[1]]
for i in range(0,RES):
A=i*pi/RES;x=cos(A)*C
if x>-u and x<u:
vr.append([x,k1/2,sin(A)*C+z])
AR.append(len(vr)-1);U2.append(len(vr)-1)
AR.append(UST[1])
U2.append(UST[1])
AR.reverse()
fc.extend([ON,AR])
for i in range(0,len(U1)-1):fc.append([U1[i+1],U1[i],U2[i],U2[i+1]]);SM.append(len(fc)-1)
for A in range(0,mx):
for i in range(0,len(D1[A])-1):
fc.append([D1[A][i+1],D1[A][i],D2[A][i],D2[A][i+1]]);SM.append(len(fc)-1)
y=my-1
for x in range(0,mx):
if kx[x][y]==True:
fr=(k1+k2)*0.5-0.01;ek=k2
R=C-k1;K=R-k2
x1=X[x*2+1];x2=X[x*2+2]
vr.extend([[x2,fr-k2/2,z+1 ],[x2-k2,fr-k2/2,z+1 ],[x2-k2,fr+k2/2,z+1 ],[x2,fr+k2/2,z+1 ]])
vr.extend([[x2,fr-k2/2,Z[-3]],[x2-k2,fr-k2/2,Z[-3]+k2],[x2-k2,fr+k2/2,Z[-3]+k2],[x2,fr+k2/2,Z[-3]]])
vr.extend([[x1,fr-k2/2,Z[-3]],[x1+k2,fr-k2/2,Z[-3]+k2],[x1+k2,fr+k2/2,Z[-3]+k2],[x1,fr+k2/2,Z[-3]]])
vr.extend([[x1,fr-k2/2,z+1 ],[x1+k2,fr-k2/2,z+1 ],[x1+k2,fr+k2/2,z+1 ],[x1,fr+k2/2,z+1 ]])
n=len(vr)
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10],[n-13,n-16,n-12,n- 9]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6],[n- 9,n-12,n- 8,n- 5]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2],[n- 5,n- 8,n- 4,n- 1]])
ALT=[n-16,n-15,n-14,n-13,n-4,n-3,n-2,n-1]
vr[ALT[0]][2]=sqrt(R**2-vr[ALT[0]][0]**2)+z;vr[ALT[1]][2]=sqrt(K**2-vr[ALT[1]][0]**2)+z
vr[ALT[2]][2]=sqrt(K**2-vr[ALT[2]][0]**2)+z;vr[ALT[3]][2]=sqrt(R**2-vr[ALT[3]][0]**2)+z
vr[ALT[4]][2]=sqrt(R**2-vr[ALT[4]][0]**2)+z;vr[ALT[5]][2]=sqrt(K**2-vr[ALT[5]][0]**2)+z
vr[ALT[6]][2]=sqrt(K**2-vr[ALT[6]][0]**2)+z;vr[ALT[7]][2]=sqrt(R**2-vr[ALT[7]][0]**2)+z
D1=[];D2=[];T1=[];T2=[]
for i in range(0,RES):
A =i*pi/RES;y1=cos(A)*R;y2=-cos(A)*K
if x1 <y1 and y1<x2: vr.extend([[y1,fr-k2/2,sin(A)*R+z],[y1,fr+k2/2,sin(A)*R+z]]);T1.append(len(vr)-2);T2.append(len(vr)-1)
if x1+k2<y2 and y2<x2-k2:vr.extend([[y2,fr-k2/2,sin(A)*K+z],[y2,fr+k2/2,sin(A)*K+z]]);D1.append(len(vr)-2);D2.append(len(vr)-1)
ON=[ALT[1],ALT[0]];ON.extend(T1);ON.extend([ALT[4],ALT[5]]);ON.extend(D1)
AR=[ALT[2],ALT[3]];AR.extend(T2);AR.extend([ALT[7],ALT[6]]);AR.extend(D2);AR.reverse()
if D1==[] and T1==[]:fc.extend([ON,AR,[ALT[5],ALT[6],ALT[2],ALT[1]],[ALT[7],ALT[4],ALT[0],ALT[3]]]); m=len(fc);SM.extend([m-1,m-2])
elif D1==[] and T1!=[]:fc.extend([ON,AR,[ALT[5],ALT[6],ALT[2],ALT[1]],[ALT[7],ALT[4],T1[-1],T2[-1]],[ALT[0],ALT[3],T2[0],T1[0]]]); m=len(fc);SM.extend([m-1,m-2,m-3])
elif D1!=[] and T1==[]:fc.extend([ON,AR,[ALT[5],ALT[6],D2[0],D1[0]],[ALT[2],ALT[1],D1[-1],D2[-1]],[ALT[7],ALT[4],ALT[0],ALT[3]]]); m=len(fc);SM.extend([m-1,m-2,m-3])
else: fc.extend([ON,AR,[ALT[5],ALT[6],D2[0],D1[0]],[ALT[2],ALT[1],D1[-1],D2[-1]],[ALT[7],ALT[4],T1[-1],T2[-1]],[ALT[0],ALT[3],T2[0],T1[0]]]);m=len(fc);SM.extend([m-1,m-2,m-3,m-4])
for i in range(0,len(D1)-1):fc.append([D1[i+1],D1[i],D2[i],D2[i+1]]);SM.append(len(fc)-1)
for i in range(0,len(T1)-1):fc.append([T1[i+1],T1[i],T2[i],T2[i+1]]);SM.append(len(fc)-1)
R=C-k1-k2;K=R-k3*2
else:
fr=0;ek=0
R=C-k1;K=R-k3*2
#Fitil
x1=X[x*2+1]+ek;x2=X[x*2+2]-ek
vr.extend([[x2,fr-k3,z+1 ],[x2-k3*2,fr-k3,z+1 ],[x2-k3*2,fr+k3,z+1 ],[x2,fr+k3,z+1 ]])
vr.extend([[x2,fr-k3,Z[-3]+ek],[x2-k3*2,fr-k3,Z[-3]+ek+k3*2],[x2-k3*2,fr+k3,Z[-3]+ek+k3*2],[x2,fr+k3,Z[-3]+ek]])
vr.extend([[x1,fr-k3,Z[-3]+ek],[x1+k3*2,fr-k3,Z[-3]+ek+k3*2],[x1+k3*2,fr+k3,Z[-3]+ek+k3*2],[x1,fr+k3,Z[-3]+ek]])
vr.extend([[x1,fr-k3,z+1 ],[x1+k3*2,fr-k3,z+1 ],[x1+k3*2,fr+k3,z+1 ],[x1,fr+k3,z+1 ]])
n=len(vr)
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2]])
m=len(fc);ftl.extend([m-1,m-2,m-3,m-4,m-5,m-6,m-7,m-8,m-9])
ALT=[n-16,n-15,n-14,n-13,n-4,n-3,n-2,n-1]
vr[ALT[0]][2]=sqrt(R**2-vr[ALT[0]][0]**2)+z;vr[ALT[1]][2]=sqrt(K**2-vr[ALT[1]][0]**2)+z
vr[ALT[2]][2]=sqrt(K**2-vr[ALT[2]][0]**2)+z;vr[ALT[3]][2]=sqrt(R**2-vr[ALT[3]][0]**2)+z
vr[ALT[4]][2]=sqrt(R**2-vr[ALT[4]][0]**2)+z;vr[ALT[5]][2]=sqrt(K**2-vr[ALT[5]][0]**2)+z
vr[ALT[6]][2]=sqrt(K**2-vr[ALT[6]][0]**2)+z;vr[ALT[7]][2]=sqrt(R**2-vr[ALT[7]][0]**2)+z
D1=[];D2=[];T1=[];T2=[]
for i in range(0,RES):
A =i*pi/RES;y1=cos(A)*R;y2=-cos(A)*K
if x1 <y1 and y1<x2: vr.extend([[y1,fr-k3,sin(A)*R+z],[y1,fr+k3,sin(A)*R+z]]);T1.append(len(vr)-2);T2.append(len(vr)-1);ftl.extend([len(fc)-1,len(fc)-2])
if x1+k3*2<y2 and y2<x2-k3*2:vr.extend([[y2,fr-k3,sin(A)*K+z],[y2,fr+k3,sin(A)*K+z]]);D1.append(len(vr)-2);D2.append(len(vr)-1);ftl.extend([len(fc)-1,len(fc)-2])
ON=[ALT[1],ALT[0]];ON.extend(T1);ON.extend([ALT[4],ALT[5]]);ON.extend(D1)
AR=[ALT[2],ALT[3]];AR.extend(T2);AR.extend([ALT[7],ALT[6]]);AR.extend(D2);AR.reverse()
if D1==[]:fc.extend([ON,AR,[ALT[5],ALT[6],ALT[2],ALT[1]]]); m=len(fc);ftl.extend([m-1,m-2,m-3 ]);SM.extend([m-1 ])
else: fc.extend([ON,AR,[ALT[5],ALT[6],D2[0],D1[0]],[ALT[2],ALT[1],D1[-1],D2[-1]]]);m=len(fc);ftl.extend([m-1,m-2,m-3,m-4]);SM.extend([m-1,m-2])
for i in range(0,len(D1)-1):fc.append([D1[i+1],D1[i],D2[i],D2[i+1]]);ftl.append(len(fc)-1);SM.append(len(fc)-1)
#Cam
x1=X[x*2+1]+ek+k3*2;x2=X[x*2+2]-ek-k3*2
ON=[];AR=[]
for i in range(0,RES):
A= i*pi/RES;y1=-cos(A)*K
if x1<y1 and y1<x2:
vr.extend([[y1,fr-0.005,sin(A)*K+z],[y1,fr+0.005,sin(A)*K+z]])
n=len(vr);ON.append(n-1);AR.append(n-2)
vr.extend([[x1,fr-0.005,sqrt(K**2-x1**2)+z],[x1,fr+0.005,sqrt(K**2-x1**2)+z]])
vr.extend([[x1,fr-0.005,Z[-3]+ek+k3*2 ],[x1,fr+0.005,Z[-3]+ek+k3*2 ]])
vr.extend([[x2,fr-0.005,Z[-3]+ek+k3*2 ],[x2,fr+0.005,Z[-3]+ek+k3*2 ]])
vr.extend([[x2,fr-0.005,sqrt(K**2-x2**2)+z],[x2,fr+0.005,sqrt(K**2-x2**2)+z]])
n=len(vr);ON.extend([n-1,n-3,n-5,n-7]);AR.extend([n-2,n-4,n-6,n-8])
fc.append(ON);AR.reverse();fc.append(AR)
m=len(fc);cam.extend([m-1,m-2])
elif self.UST=='3':#Egri
if self.DT3=='1':H=(self.VL1/200)/u
elif self.DT3=='2':H=self.VL3/100
elif self.DT3=='3':H=sin(self.VL4*pi/180)/cos(self.VL4*pi/180)
z=sqrt(k1**2+(k1*H)**2)
k=sqrt(k2**2+(k2*H)**2)
f=sqrt(k3**2+(k3*H)**2)*2
vr[UST[0]][2]=Z[-1]+vr[UST[0]][0]*H
vr[UST[1]][2]=Z[-1]+vr[UST[1]][0]*H
for i in ALT:
vr[i][2] =Z[-1]+vr[i][0]*H-z
vr[SON[0]][2]=Z[-1]+vr[SON[0]][0]*H
vr[SON[1]][2]=Z[-1]+vr[SON[1]][0]*H
fc.append([UST[1],UST[0], SON[0],SON[1] ])
for i in range(0,mx*4,4):
fc.append([ALT[i],ALT[i+1],ALT[i+3],ALT[i+2]])
ON=[UST[0]]
AR=[UST[1]]
for i in range(0,len(ALT)-1,2):
ON.append(ALT[i ])
AR.append(ALT[i+1])
ON.append(SON[0])
fc.append(ON)
AR.append(SON[1])
AR.reverse();fc.append(AR)
y=my-1
for x in range(0,mx):
if kx[x][y]==True:
Kapak(vr,fc,X,Z,x*2+1,y*2+1,k2/2,(k1+k2)*0.5-0.01)
n=len(vr)
vr[n- 5][2]=Z[-1]+vr[n- 5][0]*H-z
vr[n- 6][2]=Z[-1]+vr[n- 6][0]*H-z-k
vr[n- 7][2]=Z[-1]+vr[n- 7][0]*H-z-k
vr[n- 8][2]=Z[-1]+vr[n- 8][0]*H-z
vr[n- 9][2]=Z[-1]+vr[n- 9][0]*H-z
vr[n-10][2]=Z[-1]+vr[n-10][0]*H-z-k
vr[n-11][2]=Z[-1]+vr[n-11][0]*H-z-k
vr[n-12][2]=Z[-1]+vr[n-12][0]*H-z
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,(k1+k2)*0.5-0.01,k2)
vr[n- 2][2]=Z[-1]+vr[n- 2][0]*H-z-k-f
vr[n- 3][2]=Z[-1]+vr[n- 3][0]*H-z-k-f
vr[n- 6][2]=Z[-1]+vr[n- 6][0]*H-z-k-f
vr[n- 7][2]=Z[-1]+vr[n- 7][0]*H-z-k-f
vr[n-13][2]=Z[-1]+vr[n-13][0]*H-z-k
vr[n-14][2]=Z[-1]+vr[n-14][0]*H-z-k-f
vr[n-15][2]=Z[-1]+vr[n-15][0]*H-z-k-f
vr[n-16][2]=Z[-1]+vr[n-16][0]*H-z-k
vr[n-17][2]=Z[-1]+vr[n-17][0]*H-z-k
vr[n-18][2]=Z[-1]+vr[n-18][0]*H-z-k-f
vr[n-19][2]=Z[-1]+vr[n-19][0]*H-z-k-f
vr[n-20][2]=Z[-1]+vr[n-20][0]*H-z-k
else:
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,0,0)
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
vr[n-2][2]=Z[-1]+vr[n-2][0]*H-z-f
vr[n-3][2]=Z[-1]+vr[n-3][0]*H-z-f
vr[n-6][2]=Z[-1]+vr[n-6][0]*H-z-f
vr[n-7][2]=Z[-1]+vr[n-7][0]*H-z-f
vr[n-13][2]=Z[-1]+vr[n-13][0]*H-z
vr[n-14][2]=Z[-1]+vr[n-14][0]*H-z-f
vr[n-15][2]=Z[-1]+vr[n-15][0]*H-z-f
vr[n-16][2]=Z[-1]+vr[n-16][0]*H-z
vr[n-17][2]=Z[-1]+vr[n-17][0]*H-z
vr[n-18][2]=Z[-1]+vr[n-18][0]*H-z-f
vr[n-19][2]=Z[-1]+vr[n-19][0]*H-z-f
vr[n-20][2]=Z[-1]+vr[n-20][0]*H-z
m=len(fc);cam.extend([m-1,m-2])
ftl.extend([m-3,m-4,m-5,m-6,m-7,m-8,m-9,m-10,m-11,m-12,m-13,m-14])
elif self.UST=='4':#Ucgen
if self.DT3=='1':H=(self.VL1/100)/u
elif self.DT3=='2':H=self.VL3/100
elif self.DT3=='3':H=sin(self.VL4*pi/180)/cos(self.VL4*pi/180)
z=sqrt(k1**2+(k1*H)**2)
k=sqrt(k2**2+(k2*H)**2)
f=sqrt(k3**2+(k3*H)**2)*2
vr[UST[0]][2]=Z[-1]+vr[UST[0]][0]*H
vr[UST[1]][2]=Z[-1]+vr[UST[1]][0]*H
for i in ALT:
vr[i][2] =Z[-1]-abs(vr[i][0])*H-z
vr[SON[0]][2]=Z[-1]-vr[SON[0]][0]*H
vr[SON[1]][2]=Z[-1]-vr[SON[1]][0]*H
vr.extend([[0,-k1/2,Z[-1]],[0, k1/2,Z[-1]]])
x = 0
for j in range(2,len(ALT)-2,4):
if vr[ALT[j]][0]<0 and 0<vr[ALT[j+2]][0]:x=1
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
fc.extend([[UST[1],UST[0],n-2,n-1],[n-1,n-2,SON[0],SON[1]]])
ON=[SON[0],n-2,UST[0]];AR=[SON[1],n-1,UST[1]]
if x==0:vr.extend([[0,-k1/2,Z[-1]-z],[0,k1/2,Z[-1]-z]])
for j in range(0,len(ALT)-2,4):
if vr[ALT[j]][0]<0 and vr[ALT[j+2]][0]<0:
fc.append([ALT[j],ALT[j+1],ALT[j+3],ALT[j+2]])
ON.extend([ALT[j ],ALT[j+2]])
AR.extend([ALT[j+1],ALT[j+3]])
elif vr[ALT[j]][0]>0 and vr[ALT[j+2]][0]>0:
fc.append([ALT[j],ALT[j+1],ALT[j+3],ALT[j+2]])
ON.extend([ALT[j ],ALT[j+2]])
AR.extend([ALT[j+1],ALT[j+3]])
else:
n=len(vr)
fc.extend([[ALT[j],ALT[j+1],n-1,n-2],[n-2,n-1,ALT[j+3],ALT[j+2]]])
ON.extend([ALT[j+0],n-2,ALT[j+2]])
AR.extend([ALT[j+1],n-1,ALT[j+3]])
fc.append(ON);AR.reverse();fc.append(AR)
y=my-1
for x in range(0,mx):
if vr[ALT[x*4]][0]<0 and vr[ALT[x*4+2]][0]<0:
if kx[x][y]==True:
Kapak(vr,fc,X,Z,x*2+1,y*2+1,k2/2,(k1+k2)*0.5-0.01)
n=len(vr)
vr[n- 5][2]=Z[-1]+vr[n- 5][0]*H-z
vr[n- 6][2]=Z[-1]+vr[n- 6][0]*H-z-k
vr[n- 7][2]=Z[-1]+vr[n- 7][0]*H-z-k
vr[n- 8][2]=Z[-1]+vr[n- 8][0]*H-z
vr[n- 9][2]=Z[-1]+vr[n- 9][0]*H-z
vr[n-10][2]=Z[-1]+vr[n-10][0]*H-z-k
vr[n-11][2]=Z[-1]+vr[n-11][0]*H-z-k
vr[n-12][2]=Z[-1]+vr[n-12][0]*H-z
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,(k1+k2)*0.5-0.01,k2)
n=len(vr)
vr[n- 2][2]=Z[-1]+vr[n- 2][0]*H-z-k-f
vr[n- 3][2]=Z[-1]+vr[n- 3][0]*H-z-k-f
vr[n- 6][2]=Z[-1]+vr[n- 6][0]*H-z-k-f
vr[n- 7][2]=Z[-1]+vr[n- 7][0]*H-z-k-f
vr[n-13][2]=Z[-1]+vr[n-13][0]*H-z-k
vr[n-14][2]=Z[-1]+vr[n-14][0]*H-z-k-f
vr[n-15][2]=Z[-1]+vr[n-15][0]*H-z-k-f
vr[n-16][2]=Z[-1]+vr[n-16][0]*H-z-k
vr[n-17][2]=Z[-1]+vr[n-17][0]*H-z-k
vr[n-18][2]=Z[-1]+vr[n-18][0]*H-z-k-f
vr[n-19][2]=Z[-1]+vr[n-19][0]*H-z-k-f
vr[n-20][2]=Z[-1]+vr[n-20][0]*H-z-k
else:
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,0,0)
n=len(vr)
vr[n-2][2]=Z[-1]+vr[n-2][0]*H-z-f
vr[n-3][2]=Z[-1]+vr[n-3][0]*H-z-f
vr[n-6][2]=Z[-1]+vr[n-6][0]*H-z-f
vr[n-7][2]=Z[-1]+vr[n-7][0]*H-z-f
vr[n-13][2]=Z[-1]+vr[n-13][0]*H-z
vr[n-14][2]=Z[-1]+vr[n-14][0]*H-z-f
vr[n-15][2]=Z[-1]+vr[n-15][0]*H-z-f
vr[n-16][2]=Z[-1]+vr[n-16][0]*H-z
vr[n-17][2]=Z[-1]+vr[n-17][0]*H-z
vr[n-18][2]=Z[-1]+vr[n-18][0]*H-z-f
vr[n-19][2]=Z[-1]+vr[n-19][0]*H-z-f
vr[n-20][2]=Z[-1]+vr[n-20][0]*H-z
m=len(fc);cam.extend([m-1,m-2])
ftl.extend([m-3,m-4,m-5,m-6,m-7,m-8,m-9,m-10,m-11,m-12,m-13,m-14])
elif vr[ALT[x*4]][0]>0 and vr[ALT[x*4+2]][0]>0:
if kx[x][y]==True:
Kapak(vr,fc,X,Z,x*2+1,y*2+1,k2/2,(k1+k2)*0.5-0.01)
n=len(vr)
vr[n- 5][2]=Z[-1]-vr[n- 5][0]*H-z
vr[n- 6][2]=Z[-1]-vr[n- 6][0]*H-z-k
vr[n- 7][2]=Z[-1]-vr[n- 7][0]*H-z-k
vr[n- 8][2]=Z[-1]-vr[n- 8][0]*H-z
vr[n- 9][2]=Z[-1]-vr[n- 9][0]*H-z
vr[n-10][2]=Z[-1]-vr[n-10][0]*H-z-k
vr[n-11][2]=Z[-1]-vr[n-11][0]*H-z-k
vr[n-12][2]=Z[-1]-vr[n-12][0]*H-z
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,(k1+k2)*0.5-0.01,k2)
n=len(vr)
vr[n- 2][2]=Z[-1]-vr[n- 2][0]*H-z-k-f
vr[n- 3][2]=Z[-1]-vr[n- 3][0]*H-z-k-f
vr[n- 6][2]=Z[-1]-vr[n- 6][0]*H-z-k-f
vr[n- 7][2]=Z[-1]-vr[n- 7][0]*H-z-k-f
vr[n-13][2]=Z[-1]-vr[n-13][0]*H-z-k
vr[n-14][2]=Z[-1]-vr[n-14][0]*H-z-k-f
vr[n-15][2]=Z[-1]-vr[n-15][0]*H-z-k-f
vr[n-16][2]=Z[-1]-vr[n-16][0]*H-z-k
vr[n-17][2]=Z[-1]-vr[n-17][0]*H-z-k
vr[n-18][2]=Z[-1]-vr[n-18][0]*H-z-k-f
vr[n-19][2]=Z[-1]-vr[n-19][0]*H-z-k-f
vr[n-20][2]=Z[-1]-vr[n-20][0]*H-z-k
else:
Fitil(vr,fc,X,Z,x*2+1,y*2+1,k3,0,0)
n=len(vr)
vr[n-2][2]=Z[-1]-vr[n-2][0]*H-z-f
vr[n-3][2]=Z[-1]-vr[n-3][0]*H-z-f
vr[n-6][2]=Z[-1]-vr[n-6][0]*H-z-f
vr[n-7][2]=Z[-1]-vr[n-7][0]*H-z-f
vr[n-13][2]=Z[-1]-vr[n-13][0]*H-z
vr[n-14][2]=Z[-1]-vr[n-14][0]*H-z-f
vr[n-15][2]=Z[-1]-vr[n-15][0]*H-z-f
vr[n-16][2]=Z[-1]-vr[n-16][0]*H-z
vr[n-17][2]=Z[-1]-vr[n-17][0]*H-z
vr[n-18][2]=Z[-1]-vr[n-18][0]*H-z-f
vr[n-19][2]=Z[-1]-vr[n-19][0]*H-z-f
vr[n-20][2]=Z[-1]-vr[n-20][0]*H-z
m=len(fc);cam.extend([m-1,m-2])
ftl.extend([m-3,m-4,m-5,m-6,m-7,m-8,m-9,m-10,m-11,m-12,m-13,m-14])
else:
k4=k3*2
if kx[x][y]==True:
zz=(k1+k2)*0.5-0.01
xx=X[x*2+1]
vr.extend([[xx,-k2/2+zz,Z[-3] ],[xx+k2,-k2/2+zz,Z[-3] +k2 ],[xx+k2,k2/2+zz,Z[-3] +k2 ],[xx,k2/2+zz,Z[-3] ]])
vr.extend([[xx,-k2/2+zz,Z[-1]+xx*H-z],[xx+k2,-k2/2+zz,Z[-1]+(xx+k2)*H-z-k],[xx+k2,k2/2+zz,Z[-1]+(xx+k2)*H-z-k],[xx,k2/2+zz,Z[-1]+xx*H-z]])
vr.extend([[ 0,-k2/2+zz,Z[-1] -z],[ 0,-k2/2+zz,Z[-1] -z-k],[ 0,k2/2+zz,Z[-1] -z-k],[ 0,k2/2+zz,Z[-1] -z]])
xx=X[x*2+2]
vr.extend([[xx,-k2/2+zz,Z[-1]-xx*H-z],[xx-k2,-k2/2+zz,Z[-1]-(xx-k2)*H-z-k],[xx-k2,k2/2+zz,Z[-1]-(xx-k2)*H-z-k],[xx,k2/2+zz,Z[-1]-xx*H-z]])
vr.extend([[xx,-k2/2+zz,Z[-3] ],[xx-k2,-k2/2+zz,Z[-3] +k2 ],[xx-k2,k2/2+zz,Z[-3] +k2 ],[xx,k2/2+zz,Z[-3] ]])
n=len(vr)
fc.extend([[n-20,n-19,n-15,n-16],[n-19,n-18,n-14,n-15],[n-18,n-17,n-13,n-14],[n-17,n-20,n-16,n-13]])
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10],[n-13,n-16,n-12,n- 9]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6],[n- 9,n-12,n- 8,n- 5]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2],[n- 5,n- 8,n- 4,n- 1]])
fc.extend([[n- 4,n- 3,n-19,n-20],[n- 3,n- 2,n-18,n-19],[n- 2,n- 1,n-17,n-18],[n- 1,n- 4,n-20,n-17]])
xx=X[x*2+1]
vr.extend([[xx +k2,-k3+zz,Z[-3] +k2 ],[xx+k4+k2,-k3+zz,Z[-3] +k2+k4 ],[xx+k4+k2, k3+zz,Z[-3] +k2+k4 ],[xx +k2, k3+zz,Z[-3] +k2 ]])
vr.extend([[xx +k2,-k3+zz,Z[-1]+(xx+k2 )*H-z-k ],[xx+k4+k2,-k3+zz,Z[-1]+(xx+k2+k4)*H-z-k-f],[xx+k4+k2, k3+zz,Z[-1]+(xx+k2+k4)*H-z-k-f],[xx +k2, k3+zz,Z[-1]+(xx+k2 )*H-z-k ]])
vr.extend([[ 0,-k3+zz,Z[-1]-k -z],[ 0,-k3+zz,Z[-1]-k -z-f],[ 0,k3+zz,Z[-1]-k -z-f],[ 0,k3+zz,Z[-1]-k -z]])
xx=X[x*2+2]
vr.extend([[xx -k2,-k3+zz,Z[-1]-(xx-k2 )*H-z-k ],[xx-k4-k2,-k3+zz,Z[-1]-(xx-k2-k4)*H-z-k-f],[xx-k4-k2, k3+zz,Z[-1]-(xx-k2-k4)*H-z-k-f],[xx -k2, k3+zz,Z[-1]-(xx-k2 )*H-z-k ]])
vr.extend([[xx -k2,-k3+zz,Z[-3] +k2 ],[xx-k4-k2,-k3+zz,Z[-3] +k2+k4 ],[xx-k4-k2, k3+zz,Z[-3] +k2+k4 ],[xx -k2, k3+zz,Z[-3] +k2 ]])
n=len(vr)
fc.extend([[n-20,n-19,n-15,n-16],[n-19,n-18,n-14,n-15],[n-18,n-17,n-13,n-14]])
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2]])
fc.extend([[n- 4,n- 3,n-19,n-20],[n- 3,n- 2,n-18,n-19],[n- 2,n- 1,n-17,n-18]])
xx=X[x*2+1]
vr.extend([[xx+k4+k2,-k3+zz,Z[-3] +k2+k4 ],[xx+k4+k2, k3+zz,Z[-3] +k2+k4 ]])
vr.extend([[xx+k4+k2,-k3+zz,Z[-1]+(xx+k2+k4)*H-z-k-f],[xx+k4+k2, k3+zz,Z[-1]+(xx+k2+k4)*H-z-k-f]])
vr.extend([[ 0,-k3+zz,Z[-1]-k -z-f],[ 0,k3+zz,Z[-1]-k -z-f]])
xx=X[x*2+2]
vr.extend([[xx-k4-k2,-k3+zz,Z[-1]-(xx-k2-k4)*H-z-k-f],[xx-k4-k2, k3+zz,Z[-1]-(xx-k2-k4)*H-z-k-f]])
vr.extend([[xx-k4-k2,-k3+zz,Z[-3] +k2+k4 ],[xx-k4-k2, k3+zz,Z[-3] +k2+k4 ]])
fc.extend([[n+8,n+6,n+4,n+2,n+0],[n+1,n+3,n+5,n+7,n+9]])
else:
xx=X[x*2+1]
vr.extend([[xx,-k3,Z[-3] ],[xx+k4,-k3,Z[-3] +k4 ],[xx+k4,k3,Z[-3] +k4 ],[xx,k3,Z[-3] ]])
vr.extend([[xx,-k3,Z[-1]+xx*H-z],[xx+k4,-k3,Z[-1]+(xx+k4)*H-z-f],[xx+k4,k3,Z[-1]+(xx+k4)*H-z-f],[xx,k3,Z[-1]+xx*H-z]])
vr.extend([[ 0,-k3,Z[-1] -z],[ 0,-k3,Z[-1] -z-f],[ 0,k3,Z[-1] -z-f],[ 0,k3,Z[-1] -z]])
xx=X[x*2+2]
vr.extend([[xx,-k3,Z[-1]-xx*H-z],[xx-k4,-k3,Z[-1]-(xx-k4)*H-z-f],[xx-k4,k3,Z[-1]-(xx-k4)*H-z-f],[xx,k3,Z[-1]-xx*H-z]])
vr.extend([[xx,-k3,Z[-3] ],[xx-k4,-k3,Z[-3] +k4 ],[xx-k4,k3,Z[-3] +k4 ],[xx,k3,Z[-3] ]])
n=len(vr)
fc.extend([[n-20,n-19,n-15,n-16],[n-19,n-18,n-14,n-15],[n-18,n-17,n-13,n-14]])
fc.extend([[n-16,n-15,n-11,n-12],[n-15,n-14,n-10,n-11],[n-14,n-13,n- 9,n-10]])
fc.extend([[n-12,n-11,n- 7,n- 8],[n-11,n-10,n- 6,n- 7],[n-10,n- 9,n- 5,n- 6]])
fc.extend([[n- 8,n- 7,n- 3,n- 4],[n- 7,n- 6,n- 2,n- 3],[n- 6,n- 5,n- 1,n- 2]])
fc.extend([[n- 4,n- 3,n-19,n-20],[n- 3,n- 2,n-18,n-19],[n- 2,n- 1,n-17,n-18]])
xx=X[x*2+1]
vr.extend([[xx+k4,-0.005,Z[-3] +k4 ],[xx+k4,0.005,Z[-3] +k4 ]])
vr.extend([[xx+k4,-0.005,Z[-1]+(xx+k4)*H-z-f],[xx+k4,0.005,Z[-1]+(xx+k4)*H-z-f]])
vr.extend([[ 0,-0.005,Z[-1] -z-f],[ 0,0.005,Z[-1] -z-f]])
xx=X[x*2+2]
vr.extend([[xx-k4,-0.005,Z[-1]-(xx-k4)*H-z-f],[xx-k4,0.005,Z[-1]-(xx-k4)*H-z-f]])
vr.extend([[xx-k4,-0.005,Z[-3] +k4 ],[xx-k4,0.005,Z[-3] +k4 ]])
fc.extend([[n+8,n+6,n+4,n+2,n+0],[n+1,n+3,n+5,n+7,n+9]])
m=len(fc);cam.extend([m-1,m-2])
ftl.extend([m-3,m-4,m-5,m-6,m-7,m-8,m-9,m-10,m-11,m-12,m-13,m-14,m-15,m-16,m-17])
#Mermer
if self.mr==True:
mrh=-self.mr1/100;mrg= self.mr2/100
mdv=(self.mr3/200)+mrg;msv=-(mdv+(self.mr4/100))
vr.extend([[-u,mdv,0],[u,mdv,0],[-u,msv,0],[u,msv,0],[-u,mdv,mrh],[u,mdv,mrh],[-u,msv,mrh],[u,msv,mrh]])
n=len(vr);fc.extend([[n-1,n-2,n-4,n-3],[n-3,n-4,n-8,n-7],[n-6,n-5,n-7,n-8],[n-2,n-1,n-5,n-6],[n-4,n-2,n-6,n-8],[n-5,n-1,n-3,n-7]])
n=len(fc);mer.extend([n-1,n-2,n-3,n-4,n-5,n-6])
#OBJE -----------------------------------------------------------
mesh = bpy.data.meshes.new(name='Window')
mesh.from_pydata(vr,[],fc)
if self.mt1=='1':mesh.materials.append(MAT('PVC', 1.0,1.0,1.0))
elif self.mt1=='2':mesh.materials.append(MAT('Wood', 0.3,0.2,0.1))
elif self.mt1=='3':mesh.materials.append(MAT('Plastic',0.0,0.0,0.0))
if self.mt2=='1':mesh.materials.append(MAT('PVC', 1.0,1.0,1.0))
elif self.mt2=='2':mesh.materials.append(MAT('Wood', 0.3,0.2,0.1))
elif self.mt2=='3':mesh.materials.append(MAT('Plastic',0.0,0.0,0.0))
mesh.materials.append(MAT('Glass',0.5,0.8,1.0))
if self.mr==True:mesh.materials.append(MAT('Marble', 0.9,0.8,0.7))
for i in ftl:
mesh.polygons[i].material_index=1
mesh.polygons[i].material_index=2
for i in mer:
mesh.polygons[i].material_index=3
for i in SM:
mesh.polygons[i].use_smooth = 1
from bpy_extras import object_utils
return object_utils.object_data_add(context, mesh, operator=None)
if bpy.context.mode!='EDIT_MESH':
bpy.ops.object.editmode_toggle()
bpy.ops.object.editmode_toggle()
#----------------------------------------------------------------
class PENCERE(bpy.types.Operator):
bl_idname = "mesh.add_say3d_pencere2"
bl_description = "Window Generator"
bl_options = {'REGISTER', 'UNDO'}
prs = EnumProperty(items = (('1',"WINDOW 250X200",""),
('2',"WINDOW 200X200",""),
('3',"WINDOW 180X200",""),
('4',"WINDOW 180X160",""),
('5',"WINDOW 160X160",""),
('6',"WINDOW 50X50",""),
('7',"DOOR 80X250",""),
('8',"DOOR 80X230","")),
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
gen=IntProperty(name='H Count', min=1,max= 8, default= 3, description='Horizontal Panes')
yuk=IntProperty(name='V Count', min=1,max= 5, default= 1, description='Vertical Panes')
kl1=IntProperty(name='Outer Frame', min=2,max=50, default= 5, description='Outside Frame Thickness')
kl2=IntProperty(name='Risers', min=2,max=50, default= 5, description='Risers Width')
fk =IntProperty(name='Inner Frame', min=1,max=20, default= 2, description='Inside Frame Thickness')
mr=BoolProperty(name='Sill', default=True,description='Window Sill')
mr1=IntProperty(name='',min=1, max=20, default= 4, description='Height')
mr2=IntProperty(name='',min=0, max=20, default= 4, description='First Depth')
mr3=IntProperty(name='',min=1, max=50, default=20, description='Second Depth')
mr4=IntProperty(name='',min=0, max=50, default= 0, description='Extrusion for Jamb')
mt1=EnumProperty(items =(('1',"PVC",""),('2',"WOOD",""),('3',"Plastic","")),name="",default='1')
mt2=EnumProperty(items =(('1',"PVC",""),('2',"WOOD",""),('3',"Plastic","")),name="",default='3')
UST=EnumProperty(items =(('1',"Flat",""),('2',"Arch", ""),('3',"Inclined", ""),('4',"Triangle","")),name="Top",default='1')
DT2=EnumProperty(items =(('1',"Difference",""),('2',"Radius", "")), name="",default='1')
DT3=EnumProperty(items =(('1',"Difference",""),('2',"Incline %",""),('3',"Incline Angle","")),name="",default='1')
VL1=IntProperty( name='',min=-10000,max=10000,default=30)#Fark
VL2=IntProperty( name='',min= 1,max=10000,default=30)#Cap
VL3=IntProperty( name='',min= -100,max= 100,default=30)#Egim %
VL4=IntProperty( name='',min= -45,max= 45,default=30)#Egim Aci
RES=IntProperty(name='Resolution pi/',min=2,max=360,default=36)#Res
gnx0=IntProperty(name='',min=1,max=300,default= 60,description='1st Window Width')
gnx1=IntProperty(name='',min=1,max=300,default=110,description='2nd Window Width')
gnx2=IntProperty(name='',min=1,max=300,default= 60,description='3rd Window Width')
gnx3=IntProperty(name='',min=1,max=300,default= 60,description='4th Window Width')
gnx4=IntProperty(name='',min=1,max=300,default= 60,description='5th Window Width')
gnx5=IntProperty(name='',min=1,max=300,default= 60,description='6th Window Width')
gnx6=IntProperty(name='',min=1,max=300,default= 60,description='7th Window Width')
gnx7=IntProperty(name='',min=1,max=300,default= 60,description='8th Window Width')
gny0=IntProperty(name='',min=1,max=300,default=190,description='1st Row Height')
gny1=IntProperty(name='',min=1,max=300,default= 45,description='2nd Row Height')
gny2=IntProperty(name='',min=1,max=300,default= 45,description='3rd Row Height')
gny3=IntProperty(name='',min=1,max=300,default= 45,description='4th Row Height')
gny4=IntProperty(name='',min=1,max=300,default= 45,description='5th Row Height')
k00=BoolProperty(name='',default=True); k01=BoolProperty(name='',default=False)
k02=BoolProperty(name='',default=True); k03=BoolProperty(name='',default=False)
k04=BoolProperty(name='',default=False);k05=BoolProperty(name='',default=False)
k06=BoolProperty(name='',default=False);k07=BoolProperty(name='',default=False)
k10=BoolProperty(name='',default=False);k11=BoolProperty(name='',default=False)
k12=BoolProperty(name='',default=False);k13=BoolProperty(name='',default=False)
k14=BoolProperty(name='',default=False);k15=BoolProperty(name='',default=False)
k16=BoolProperty(name='',default=False);k17=BoolProperty(name='',default=False)
k20=BoolProperty(name='',default=False);k21=BoolProperty(name='',default=False)
k22=BoolProperty(name='',default=False);k23=BoolProperty(name='',default=False)
k24=BoolProperty(name='',default=False);k25=BoolProperty(name='',default=False)
k26=BoolProperty(name='',default=False);k27=BoolProperty(name='',default=False)
k30=BoolProperty(name='',default=False);k31=BoolProperty(name='',default=False)
k32=BoolProperty(name='',default=False);k33=BoolProperty(name='',default=False)
k34=BoolProperty(name='',default=False);k35=BoolProperty(name='',default=False)
k36=BoolProperty(name='',default=False);k37=BoolProperty(name='',default=False)
k40=BoolProperty(name='',default=False);k41=BoolProperty(name='',default=False)
k42=BoolProperty(name='',default=False);k43=BoolProperty(name='',default=False)
k44=BoolProperty(name='',default=False);k45=BoolProperty(name='',default=False)
k46=BoolProperty(name='',default=False);k47=BoolProperty(name='',default=False)
#--------------------------------------------------------------
def draw(self, context):
layout = self.layout
layout.prop(self,'prs')
box=layout.box()
box.prop(self,'gen');box.prop(self,'yuk')
box.prop(self,'kl1');box.prop(self,'kl2')
box.prop(self, 'fk')
box.prop(self,'mr')
if self.mr==True:
row=box.row();row.prop(self,'mr1');row.prop(self,'mr2')
row=box.row();row.prop(self,'mr3');row.prop(self,'mr4')
row =layout.row();row.label('Frame');row.label('Inner Frame')
row =layout.row();row.prop(self,'mt1');row.prop(self,'mt2')
box.prop(self,'UST')
if self.UST=='2':
row= box.row(); row.prop(self,'DT2')
if self.DT2=='1':row.prop(self,'VL1')
elif self.DT2=='2':row.prop(self,'VL2')
box.prop(self,'RES')
elif self.UST=='3':
row= box.row(); row.prop(self,'DT3')
if self.DT3=='1':row.prop(self,'VL1')
elif self.DT3=='2':row.prop(self,'VL3')
elif self.DT3=='3':row.prop(self,'VL4')
elif self.UST=='4':
row= box.row(); row.prop(self,'DT3')
if self.DT3=='1':row.prop(self,'VL1')
elif self.DT3=='2':row.prop(self,'VL3')
elif self.DT3=='3':row.prop(self,'VL4')
row =layout.row()
for i in range(0,self.gen):
row.prop(self,'gnx'+str(i))
for j in range(0,self.yuk):
row=layout.row()
row.prop(self,'gny'+str(self.yuk-j-1))
for i in range(0,self.gen):
row.prop(self,'k'+str(self.yuk-j-1)+str(i))
def execute(self, context):
if self.son!=self.prs:
Prs(self)
self.son=self.prs
add_object(self,context)
return {'FINISHED'}
# Registration
def menu_func_pencere(self, context):
self.layout.operator(PENCERE.bl_idname,text="Window",icon="MOD_LATTICE")
bpy.utils.register_class(PENCERE)
bpy.types.INFO_MT_mesh_add.append(menu_func_pencere)
bpy.utils.unregister_class(PENCERE)
bpy.types.INFO_MT_mesh_add.remove(menu_func_pencere)
if __name__ == '__main__':
register()