diff options
author | Stephen Leger <stephen@3dservices.ch> | 2017-08-03 16:59:40 +0300 |
---|---|---|
committer | Stephen Leger <stephen@3dservices.ch> | 2017-08-09 06:35:31 +0300 |
commit | 948149cefc5501497b6500b6436f86418eb08367 (patch) | |
tree | 278d86afe561e0411fd5cfc8c8946df3bcbf1eeb /archipack/archipack_roof.py | |
parent | eb806acba079b5ead2dc0f23dbfdc150f9a1c6cf (diff) |
archipack: fix ACCESS_VIOLATION error in childs roofs cutters
Diffstat (limited to 'archipack/archipack_roof.py')
-rw-r--r-- | archipack/archipack_roof.py | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/archipack/archipack_roof.py b/archipack/archipack_roof.py index 44a035e4..aba6f12e 100644 --- a/archipack/archipack_roof.py +++ b/archipack/archipack_roof.py @@ -1770,8 +1770,8 @@ class RoofGenerator(CutAbleGenerator): verts.extend([lM * p for p in t_pts]) faces.extend([tuple(i + v for i in f) for f in t_faces]) - id = randint(idmat, idmat + rand) - t_mats = [id for i in range(n_faces)] + mid = randint(idmat, idmat + rand) + t_mats = [mid for i in range(n_faces)] matids.extend(t_mats) uvs.extend(t_uvs) @@ -3244,7 +3244,7 @@ class RoofGenerator(CutAbleGenerator): if hole_obj is None: context.scene.objects.active = o.parent - bpy.ops.archipack.roof_cutter(parent=d.t_parent) + bpy.ops.archipack.roof_cutter(parent=d.t_parent, auto_manipulate=False) hole_obj = context.active_object else: context.scene.objects.active = hole_obj @@ -3377,7 +3377,7 @@ class RoofGenerator(CutAbleGenerator): for widx, seg in enumerate(wall_t): t0 = 0 last_d = -1 - id = 1 + sid = 1 for s in seg: t, z, d = s if t == 0: @@ -3389,15 +3389,15 @@ class RoofGenerator(CutAbleGenerator): else: wd.parts[widx].z[0] = z wd.parts[widx].t[0] = t - id = 1 + sid = 1 else: if d - last_d < 0.001: wd.parts[widx].n_splits -= 1 continue - wd.parts[widx].z[id] = z - wd.parts[widx].t[id] = t - t0 + wd.parts[widx].z[sid] = z + wd.parts[widx].t[sid] = t - t0 t0 = t - id += 1 + sid += 1 last_d = d if wd.closed: @@ -4766,10 +4766,13 @@ class archipack_roof_cutter(ArchipackCutter, ArchipackObject, Manipulable, Prope Create boundary from roof """ self.auto_update = False + self.manipulable_disable(context) self.from_points(pts) + self.manipulable_refresh = True self.auto_update = True if update_parent: self.update_parent(context, o) + # print("update_points") def update_parent(self, context, o): @@ -4780,6 +4783,7 @@ class archipack_roof_cutter(ArchipackCutter, ArchipackObject, Manipulable, Prope d.update(context, update_childs=False, update_hole=False) o.parent.select = False context.scene.objects.active = o + # print("update_parent") class ARCHIPACK_PT_roof_cutter(Panel): @@ -4800,19 +4804,23 @@ class ARCHIPACK_PT_roof_cutter(Panel): layout = self.layout scene = context.scene box = layout.box() - box.operator('archipack.roof_cutter_manipulate', icon='HAND') - box.prop(prop, 'operation', text="") - box = layout.box() - box.label(text="From curve") - box.prop_search(prop, "user_defined_path", scene, "objects", text="", icon='OUTLINER_OB_CURVE') - if prop.user_defined_path != "": - box.prop(prop, 'user_defined_resolution') - # box.prop(prop, 'x_offset') - # box.prop(prop, 'angle_limit') - """ - box.prop_search(prop, "boundary", scene, "objects", text="", icon='OUTLINER_OB_CURVE') - """ - prop.draw(layout, context) + if prop.boundary != "": + box.label(text="Auto Cutter:") + box.label(text=prop.boundary) + else: + box.operator('archipack.roof_cutter_manipulate', icon='HAND') + box.prop(prop, 'operation', text="") + box = layout.box() + box.label(text="From curve") + box.prop_search(prop, "user_defined_path", scene, "objects", text="", icon='OUTLINER_OB_CURVE') + if prop.user_defined_path != "": + box.prop(prop, 'user_defined_resolution') + # box.prop(prop, 'x_offset') + # box.prop(prop, 'angle_limit') + """ + box.prop_search(prop, "boundary", scene, "objects", text="", icon='OUTLINER_OB_CURVE') + """ + prop.draw(layout, context) class ARCHIPACK_PT_roof(Panel): |