Export_3ds: Added distance cue chunk export
[blender-addons.git] / archimesh / achm_roof_maker.py
blob1f470ffa0c748b886c10dba49959f9f6ff0b7630
1 # SPDX-FileCopyrightText: 2016-2022 Blender Foundation
3 # SPDX-License-Identifier: GPL-2.0-or-later
5 # ----------------------------------------------------------
6 # Automatic generation of roofs
7 # Author: Antonio Vazquez (antonioya)
9 # ----------------------------------------------------------
10 # noinspection PyUnresolvedReferences
11 import bpy
12 from math import radians
13 from bpy.types import Operator
14 from bpy.props import IntProperty, FloatProperty, BoolProperty, EnumProperty
15 from .achm_tools import *
18 # ------------------------------------------------------------------
19 # Define UI class
20 # Rooms
21 # ------------------------------------------------------------------
22 class ARCHIMESH_OT_Roof(Operator):
23 bl_idname = "mesh.archimesh_roof"
24 bl_label = "Roof"
25 bl_description = "Roof Generator"
26 bl_category = 'View'
27 bl_options = {'REGISTER', 'UNDO'}
29 # Define properties
30 roof_width: IntProperty(
31 name='Num tiles X',
32 min=1, max=100, default=6,
33 description='Tiles in X axis',
35 roof_height: IntProperty(
36 name='Num tiles Y',
37 min=1, max=100, default=3,
38 description='Tiles in Y axis',
41 roof_thick: FloatProperty(
42 name='Tile thickness',
43 min=0.000, max=0.50, default=0.012, precision=3,
44 description='Thickness of the roof tile',
46 roof_angle: FloatProperty(
47 name='Roof slope', min=0.0, max=70.0, default=0.0, precision=1,
48 description='Roof angle of slope',
50 roof_scale: FloatProperty(
51 name='Tile scale', min=0.001, max=10, default=1, precision=3,
52 description='Scale of roof tile',
55 crt_mat: BoolProperty(
56 name="Create default Cycles materials",
57 description="Create default materials for Cycles render",
58 default=True,
61 model: EnumProperty(
62 items=(
63 ('1', "Model 01", ""),
64 ('2', "Model 02", ""),
65 ('3', "Model 03", ""),
66 ('4', "Model 04", "")),
67 name="Model",
68 description="Roof tile model",
71 # -----------------------------------------------------
72 # Draw (create UI interface)
73 # -----------------------------------------------------
74 # noinspection PyUnusedLocal
75 def draw(self, context):
76 layout = self.layout
77 space = bpy.context.space_data
78 if not space.local_view:
79 # Imperial units warning
80 if bpy.context.scene.unit_settings.system == "IMPERIAL":
81 row = layout.row()
82 row.label(text="Warning: Imperial units not supported", icon='COLOR_RED')
83 box = layout.box()
84 box.prop(self, 'model')
85 box.prop(self, 'roof_width')
86 box.prop(self, 'roof_height')
87 box.prop(self, 'roof_scale')
89 tilesize_x = 0
90 tilesize_y = 0
91 if self.model == "1":
92 tilesize_x = 0.184
93 tilesize_y = 0.413
95 if self.model == "2":
96 tilesize_x = 0.103
97 tilesize_y = 0.413
99 if self.model == "3":
100 tilesize_x = 0.184
101 tilesize_y = 0.434
103 if self.model == "4":
104 tilesize_x = 0.231
105 tilesize_y = 0.39
107 x = tilesize_x * self.roof_scale * self.roof_width
108 y = tilesize_y * self.roof_scale * self.roof_height
110 buf = 'Size: {0:.2f} * {1:.2f} aprox.'.format(x, y)
111 box.label(text=buf)
113 box = layout.box()
114 box.prop(self, 'roof_thick')
115 box.prop(self, 'roof_angle')
117 box = layout.box()
118 if not context.scene.render.engine in {'CYCLES', 'BLENDER_EEVEE'}:
119 box.enabled = False
120 box.prop(self, 'crt_mat')
121 else:
122 row = layout.row()
123 row.label(text="Warning: Operator does not work in local view mode", icon='ERROR')
125 # -----------------------------------------------------
126 # Execute
127 # -----------------------------------------------------
128 # noinspection PyUnusedLocal
129 def execute(self, context):
130 if bpy.context.mode == "OBJECT":
131 create_roof_mesh(self)
132 return {'FINISHED'}
133 else:
134 self.report({'WARNING'}, "Archimesh: Option only valid in Object mode")
135 return {'CANCELLED'}
138 # ------------------------------------------------------------------------------
139 # Generate mesh data
140 # All custom values are passed using self container (self.myvariable)
141 # ------------------------------------------------------------------------------
142 def create_roof_mesh(self):
143 # deactivate others
144 for o in bpy.data.objects:
145 if o.select_get() is True:
146 o.select_set(False)
147 bpy.ops.object.select_all(action='DESELECT')
149 mydata = create_roof(self)
150 myroof = mydata[0]
152 # active object and deactivate others
153 if bpy.context.view_layer.objects.active is not None:
154 bpy.context.view_layer.objects.active.select_set(False)
156 bpy.context.view_layer.objects.active = myroof
157 myroof.select_set(True)
159 # Thickness
160 if self.roof_thick > 0.0:
161 set_modifier_solidify(myroof, self.roof_thick)
162 # Subsurf
163 set_modifier_subsurf(myroof)
164 set_smooth(myroof)
166 a_x = 0.85
167 a_y = 0.85
169 if self.model == "1":
170 a_x = 0.85
171 a_y = 0.85
173 if self.model == "2":
174 a_x = 0.90
175 a_y = 0.85
177 if self.model == "3":
178 a_x = 0.80
179 a_y = 0.85
181 if self.model == "4":
182 a_x = 0.80
183 a_y = 0.85
185 set_modifier_array(myroof, "X", a_x, self.roof_width)
186 set_modifier_array(myroof, "Y", a_y, self.roof_height)
188 # Slope
189 myroof.rotation_euler = (radians(self.roof_angle), 0.0, 0.0)
191 # Create materials
192 if self.crt_mat and bpy.context.scene.render.engine in {'CYCLES', 'BLENDER_EEVEE'}:
193 # material
194 mat = create_diffuse_material("Roof_material", False, 0.482, 0.061, 0.003, 0.581, 0.105, 0.068, 0.01)
195 set_material(myroof, mat)
197 bpy.ops.object.select_all(action='DESELECT')
198 myroof.select_set(True)
199 bpy.context.view_layer.objects.active = myroof
200 return
203 # ------------------------------------------------------------------------------
204 # Create Roof
205 # All custom values are passed using self container (self.myvariable)
206 # ------------------------------------------------------------------------------
207 def create_roof(self):
208 # Retry mesh data
209 if self.model == "1":
210 mydata = tile_model_01()
211 elif self.model == "2":
212 mydata = tile_model_02()
213 elif self.model == "3":
214 mydata = tile_model_03()
215 elif self.model == "4":
216 mydata = tile_model_04()
217 else:
218 mydata = tile_model_01() # default model
220 # move data
221 verts = mydata[0]
222 faces = mydata[1]
223 tile_x = mydata[2]
224 tile_y = mydata[3]
226 mymesh = bpy.data.meshes.new("Roof")
227 myobject = bpy.data.objects.new("Roof", mymesh)
229 myobject.location = bpy.context.scene.cursor.location
230 bpy.context.collection.objects.link(myobject)
232 mymesh.from_pydata(verts, [], faces)
233 mymesh.update(calc_edges=True)
234 # Scale
235 myobject.scale = (self.roof_scale, self.roof_scale, self.roof_scale)
237 return myobject, tile_x, tile_y
240 # ----------------------------------------------
241 # Tile model 01
242 # ----------------------------------------------
243 def tile_model_01():
244 # ------------------------------------
245 # Mesh data
246 # ------------------------------------
247 minx = -2.60770320892334e-08
248 maxx = 0.19982914626598358
249 miny = -0.0010638721287250519
250 maxy = 0.46471506357192993
251 minz = -0.03651249408721924
252 maxz = 0.0586184486746788
254 # Vertex
255 myvertex = [(maxx - 0.0912834107875824, maxy - 0.0017275810241699219, maxz - 0.046515291556715965),
256 (maxx - 0.08774729073047638, maxy - 0.0021544992923736572, minz + 0.02855057455599308),
257 (minx + 0.007649015635251999, maxy - 0.002105712890625, minz + 0.03084239922463894),
258 (minx + 0.012062381953001022, maxy - 0.0016825199127197266, maxz - 0.044397931545972824),
259 (minx + 0.023753326386213303, maxy - 0.0013274550437927246, maxz - 0.02770993858575821),
260 (minx + 0.04094201326370239, maxy - 0.0010945796966552734, maxz - 0.016765158623456955),
261 (minx + 0.061011623591184616, maxy - 0.0010193586349487305, maxz - 0.013229843229055405),
262 (minx + 0.09759850427508354, maxy - 0.0013619065284729004, maxz - 0.02933049201965332),
263 (minx + 0.0809067152440548, maxy - 0.0011132359504699707, maxz - 0.017642192542552948),
264 (minx + 0.04091371223330498, maxy - 0.005662411451339722, maxz - 0.01663973182439804),
265 (minx + 0.061012353748083115, maxy - 0.00558704137802124, maxz - 0.013099301606416702),
266 (minx + 0.007572557777166367, maxy - 0.006675034761428833, minz + 0.030899077653884888),
267 (minx + 0.011992301791906357, maxy - 0.006251156330108643, maxz - 0.044312480837106705),
268 (minx + 0.09765215590596199, maxy - 0.005930125713348389, maxz - 0.029223240911960602),
269 (maxx - 0.09121392667293549, maxy - 0.006296277046203613, maxz - 0.04643290489912033),
270 (minx + 0.02370016649365425, maxy - 0.00589558482170105, maxz - 0.027600344270467758),
271 (maxx - 0.08767268061637878, maxy - 0.006723880767822266, minz + 0.028603939339518547),
272 (minx + 0.08093622699379921, maxy - 0.005681097507476807, maxz - 0.01751803606748581),
273 (minx + 0.06108579412102699, miny + 0.0018242448568344116, maxz),
274 (minx + 0.0049602799117565155, miny + 0.0010638684034347534, maxz - 0.03573753498494625),
275 (maxx - 0.08424043655395508, miny + 0.0010122060775756836, maxz - 0.038165315985679626),
276 (minx + 0.018365193158388138, miny + 0.0014709830284118652, maxz - 0.016602978110313416),
277 (maxx - 0.0801858901977539, miny + 0.0005226880311965942, minz + 0.03395887836813927),
278 (minx + 0.08389763161540031, miny + 0.0017166286706924438, maxz - 0.005059238523244858),
279 (minx + 0.03807384893298149, miny + 0.001738026738166809, maxz - 0.004053622484207153),
280 (minx + 1.1175870895385742e-08, miny + 0.0010638725943863392, minz + 0.03651248663663864),
281 (maxx - 0.09679263085126877, miny + 0.0014314353466033936, maxz - 0.018461115658283234),
282 (minx + 0.06108483672142029, miny + 0.007804900407791138, maxz - 0.00017091631889343262),
283 (minx + 0.0050520338118076324, miny + 0.0070457905530929565, maxz - 0.03584941849112511),
284 (maxx - 0.08433142304420471, miny + 0.006994202733039856, maxz - 0.03827318921685219),
285 (minx + 0.018434803932905197, miny + 0.007452219724655151, maxz - 0.01674646884202957),
286 (maxx - 0.08028358221054077, miny + 0.006505459547042847, minz + 0.03388900891877711),
287 (minx + 0.08385899290442467, miny + 0.007697448134422302, maxz - 0.005221795290708542),
288 (minx + 0.03811090067028999, miny + 0.007718801498413086, maxz - 0.004217840731143951),
289 (minx, miny + 0.006561309099197388, minz + 0.036512489430606365),
290 (maxx - 0.09686288237571716, miny + 0.007412716746330261, maxz - 0.018601536750793457),
291 (maxx - 0.011097520589828491, maxy - 0.00127333402633667, minz + 0.03322591632604599),
292 (maxx - 0.007561400532722473, maxy, maxz - 0.041875842958688736),
293 (minx + 0.0878349058330059, maxy - 0.00014543533325195312, maxz - 0.04416356980800629),
294 (minx + 0.09224827215075493, maxy - 0.0014076828956604004, minz + 0.03111234214156866),
295 (maxx - 0.09588995575904846, maxy - 0.0024666786193847656, minz + 0.014454199001193047),
296 (maxx - 0.07870127260684967, maxy - 0.003161191940307617, minz + 0.003528997302055359),
297 (maxx - 0.05863165855407715, maxy - 0.0033855140209198, minz),
298 (maxx - 0.022044777870178223, maxy - 0.0023638010025024414, minz + 0.016071850433945656),
299 (maxx - 0.03873656690120697, maxy - 0.0031055212020874023, minz + 0.0044044628739356995),
300 (maxx - 0.07872956991195679, maxy - 0.007723212242126465, minz + 0.003790721297264099),
301 (maxx - 0.05863092839717865, maxy - 0.007947862148284912, minz + 0.0002566203474998474),
302 (minx + 0.08775844797492027, maxy - 0.004703164100646973, maxz - 0.043833211064338684),
303 (minx + 0.09217819198966026, maxy - 0.005967140197753906, minz + 0.03141397051513195),
304 (maxx - 0.021991118788719177, maxy - 0.006924688816070557, minz + 0.016351722180843353),
305 (maxx - 0.01102803647518158, maxy - 0.005832552909851074, minz + 0.03353060130029917),
306 (maxx - 0.09594311565160751, maxy - 0.007027685642242432, minz + 0.01473172940313816),
307 (maxx - 0.007486790418624878, maxy - 0.004557549953460693, maxz - 0.04154217056930065),
308 (maxx - 0.03870706260204315, maxy - 0.007667511701583862, minz + 0.004667460918426514),
309 (maxx - 0.05855749547481537, miny, minz + 0.026008986867964268),
310 (minx + 0.08514617010951042, miny + 0.0022678226232528687, maxz - 0.033448345959186554),
311 (maxx - 0.004054546356201172, miny + 0.0024218857288360596, maxz - 0.031024910509586334),
312 (minx + 0.09855108335614204, miny + 0.0010535866022109985, minz + 0.04258226789534092),
313 (maxx, miny + 0.0038818269968032837, maxz - 0.008059307932853699),
314 (maxx - 0.03574565052986145, miny + 0.00032107532024383545, minz + 0.03105917200446129),
315 (maxx - 0.08156943321228027, miny + 0.0002572685480117798, minz + 0.030055356211960316),
316 (minx + 0.0801859013736248, miny + 0.004204884171485901, maxz - 0.01064956933259964),
317 (maxx - 0.016606733202934265, miny + 0.0011714845895767212, minz + 0.04443708248436451),
318 (maxx - 0.058558449149131775, miny + 0.005973652005195618, minz + 0.0256729768589139),
319 (minx + 0.08523792400956154, miny + 0.008237749338150024, maxz - 0.03384328447282314),
320 (maxx - 0.004145532846450806, miny + 0.008391529321670532, maxz - 0.031423844397068024),
321 (minx + 0.0986206941306591, miny + 0.00702551007270813, minz + 0.04221887979656458),
322 (maxx - 9.769201278686523e-05, miny + 0.00984904170036316, maxz - 0.008496180176734924),
323 (maxx - 0.0357842892408371, miny + 0.0062942057847976685, minz + 0.030714819207787514),
324 (maxx - 0.08153238147497177, miny + 0.006230458617210388, minz + 0.029712661169469357),
325 (minx + 0.08018588647246361, miny + 0.00968259572982788, maxz - 0.011114969849586487),
326 (maxx - 0.016676992177963257, miny + 0.007143184542655945, minz + 0.04407063312828541)]
328 # Faces
329 myfaces = [(10, 9, 5, 6), (12, 11, 2, 3), (14, 13, 7, 0), (15, 12, 3, 4), (16, 14, 0, 1),
330 (17, 10, 6, 8), (9, 15, 4, 5), (13, 17, 8, 7), (27, 33, 9, 10), (28, 34, 11, 12),
331 (29, 35, 13, 14), (30, 28, 12, 15), (31, 29, 14, 16), (32, 27, 10, 17), (33, 30, 15, 9),
332 (35, 32, 17, 13), (18, 24, 33, 27), (19, 25, 34, 28), (20, 26, 35, 29), (21, 19, 28, 30),
333 (22, 20, 29, 31), (23, 18, 27, 32), (24, 21, 30, 33), (26, 23, 32, 35), (46, 45, 41, 42),
334 (48, 47, 38, 39), (50, 49, 43, 36), (51, 48, 39, 40), (52, 50, 36, 37), (53, 46, 42, 44),
335 (45, 51, 40, 41), (49, 53, 44, 43), (63, 69, 45, 46), (64, 70, 47, 48), (65, 71, 49, 50),
336 (66, 64, 48, 51), (67, 65, 50, 52), (68, 63, 46, 53), (69, 66, 51, 45), (71, 68, 53, 49),
337 (54, 60, 69, 63), (55, 61, 70, 64), (56, 62, 71, 65), (57, 55, 64, 66), (58, 56, 65, 67),
338 (59, 54, 63, 68), (60, 57, 66, 69), (62, 59, 68, 71)]
340 return myvertex, myfaces, maxx - minx, maxy - miny
343 # ----------------------------------------------
344 # Tile model 02
345 # ----------------------------------------------
346 def tile_model_02():
347 # ------------------------------------
348 # Mesh data
349 # ------------------------------------
350 minx = -2.60770320892334e-08
351 maxx = 0.11964325606822968
352 miny = -0.000541184563189745
353 maxy = 0.4636957049369812
354 minz = -0.007961912080645561
355 maxz = 0.0586184561252594
357 # Vertex
358 myvertex = [(maxx - 0.011097520589828491, maxy - 0.0007082223892211914, minz + 0.020065076649188995),
359 (maxx - 0.007561400532722473, maxy - 0.0011351406574249268, minz),
360 (minx + 0.007649015635251999, maxy - 0.0010863542556762695, minz + 0.0022918246686458588),
361 (minx + 0.012062381953001022, maxy - 0.0006631612777709961, minz + 0.022182436659932137),
362 (minx + 0.023753326386213303, maxy - 0.00030809640884399414, maxz - 0.02770993858575821),
363 (minx + 0.04094201326370239, maxy - 7.522106170654297e-05, maxz - 0.016765158623456955),
364 (maxx - 0.05863165855407715, maxy, maxz - 0.013229843229055405),
365 (maxx - 0.022044777870178223, maxy - 0.0003425478935241699, maxz - 0.02933049201965332),
366 (maxx - 0.03873656690120697, maxy - 9.387731552124023e-05, maxz - 0.017642192542552948),
367 (minx + 0.04091371223330498, maxy - 0.004643052816390991, maxz - 0.01663973182439804),
368 (maxx - 0.05863092839717865, maxy - 0.00456768274307251, maxz - 0.013099301606416702),
369 (minx + 0.007572557777166367, maxy - 0.0056556761264801025, minz + 0.0023485030978918076),
370 (minx + 0.011992301791906357, maxy - 0.005231797695159912, minz + 0.022267887368798256),
371 (maxx - 0.021991126239299774, maxy - 0.004910767078399658, maxz - 0.029223240911960602),
372 (maxx - 0.01102803647518158, maxy - 0.005276918411254883, minz + 0.02014746330678463),
373 (minx + 0.02370016649365425, maxy - 0.004876226186752319, maxz - 0.027600344270467758),
374 (maxx - 0.007486790418624878, maxy - 0.005704522132873535, minz + 5.336478352546692e-05),
375 (maxx - 0.038707055151462555, maxy - 0.004661738872528076, maxz - 0.01751803606748581),
376 (maxx - 0.05855748802423477, miny + 0.0013015568256378174, maxz),
377 (minx + 0.0049602799117565155, miny + 0.0005411803722381592, minz + 0.03084283322095871),
378 (maxx - 0.004054546356201172, miny + 0.0004895180463790894, minz + 0.028415052220225334),
379 (minx + 0.018365193158388138, miny + 0.000948294997215271, maxz - 0.016602978110313416),
380 (maxx, miny, minz + 0.005408303812146187),
381 (maxx - 0.03574565052986145, miny + 0.0011939406394958496, maxz - 0.005059238523244858),
382 (minx + 0.03807384893298149, miny + 0.0012153387069702148, maxz - 0.004053622484207153),
383 (minx + 1.1175870895385742e-08, miny + 0.000541184563189745, minz + 0.007961912080645561),
384 (maxx - 0.016606740653514862, miny + 0.0009087473154067993, maxz - 0.018461115658283234),
385 (maxx - 0.058558445423841476, miny + 0.0072822123765945435, maxz - 0.00017091631889343262),
386 (minx + 0.0050520338118076324, miny + 0.006523102521896362, minz + 0.030730949714779854),
387 (maxx - 0.004145532846450806, miny + 0.006471514701843262, minz + 0.028307178989052773),
388 (minx + 0.018434803932905197, miny + 0.006929531693458557, maxz - 0.01674646884202957),
389 (maxx - 9.769201278686523e-05, miny + 0.0059827715158462524, minz + 0.005338434362784028),
390 (maxx - 0.0357842892408371, miny + 0.007174760103225708, maxz - 0.005221795290708542),
391 (minx + 0.03811090067028999, miny + 0.007196113467216492, maxz - 0.004217840731143951),
392 (minx, miny + 0.0060386210680007935, minz + 0.007961914874613285),
393 (maxx - 0.016676992177963257, miny + 0.006890028715133667, maxz - 0.018601536750793457)]
395 # Faces
396 myfaces = [(10, 9, 5, 6), (12, 11, 2, 3), (14, 13, 7, 0), (15, 12, 3, 4), (16, 14, 0, 1),
397 (17, 10, 6, 8), (9, 15, 4, 5), (13, 17, 8, 7), (27, 33, 9, 10), (28, 34, 11, 12),
398 (29, 35, 13, 14), (30, 28, 12, 15), (31, 29, 14, 16), (32, 27, 10, 17), (33, 30, 15, 9),
399 (35, 32, 17, 13), (18, 24, 33, 27), (19, 25, 34, 28), (20, 26, 35, 29), (21, 19, 28, 30),
400 (22, 20, 29, 31), (23, 18, 27, 32), (24, 21, 30, 33), (26, 23, 32, 35)]
402 return myvertex, myfaces, maxx - minx, maxy - miny
405 # ----------------------------------------------
406 # Tile model 03
407 # ----------------------------------------------
408 def tile_model_03():
409 # ------------------------------------
410 # Mesh data
411 # ------------------------------------
412 minx = -1.1175870895385742e-08
413 maxx = 0.19973646104335785
414 miny = -0.007466380018740892
415 maxy = 0.4636957049369812
416 minz = -0.014226417988538742
417 maxz = 0.0586184561252594
419 # Vertex
420 myvertex = [(maxx - 0.09119071066379547, maxy - 0.0007082223892211914, minz + 0.026329582557082176),
421 (maxx - 0.08765459060668945, maxy - 0.0011351406574249268, minz + 0.006264505907893181),
422 (minx + 0.007649015635251999, maxy - 0.0010863542556762695, minz + 0.00855633057653904),
423 (minx + 0.012062381953001022, maxy - 0.0006631612777709961, minz + 0.028446942567825317),
424 (minx + 0.023753326386213303, maxy - 0.00030809640884399414, maxz - 0.02770993858575821),
425 (minx + 0.04094201326370239, maxy - 7.522106170654297e-05, maxz - 0.016765158623456955),
426 (minx + 0.061011623591184616, maxy, maxz - 0.013229843229055405),
427 (minx + 0.09759850427508354, maxy - 0.0003425478935241699, maxz - 0.02933049201965332),
428 (minx + 0.0809067152440548, maxy - 9.387731552124023e-05, maxz - 0.017642192542552948),
429 (maxx, miny, minz + 0.009998040273785591),
430 (maxx, maxy - 0.0012684464454650879, minz),
431 (maxx - 0.011666849255561829, miny + 5.453824996948242e-06, minz + 0.01025407388806343),
432 (maxx - 0.012786239385604858, maxy - 0.0012489855289459229, minz + 0.0009138062596321106),
433 (maxx - 0.00027532875537872314, miny + 0.00016899406909942627, minz + 0.017940200865268707),
434 (maxx - 0.00027532875537872314, maxy - 0.0010994374752044678, minz + 0.007942160591483116),
435 (maxx - 0.011416733264923096, miny + 0.00017443299293518066, minz + 0.018196236342191696),
436 (maxx - 0.012485697865486145, maxy - 0.0010799765586853027, minz + 0.008855968713760376),
437 (minx + 0.04091371223330498, maxy - 0.004643052816390991, maxz - 0.01663973182439804),
438 (minx + 0.061012353748083115, maxy - 0.00456768274307251, maxz - 0.013099301606416702),
439 (minx + 0.007572557777166367, maxy - 0.0056556761264801025, minz + 0.008613009005784988),
440 (minx + 0.011992301791906357, maxy - 0.005231797695159912, minz + 0.028532393276691437),
441 (minx + 0.09765215590596199, maxy - 0.004910767078399658, maxz - 0.029223240911960602),
442 (maxx - 0.09112122654914856, maxy - 0.005276918411254883, minz + 0.02641196921467781),
443 (minx + 0.02370016649365425, maxy - 0.004876226186752319, maxz - 0.027600344270467758),
444 (maxx - 0.08757998049259186, maxy - 0.005704522132873535, minz + 0.006317870691418648),
445 (minx + 0.08093622699379921, maxy - 0.004661738872528076, maxz - 0.01751803606748581),
446 (maxx, maxy - 0.00583687424659729, minz + 9.720027446746826e-05),
447 (maxx - 0.01277536153793335, maxy - 0.0058175623416900635, minz + 0.0010046139359474182),
448 (maxx - 0.00027532875537872314, maxy - 0.00566786527633667, minz + 0.008039364591240883),
449 (maxx - 0.012475311756134033, maxy - 0.005648583173751831, minz + 0.008946776390075684),
450 (minx + 0.06108579412102699, miny + 0.008226752281188965, maxz),
451 (minx + 0.0049602799117565155, miny + 0.007466375827789307, maxz - 0.03573753498494625),
452 (maxx - 0.08414773643016815, miny + 0.007414713501930237, minz + 0.034679558128118515),
453 (minx + 0.018365193158388138, miny + 0.007873490452766418, maxz - 0.016602978110313416),
454 (maxx - 0.08009319007396698, miny + 0.0069251954555511475, minz + 0.011672809720039368),
455 (minx + 0.08389763161540031, miny + 0.008119136095046997, maxz - 0.005059238523244858),
456 (maxx, miny + 0.00688643753528595, minz + 0.009851515293121338),
457 (maxx - 0.011683255434036255, miny + 0.006892099976539612, minz + 0.010117188096046448),
458 (maxx - 0.00027532875537872314, miny + 0.007055431604385376, minz + 0.017793675884604454),
459 (maxx - 0.01143239438533783, miny + 0.007061079144477844, minz + 0.018059348687529564),
460 (minx + 0.03807384893298149, miny + 0.008140534162521362, maxz - 0.004053622484207153),
461 (minx + 1.1175870895385742e-08, miny + 0.007466380018740892, minz + 0.014226417988538742),
462 (maxx - 0.09669993072748184, miny + 0.007833942770957947, maxz - 0.018461115658283234),
463 (minx + 0.06108483672142029, miny + 0.014207407832145691, maxz - 0.00017091631889343262),
464 (minx + 0.0050520338118076324, miny + 0.01344829797744751, maxz - 0.03584941849112511),
465 (maxx - 0.08423872292041779, miny + 0.01339671015739441, minz + 0.03457168489694595),
466 (minx + 0.018434803932905197, miny + 0.013854727149009705, maxz - 0.01674646884202957),
467 (maxx - 0.08019088208675385, miny + 0.0129079669713974, minz + 0.011602940270677209),
468 (minx + 0.08385899290442467, miny + 0.014099955558776855, maxz - 0.005221795290708542),
469 (maxx, miny + 0.012868016958236694, minz + 0.00972424354404211),
470 (maxx - 0.011697500944137573, miny + 0.012873843312263489, minz + 0.009998289868235588),
471 (maxx - 0.00027532875537872314, miny + 0.01303701102733612, minz + 0.017666404135525227),
472 (maxx - 0.011445999145507812, miny + 0.013042852282524109, minz + 0.017940450459718704),
473 (minx + 0.03811090067028999, miny + 0.01412130892276764, maxz - 0.004217840731143951),
474 (minx, miny + 0.012963816523551941, minz + 0.014226420782506466),
475 (maxx - 0.09677018225193024, miny + 0.013815224170684814, maxz - 0.018601536750793457)]
477 # Faces
478 myfaces = [(18, 17, 5, 6), (20, 19, 2, 3), (22, 21, 7, 0), (23, 20, 3, 4), (24, 22, 0, 1),
479 (25, 18, 6, 8), (17, 23, 4, 5), (21, 25, 8, 7), (12, 10, 14, 16), (24, 1, 12, 27),
480 (29, 16, 14, 28), (9, 11, 15, 13), (36, 9, 13, 38), (27, 12, 16, 29), (43, 53, 17, 18),
481 (44, 54, 19, 20), (45, 55, 21, 22), (46, 44, 20, 23), (47, 45, 22, 24), (48, 43, 18, 25),
482 (53, 46, 23, 17), (55, 48, 25, 21), (47, 24, 27, 50), (52, 29, 28, 51), (10, 26, 28, 14),
483 (50, 27, 29, 52), (49, 36, 38, 51), (15, 39, 38, 13), (11, 37, 39, 15), (30, 40, 53, 43),
484 (31, 41, 54, 44), (32, 42, 55, 45), (33, 31, 44, 46), (34, 32, 45, 47), (35, 30, 43, 48),
485 (40, 33, 46, 53), (42, 35, 48, 55), (34, 47, 50, 37), (39, 52, 51, 38), (37, 50, 52, 39),
486 (26, 49, 51, 28)]
488 return myvertex, myfaces, maxx - minx, maxy - miny
491 # ----------------------------------------------
492 # Tile model 04
493 # ----------------------------------------------
494 def tile_model_04():
495 # ------------------------------------
496 # Mesh data
497 # ------------------------------------
498 minx = 0
499 maxx = 0.2706337571144104
500 miny = -0.0008960736449807882
501 maxy = 0.4393549859523773
502 minz = -0.021988021209836006
503 maxz = 0.01913231611251831
505 # Vertex
506 myvertex = [(maxx - 0.0009386539459228516, miny + 9.811518248170614e-05, minz + 0.009184492751955986),
507 (minx + 2.9802322387695312e-08, miny + 0.0008960723644122481, maxz - 0.01913231797516346),
508 (maxx, maxy - 0.000797957181930542, minz + 0.0015743095427751541),
509 (minx + 0.0009386688470840454, maxy, minz + 0.014377830550074577),
510 (maxx - 0.03795182704925537, miny + 0.00020762975327670574, minz + 0.010941661894321442),
511 (minx + 0.03701320290565491, miny + 0.0007865577936172485, minz + 0.020230852998793125),
512 (maxx - 0.037013158202171326, maxy - 0.0006884634494781494, minz + 0.003331473097205162),
513 (minx + 0.037951841950416565, maxy - 0.00010952353477478027, minz + 0.01262066513299942),
514 (minx + 0.1184280663728714, miny + 0.000545668532140553, minz + 0.016365760006010532),
515 (maxx - 0.11936667561531067, miny + 0.00044850551057606936, minz + 0.014806757681071758),
516 (minx + 0.11936671286821365, maxy - 0.0003504157066345215, minz + 0.008755568414926529),
517 (maxx - 0.11842802166938782, maxy - 0.0004475712776184082, minz + 0.007196567952632904),
518 (maxx, miny + 0.010358194587752223, maxz - 0.012803521938621998),
519 (minx + 0.0009386688470840454, miny + 0.01115613873116672, maxz),
520 (minx + 0.037951841950416565, miny + 0.011046637548133731, maxz - 0.0017571654170751572),
521 (maxx - 0.037013158202171326, miny + 0.010467695770785213, maxz - 0.011046357452869415),
522 (minx + 0.11922238767147064, miny + 0.010617014719173312, maxz - 0.008650526404380798),
523 (maxx - 0.11857235431671143, miny + 0.010519851697608829, maxz - 0.010209528729319572),
524 (maxx, maxy - 0.0072495341300964355, minz + 0.001976391300559044),
525 (minx + 0.037951841950416565, maxy - 0.006561100482940674, minz + 0.01302274689078331),
526 (maxx - 0.037013158202171326, maxy - 0.007140040397644043, minz + 0.003733554854989052),
527 (minx + 0.11936454474925995, maxy - 0.006804823875427246, minz + 0.009112119674682617),
528 (maxx - 0.11843019723892212, maxy - 0.006901979446411133, minz + 0.007553117349743843),
529 (minx + 0.0009386688470840454, maxy - 0.0064515769481658936, minz + 0.014779912307858467),
530 (minx + 0.00011220574378967285, miny + 0.0021222709910944104, maxz - 0.016845770180225372),
531 (maxx - 0.0008264482021331787, miny + 0.0013243272551335394, minz + 0.011471047066152096),
532 (minx + 0.03712538629770279, miny + 0.002012769808061421, maxz - 0.01860293745994568),
533 (maxx - 0.0378396213054657, miny + 0.001433828438166529, minz + 0.013228209689259529),
534 (minx + 0.1185230016708374, miny + 0.0017493232735432684, minz + 0.018290389329195023),
535 (maxx - 0.11927174031734467, miny + 0.0016521602519787848, minz + 0.01673138700425625),
536 (maxx, miny + 0.01807751110754907, maxz - 0.013284613378345966),
537 (minx + 0.037951841950416565, miny + 0.01876595593057573, maxz - 0.0022382568567991257),
538 (maxx - 0.037013158202171326, miny + 0.01818701229058206, maxz - 0.011527448892593384),
539 (minx + 0.11922498792409897, miny + 0.01833972311578691, maxz - 0.009077141061425209),
540 (maxx - 0.1185697615146637, miny + 0.018242560094222426, maxz - 0.010636141523718834),
541 (minx + 0.0009386688470840454, miny + 0.018875457113608718, maxz - 0.0004810914397239685),
542 (maxx, maxy - 0.09558254480361938, minz + 0.007481573149561882),
543 (minx + 0.037951841950416565, maxy - 0.09489411115646362, minz + 0.018527928739786148),
544 (maxx - 0.037013158202171326, maxy - 0.09547305107116699, minz + 0.00923873856663704),
545 (minx + 0.1202642098069191, maxy - 0.09396132826805115, maxz - 0.00762566365301609),
546 (maxx - 0.11753053963184357, maxy - 0.09405851364135742, maxz - 0.009184665977954865),
547 (minx + 0.0009386688470840454, maxy - 0.09478458762168884, minz + 0.02028509508818388),
548 (maxx - 0.07891011238098145, miny, minz + 0.007610190659761429),
549 (maxx - 0.07797147333621979, maxy - 0.0008960962295532227, minz),
550 (maxx - 0.07804363965988159, miny + 0.010165706044062972, maxz - 0.0158919645473361),
551 (maxx - 0.07797256112098694, maxy - 0.007349073886871338, minz + 0.0003793146461248398),
552 (maxx - 0.0788065642118454, miny + 0.0012149333488196135, minz + 0.009715777821838856),
553 (maxx - 0.07804234325885773, miny + 0.01788672781549394, maxz - 0.016345815733075142),
554 (maxx - 0.07752272486686707, maxy - 0.09509384632110596, minz + 0.015323184430599213),
555 (minx + 0.07725311815738678, miny + 5.473045166581869e-05, minz + 0.008488442748785019),
556 (minx + 0.07819175720214844, maxy - 0.0008413791656494141, minz + 0.0008782520890235901),
557 (minx + 0.07811960577964783, miny + 0.010220450116321445, maxz - 0.015013711526989937),
558 (minx + 0.07819066941738129, maxy - 0.007294327020645142, minz + 0.001257568597793579),
559 (minx + 0.07735666632652283, miny + 0.0012696638295892626, minz + 0.010594029910862446),
560 (minx + 0.07812090218067169, miny + 0.017941456055268645, maxz - 0.015467563644051552),
561 (minx + 0.07864050567150116, maxy - 0.09503909945487976, minz + 0.016201436519622803)]
563 # Faces
564 myfaces = [(20, 18, 2, 6), (23, 19, 7, 3), (45, 20, 6, 43), (52, 21, 10, 50), (21, 22, 11, 10),
565 (27, 25, 12, 15), (24, 26, 14, 13), (46, 27, 15, 44), (53, 28, 16, 51), (28, 29, 17, 16),
566 (38, 36, 18, 20), (41, 37, 19, 23), (48, 38, 20, 45), (55, 39, 21, 52), (39, 40, 22, 21),
567 (4, 0, 25, 27), (1, 5, 26, 24), (42, 4, 27, 46), (49, 8, 28, 53), (8, 9, 29, 28),
568 (15, 12, 30, 32), (13, 14, 31, 35), (44, 15, 32, 47), (51, 16, 33, 54), (16, 17, 34, 33),
569 (32, 30, 36, 38), (35, 31, 37, 41), (47, 32, 38, 48), (54, 33, 39, 55), (33, 34, 40, 39),
570 (22, 45, 43, 11), (29, 46, 44, 17), (40, 48, 45, 22), (9, 42, 46, 29), (17, 44, 47, 34),
571 (34, 47, 48, 40), (19, 52, 50, 7), (26, 53, 51, 14), (37, 55, 52, 19), (5, 49, 53, 26),
572 (14, 51, 54, 31), (31, 54, 55, 37)]
574 return myvertex, myfaces, maxx - minx, maxy - miny