b36f285e904627539638fdbd48a50dc1a7ab680a
[blender.git] / release / scripts / bpymodules / defaultdoodads.py
1 # Default Doodad Set for Discombobulator
2 # by Evan J. Rosky, 2005
3 # GPL- http://www.gnu.org/copyleft/gpl.html
4 #
5 # $Id$
6 # --------------------------------------------------------------------------
7 # ***** BEGIN GPL LICENSE BLOCK *****
8 #
9 # Copyright (C) 2005: Evan J. Rosky
10 #
11 # This program is free software; you can redistribute it and/or
12 # modify it under the terms of the GNU General Public License
13 # as published by the Free Software Foundation; either version 2
14 # of the License, or (at your option) any later version.
15 #
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with this program; if not, write to the Free Software Foundation,
23 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24 #
25 # ***** END GPL LICENCE BLOCK *****
26 # --------------------------------------------------------------------------
27
28
29 #Run discombobulator.py, not this.
30
31 import Blender
32 from Blender import NMesh,Object,Material
33 from Blender.NMesh import Vert,Face
34 from Blender.Mathutils import *
35                 
36 import BPyMathutils
37 from BPyMathutils import genrand
38 a = BPyMathutils.sgenrand(4859)
39
40 #Create random numbers
41 def randnum(low,high):
42         num = genrand()
43         num = num*(high-low)
44         num = num+low
45         return num
46
47 face = Face()
48 xmin = Vector([0,0,0])
49 xmax = Vector([0,0,0])
50 ymin = Vector([0,0,0])
51 ymax = Vector([0,0,0])
52 mxmin = Vector([0,0,0])
53 mxmax = Vector([0,0,0])
54 mymin = Vector([0,0,0])
55 mymax = Vector([0,0,0])
56 doodadCenter = Vector([0,0,0])
57 orientation = 0
58 center = Vector([0,0,0])
59 tosel = 0
60 seltopsonly = 0
61 tempx = []
62 doodadMesh = NMesh.GetRaw()
63
64 #face is the face to add the doodad to.
65 #sizeX and sizeY are values from 0.0 to 1.0 that represents a percentage the face that is covered by the doodad.
66 #height is how tall the doodad is.
67
68 def topsonly(seltops):
69         global seltopsonly
70         seltopsonly = seltops
71
72 #Find center and orientation of doodad
73 def findDoodadCenter(sizeX, sizeY):
74         #globalizing junk
75         global face
76         global xmin
77         global xmax
78         global ymin
79         global ymax
80         global orientation
81         global doodadCenter
82         global center
83         global tosel
84         global mxmin
85         global mxmax
86         global mymin
87         global mymax
88         global tempx
89         global seltopsonly
90         
91         #Find the center of the face
92         center = Vector([0,0,0])
93         for pt in face.v:
94                 center = center + pt.co
95         center = center/len(face.v)
96         
97         #Find Temp Location Range by looking at the sizes
98         txmin = (((face.v[0].co + face.v[3].co)/2) - center)*(1-sizeX) + center
99         txmax = (((face.v[1].co + face.v[2].co)/2) - center)*(1-sizeX) + center
100         tymin = (((face.v[0].co + face.v[1].co)/2) - center)*(1-sizeY) + center
101         tymax = (((face.v[2].co + face.v[3].co)/2) - center)*(1-sizeY) + center
102         
103         #Find Center of doodad
104         amtx = randnum(0.0,1.0)
105         amty = randnum(0.0,1.0)
106         thepoint = (((((txmin - txmax)*amtx + txmax) - ((tymin - tymax)*amty + tymax))*.5 + ((tymin - tymax)*amty + tymax)) - center)*2 + center
107         doodadCenter = Vector([thepoint[0],thepoint[1],thepoint[2]])
108         
109         #Find Main Range by looking at the sizes
110         mxmin = (face.v[0].co + face.v[3].co)/2
111         mxmax = (face.v[1].co + face.v[2].co)/2
112         mymin = (face.v[0].co + face.v[1].co)/2
113         mymax = (face.v[2].co + face.v[3].co)/2
114         
115         #Find x/y equivs for whole face
116         ve1 = (txmin - txmax)*amtx + txmax
117         ve1 = ve1 - mxmax
118         nax = ve1.length
119         ve1 = (mxmin - mxmax)
120         nax = nax/ve1.length
121         
122         ve1 = (tymin - tymax)*amty + tymax
123         ve1 = ve1 - mymax
124         nay = ve1.length
125         ve1 = (mymin - mymax)
126         nay = nay/ve1.length
127         
128         #Find new box thing
129         tempx = []
130         amtx = nax-sizeX/2
131         amty = nay-sizeY/2
132         tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
133         
134         amtx = nax-sizeX/2
135         amty = nay+sizeY/2
136         tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
137         
138         amtx = nax+sizeX/2
139         amty = nay+sizeY/2
140         tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
141         
142         amtx = nax+sizeX/2
143         amty = nay-sizeY/2
144         tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
145         
146         #Find New Location Range by looking at the sizes
147         xmin = (tempx[0] + tempx[3])/2
148         xmax = (tempx[1] + tempx[2])/2
149         ymin = (tempx[0] + tempx[1])/2
150         ymax = (tempx[2] + tempx[3])/2
151
152 #Make a point
153 def makePoint(x,y,z=0):
154         global xmin
155         global xmax
156         global ymin
157         global ymax
158         global doodadCenter
159         global tosel
160         global seltopsonly
161         global face
162
163         amtx = x
164         amty = y
165         thepoint = (((((xmin - xmax)*amtx + xmax) - ((ymin - ymax)*amty + ymax))*.5 + ((ymin - ymax)*amty + ymax)) - doodadCenter)*2 + doodadCenter
166         thepoint = thepoint + z*Vector(face.no)
167         tver = Vert(thepoint[0],thepoint[1],thepoint[2])
168         if tosel == 1 and seltopsonly == 0 and z == 0:
169                 tver.sel = 1
170         return tver
171
172 #extrude ground-plane(s)
173 def extrudedoodad(vArray,heig):
174         global face
175         global doodadMesh
176         global tosel
177         
178         topVArray = []
179         
180         doodadMesh.verts.extend(vArray)
181         
182         #Create array for extruded verts
183         for ind in range(0,(len(vArray))):
184                 point = vArray[ind].co + heig*Vector(face.no)
185                 ver = Vert(point[0],point[1],point[2])
186                 if tosel == 1:
187                         ver.sel = 1
188                 topVArray.append(ver)
189                 doodadMesh.verts.append(topVArray[ind])
190         
191         #make faces around sides
192         for ind in range(0,(len(vArray) - 1)):
193                 face = Face()
194                 face.v.extend([vArray[ind],vArray[ind+1],topVArray[ind+1],topVArray[ind]])
195                 if tosel == 1 and seltopsonly == 0: face.sel = 1
196                 doodadMesh.faces.append(face)
197         face = Face()
198         face.v.extend([vArray[len(vArray) - 1],vArray[0],topVArray[0],topVArray[len(topVArray) - 1]])
199         if tosel == 1 and seltopsonly == 0: 
200                         face.sel = 1
201         doodadMesh.faces.append(face)
202         
203         return topVArray
204
205 #For switching face vertices
206 def fixvertindex(ind):
207         if ind > 3:
208                 indx = ind - 4
209         else:
210                 indx = ind
211         return indx
212
213 #runs doodads
214 def createDoodad(indexArray,facec,minsi,maxsi,minhei,maxhei,selec,amtmin,amtmax,facpercent):
215         global doodadMesh
216         global seltopsonly
217         global tosel
218         
219         doodadMesh = NMesh.GetRaw()
220         
221         theamt = round(randnum(amtmin,amtmax),0)
222         theamt = int(theamt)
223         tosel = selec
224         
225         for i in range(0,(theamt)):
226                 if randnum(0,1) <= facpercent:
227                         index = round(randnum(1,len(indexArray)),0)
228                         index = indexArray[(int(index) - 1)]
229                         
230                         Xsi = randnum(minsi,maxsi)
231                         Ysi = randnum(minsi,maxsi)
232                         hei = randnum(minhei,maxhei)
233                                         
234                         #Determine orientation
235                         orient = int(round(randnum(0.0,3.0)))
236                         
237                         facer = Face()
238                         facer.v.extend([facec.v[orient],facec.v[fixvertindex(1+orient)],facec.v[fixvertindex(2+orient)],facec.v[fixvertindex(3+orient)]])
239                         
240                         if index == 1:
241                                 singleBox(facer,Xsi,Ysi,hei)
242                         if index == 2:
243                                 doubleBox(facer,Xsi,Ysi,hei)
244                         if index == 3:
245                                 tripleBox(facer,Xsi,Ysi,hei)
246                         if index == 4:
247                                 LShape(facer,Xsi,Ysi,hei)
248                         if index == 5:
249                                 TShape(facer,Xsi,Ysi,hei)
250                         if index == 6:
251                                 if randnum(0.0,1.0) > .5:
252                                         SShape(facer,Xsi,Ysi,hei)
253                                 else:
254                                         ZShape(facer,Xsi,Ysi,hei)
255         
256         return doodadMesh
257
258 #Single Box Doodad
259 def singleBox(facel, Xsize, Ysize, height):
260         #globaling junk
261         global face
262         global tosel
263         global doodadMesh
264         
265         face = Face()
266         face = facel
267         
268         findDoodadCenter(Xsize, Ysize)
269         
270         vertArray = []
271         
272         #place four points
273         vertArray.append(makePoint(0,0))
274         vertArray.append(makePoint(0,1))
275         vertArray.append(makePoint(1,1))
276         vertArray.append(makePoint(1,0))
277         topVertArray = extrudedoodad(vertArray,height)
278         
279         face = Face()
280         face.v.extend(vertArray)
281         face.v.reverse()
282         doodadMesh.faces.append(face)
283         face = Face()
284         face.v.extend(topVertArray)
285         if tosel == 1: 
286                         face.sel = 1
287         doodadMesh.faces.append(face)
288         
289 #Double Box Doodad
290 def doubleBox(facel, Xsize, Ysize, height):
291         #globaling junk
292         global face
293         global tosel
294         global doodadMesh
295         
296         face = Face()
297         face = facel
298         
299         findDoodadCenter(Xsize, Ysize)
300         
301         vertArray = []
302         
303         #place first box
304         vertArray.append(makePoint(0,0))
305         vertArray.append(makePoint(0,1))
306         vertArray.append(makePoint(0.45,1))
307         vertArray.append(makePoint(0.45,0))
308         topVertArray = extrudedoodad(vertArray,height)
309         
310         face = Face()
311         face.v.extend(vertArray)
312         face.v.reverse()
313         doodadMesh.faces.append(face)
314         face = Face()
315         face.v.extend(topVertArray)
316         if tosel == 1: 
317                         face.sel = 1
318         doodadMesh.faces.append(face)
319         
320         vertArray = []
321         
322         #place second box
323         vertArray.append(makePoint(0.55,0))
324         vertArray.append(makePoint(0.55,1))
325         vertArray.append(makePoint(1,1))
326         vertArray.append(makePoint(1,0))
327         topVertArray = extrudedoodad(vertArray,height)
328         
329         face = Face()
330         face.v.extend(vertArray)
331         face.v.reverse()
332         doodadMesh.faces.append(face)
333         face = Face()
334         face.v.extend(topVertArray)
335         if tosel == 1: 
336                         face.sel = 1
337         doodadMesh.faces.append(face)
338
339 #Triple Box Doodad
340 def tripleBox(facel, Xsize, Ysize, height):
341         #globaling junk
342         global face
343         global tosel
344         global doodadMesh
345         
346         face = Face()
347         face = facel
348         
349         findDoodadCenter(Xsize, Ysize)
350         
351         vertArray = []
352         
353         #place first box
354         vertArray.append(makePoint(0,0))
355         vertArray.append(makePoint(0,1))
356         vertArray.append(makePoint(0.3,1))
357         vertArray.append(makePoint(0.3,0))
358         topVertArray = extrudedoodad(vertArray,height)
359         
360         face = Face()
361         face.v.extend(vertArray)
362         face.v.reverse()
363         doodadMesh.faces.append(face)
364         face = Face()
365         face.v.extend(topVertArray)
366         if tosel == 1: 
367                         face.sel = 1
368         doodadMesh.faces.append(face)
369         
370         vertArray = []
371         
372         #place second box
373         vertArray.append(makePoint(0.35,0))
374         vertArray.append(makePoint(0.35,1))
375         vertArray.append(makePoint(0.65,1))
376         vertArray.append(makePoint(0.65,0))
377         topVertArray = extrudedoodad(vertArray,height)
378         
379         face = Face()
380         face.v.extend(vertArray)
381         face.v.reverse()
382         doodadMesh.faces.append(face)
383         face = Face()
384         face.v.extend(topVertArray)
385         if tosel == 1: 
386                         face.sel = 1
387         doodadMesh.faces.append(face)
388         
389         vertArray = []
390         
391         #place third box
392         vertArray.append(makePoint(0.7,0))
393         vertArray.append(makePoint(0.7,1))
394         vertArray.append(makePoint(1,1))
395         vertArray.append(makePoint(1,0))
396         topVertArray = extrudedoodad(vertArray,height)
397         
398         face = Face()
399         face.v.extend(vertArray)
400         face.v.reverse()
401         doodadMesh.faces.append(face)
402         face = Face()
403         face.v.extend(topVertArray)
404         if tosel == 1: 
405                         face.sel = 1
406         doodadMesh.faces.append(face)
407
408 #The "L" Shape
409 def LShape(facel, Xsize, Ysize, height):
410         #globaling junk
411         global face
412         global tosel
413         global doodadMesh
414         
415         face = Face()
416         face = facel
417         
418         findDoodadCenter(Xsize, Ysize)
419         
420         rcon1 = randnum(0.2,0.8)
421         rcon2 = randnum(0.2,0.8)
422         
423         vertArray = []
424         
425         #place L shape
426         vertArray.append(makePoint(0,0))
427         vertArray.append(makePoint(0,rcon1))
428         vertArray.append(makePoint(0,1))
429         vertArray.append(makePoint(rcon2,1))
430         vertArray.append(makePoint(rcon2,rcon1))
431         vertArray.append(makePoint(1,rcon1))
432         vertArray.append(makePoint(1,0))
433         vertArray.append(makePoint(rcon2,0))
434         topVertArray = extrudedoodad(vertArray,height)
435         
436         face = Face()
437         face.v.extend([vertArray[0],vertArray[1],vertArray[4],vertArray[7]])
438         face.v.reverse()
439         doodadMesh.faces.append(face)
440         face = Face()
441         face.v.extend([vertArray[1],vertArray[2],vertArray[3],vertArray[4]])
442         face.v.reverse()
443         doodadMesh.faces.append(face)
444         face = Face()
445         face.v.extend([vertArray[4],vertArray[5],vertArray[6],vertArray[7]])
446         face.v.reverse()
447         doodadMesh.faces.append(face)
448         
449         face = Face()
450         face.v.extend([topVertArray[0],topVertArray[1],topVertArray[4],topVertArray[7]])
451         if tosel == 1: 
452                         face.sel = 1
453         doodadMesh.faces.append(face)
454         face = Face()
455         face.v.extend([topVertArray[1],topVertArray[2],topVertArray[3],topVertArray[4]])
456         if tosel == 1: 
457                         face.sel = 1
458         doodadMesh.faces.append(face)
459         face = Face()
460         face.v.extend([topVertArray[4],topVertArray[5],topVertArray[6],topVertArray[7]])
461         if tosel == 1: 
462                         face.sel = 1
463         doodadMesh.faces.append(face)
464         
465 #The "T" Shape
466 def TShape(facel, Xsize, Ysize, height):
467         #globaling junk
468         global face
469         global tosel
470         global doodadMesh
471         
472         face = Face()
473         face = facel
474         
475         findDoodadCenter(Xsize, Ysize)
476         
477         rcony = randnum(0.25,0.75)
478         rconx1 = randnum(0.1,0.49)
479         rconx2 = randnum(0.51,0.9)
480         
481         vertArray = []
482         
483         #place T shape
484         vertArray.append(makePoint(0,0))
485         vertArray.append(makePoint(0,rcony))
486         vertArray.append(makePoint(rconx1,rcony))
487         vertArray.append(makePoint(rconx1,1))
488         vertArray.append(makePoint(rconx2,1))
489         vertArray.append(makePoint(rconx2,rcony))
490         vertArray.append(makePoint(1,rcony))
491         vertArray.append(makePoint(1,0))
492         vertArray.append(makePoint(rconx2,0))
493         vertArray.append(makePoint(rconx1,0))
494         topVertArray = extrudedoodad(vertArray,height)
495         
496         face = Face()
497         face.v.extend([vertArray[0],vertArray[1],vertArray[2],vertArray[9]])
498         face.v.reverse()
499         doodadMesh.faces.append(face)
500         face = Face()
501         face.v.extend([vertArray[2],vertArray[3],vertArray[4],vertArray[5]])
502         face.v.reverse()
503         doodadMesh.faces.append(face)
504         face = Face()
505         face.v.extend([vertArray[5],vertArray[6],vertArray[7],vertArray[8]])
506         face.v.reverse()
507         doodadMesh.faces.append(face)
508         face = Face()
509         face.v.extend([vertArray[8],vertArray[9],vertArray[2],vertArray[5]])
510         face.v.reverse()
511         doodadMesh.faces.append(face)
512         
513         face = Face()
514         face.v.extend([topVertArray[0],topVertArray[1],topVertArray[2],topVertArray[9]])
515         if tosel == 1: 
516                         face.sel = 1
517         doodadMesh.faces.append(face)
518         face = Face()
519         face.v.extend([topVertArray[2],topVertArray[3],topVertArray[4],topVertArray[5]])
520         if tosel == 1: 
521                         face.sel = 1
522         doodadMesh.faces.append(face)
523         face = Face()
524         face.v.extend([topVertArray[5],topVertArray[6],topVertArray[7],topVertArray[8]])
525         if tosel == 1: 
526                         face.sel = 1
527         doodadMesh.faces.append(face)
528         face = Face()
529         face.v.extend([topVertArray[8],topVertArray[9],topVertArray[2],topVertArray[5]])
530         if tosel == 1: 
531                         face.sel = 1
532         doodadMesh.faces.append(face)
533         
534 #The "S" or "Z" Shapes
535 def SShape(facel, Xsize, Ysize, height):
536         #globaling junk
537         global face
538         global tosel
539         global doodadMesh
540         
541         face = Face()
542         face = facel
543         
544         findDoodadCenter(Xsize, Ysize)
545         
546         rcony1 = randnum(0.1,0.49)
547         rcony2 = randnum(0.51,0.9)
548         rconx1 = randnum(0.1,0.49)
549         rconx2 = randnum(0.51,0.9)
550         
551         vertArray = []
552         
553         #place S shape
554         vertArray.append(makePoint(0,0))
555         vertArray.append(makePoint(0,rcony1))
556         vertArray.append(makePoint(rconx1,rcony1))
557         vertArray.append(makePoint(rconx1,rcony2))
558         vertArray.append(makePoint(rconx1,1))
559         vertArray.append(makePoint(rconx2,1))
560         vertArray.append(makePoint(1,1))
561         vertArray.append(makePoint(1,rcony2))
562         vertArray.append(makePoint(rconx2,rcony2))
563         vertArray.append(makePoint(rconx2,rcony1))
564         vertArray.append(makePoint(rconx2,0))
565         vertArray.append(makePoint(rconx1,0))
566         topVertArray = extrudedoodad(vertArray,height)
567         
568         face = Face()
569         face.v.extend([vertArray[0],vertArray[1],vertArray[2],vertArray[11]])
570         face.v.reverse()
571         doodadMesh.faces.append(face)
572         face = Face()
573         face.v.extend([vertArray[2],vertArray[9],vertArray[10],vertArray[11]])
574         face.v.reverse()
575         doodadMesh.faces.append(face)
576         face = Face()
577         face.v.extend([vertArray[2],vertArray[3],vertArray[8],vertArray[9]])
578         face.v.reverse()
579         doodadMesh.faces.append(face)
580         face = Face()
581         face.v.extend([vertArray[3],vertArray[4],vertArray[5],vertArray[8]])
582         face.v.reverse()
583         doodadMesh.faces.append(face)
584         face = Face()
585         face.v.extend([vertArray[5],vertArray[6],vertArray[7],vertArray[8]])
586         face.v.reverse()
587         doodadMesh.faces.append(face)
588         
589         face = Face()
590         face.v.extend([topVertArray[0],topVertArray[1],topVertArray[2],topVertArray[11]])
591         if tosel == 1: 
592                         face.sel = 1
593         doodadMesh.faces.append(face)
594         face = Face()
595         face.v.extend([topVertArray[2],topVertArray[9],topVertArray[10],topVertArray[11]])
596         if tosel == 1: 
597                         face.sel = 1
598         doodadMesh.faces.append(face)
599         face = Face()
600         face.v.extend([topVertArray[2],topVertArray[3],topVertArray[8],topVertArray[9]])
601         if tosel == 1: 
602                         face.sel = 1
603         doodadMesh.faces.append(face)
604         face = Face()
605         face.v.extend([topVertArray[3],topVertArray[4],topVertArray[5],topVertArray[8]])
606         if tosel == 1: 
607                         face.sel = 1
608         doodadMesh.faces.append(face)
609         face = Face()
610         face.v.extend([topVertArray[5],topVertArray[6],topVertArray[7],topVertArray[8]])
611         if tosel == 1: 
612                         face.sel = 1
613         doodadMesh.faces.append(face)
614         
615 def ZShape(facel, Xsize, Ysize, height):
616         #globaling junk
617         global face
618         global tosel
619         global doodadMesh
620         
621         face = Face()
622         face = facel
623         
624         findDoodadCenter(Xsize, Ysize)
625         
626         rcony1 = randnum(0.1,0.49)
627         rcony2 = randnum(0.51,0.9)
628         rconx1 = randnum(0.1,0.49)
629         rconx2 = randnum(0.51,0.9)
630         
631         vertArray = []
632         
633         #place Z shape
634         vertArray.append(makePoint(0,0))
635         vertArray.append(makePoint(0,rcony1))
636         vertArray.append(makePoint(0,rcony2))
637         vertArray.append(makePoint(rconx1,rcony2))
638         vertArray.append(makePoint(rconx2,rcony2))
639         vertArray.append(makePoint(rconx2,1))
640         vertArray.append(makePoint(1,1))
641         vertArray.append(makePoint(1,rcony2))
642         vertArray.append(makePoint(1,rcony1))
643         vertArray.append(makePoint(rconx2,rcony1))
644         vertArray.append(makePoint(rconx1,rcony1))
645         vertArray.append(makePoint(rconx1,0))
646         topVertArray = extrudedoodad(vertArray,height)
647         
648         face = Face()
649         face.v.extend([vertArray[0],vertArray[1],vertArray[10],vertArray[11]])
650         face.v.reverse()
651         doodadMesh.faces.append(face)
652         face = Face()
653         face.v.extend([vertArray[1],vertArray[2],vertArray[3],vertArray[10]])
654         face.v.reverse()
655         doodadMesh.faces.append(face)
656         face = Face()
657         face.v.extend([vertArray[3],vertArray[4],vertArray[9],vertArray[10]])
658         face.v.reverse()
659         doodadMesh.faces.append(face)
660         face = Face()
661         face.v.extend([vertArray[4],vertArray[7],vertArray[8],vertArray[9]])
662         face.v.reverse()
663         doodadMesh.faces.append(face)
664         face = Face()
665         face.v.extend([vertArray[4],vertArray[5],vertArray[6],vertArray[7]])
666         face.v.reverse()
667         doodadMesh.faces.append(face)
668         
669         face = Face()
670         face.v.extend([topVertArray[0],topVertArray[1],topVertArray[10],topVertArray[11]])
671         if tosel == 1: 
672                         face.sel = 1
673         doodadMesh.faces.append(face)
674         face = Face()
675         face.v.extend([topVertArray[1],topVertArray[2],topVertArray[3],topVertArray[10]])
676         if tosel == 1: 
677                         face.sel = 1
678         doodadMesh.faces.append(face)
679         face = Face()
680         face.v.extend([topVertArray[3],topVertArray[4],topVertArray[9],topVertArray[10]])
681         if tosel == 1: 
682                         face.sel = 1
683         doodadMesh.faces.append(face)
684         face = Face()
685         face.v.extend([topVertArray[4],topVertArray[7],topVertArray[8],topVertArray[9]])
686         if tosel == 1: 
687                         face.sel = 1
688         doodadMesh.faces.append(face)
689         face = Face()
690         face.v.extend([topVertArray[4],topVertArray[5],topVertArray[6],topVertArray[7]])
691         if tosel == 1: 
692                         face.sel = 1
693         doodadMesh.faces.append(face)
694