diff options
author | Stephen Leger <stephen@3dservices.ch> | 2018-11-16 17:31:26 +0300 |
---|---|---|
committer | Stephen Leger <stephen@3dservices.ch> | 2018-11-16 17:34:51 +0300 |
commit | bfbbd112c170d96e86838208b8781fd46df52514 (patch) | |
tree | 9fda29f608a32f8ac5a88e5873730bf6422dd280 /archipack/archipack_door.py | |
parent | 64198b8817042962dcdedc71bb81ee9492b19a4d (diff) |
archipack 2.8 compatibility (step1)
Diffstat (limited to 'archipack/archipack_door.py')
-rw-r--r-- | archipack/archipack_door.py | 272 |
1 files changed, 136 insertions, 136 deletions
diff --git a/archipack/archipack_door.py b/archipack/archipack_door.py index 3e85cf31..9c63082b 100644 --- a/archipack/archipack_door.py +++ b/archipack/archipack_door.py @@ -40,7 +40,7 @@ from .panel import Panel as DoorPanel from .archipack_handle import create_handle, door_handle_horizontal_01 from .archipack_manipulator import Manipulable from .archipack_preset import ArchipackPreset, PresetMenuOperator -from .archipack_object import ArchipackObject, ArchipackCreateTool, ArchpackDrawTool +from .archipack_object import ArchipackObject, ArchipackCreateTool, ArchipackDrawTool from .archipack_gl import FeedbackPanel from .archipack_keymaps import Keymaps @@ -60,83 +60,83 @@ def update_childs(self, context): class archipack_door_panel(ArchipackObject, PropertyGroup): - x = FloatProperty( + x : FloatProperty( name='Width', min=0.25, default=100.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='Width' ) - y = FloatProperty( + y : FloatProperty( name='Depth', min=0.001, default=0.02, precision=2, unit='LENGTH', subtype='DISTANCE', description='depth' ) - z = FloatProperty( + z : FloatProperty( name='Height', min=0.1, default=2.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='height' ) - direction = IntProperty( + direction : IntProperty( name="Direction", min=0, max=1, description="open direction" ) - model = IntProperty( + model : IntProperty( name="Model", min=0, max=3, default=0, description="Model" ) - chanfer = FloatProperty( + chanfer : FloatProperty( name='Bevel', min=0.001, default=0.005, precision=3, unit='LENGTH', subtype='DISTANCE', description='chanfer' ) - panel_spacing = FloatProperty( + panel_spacing : FloatProperty( name='Spacing', min=0.001, default=0.1, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance between panels' ) - panel_bottom = FloatProperty( + panel_bottom : FloatProperty( name='Bottom', min=0.0, default=0.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from bottom' ) - panel_border = FloatProperty( + panel_border : FloatProperty( name='Border', min=0.001, default=0.2, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from border' ) - panels_x = IntProperty( + panels_x : IntProperty( name="# h", min=1, max=50, default=1, description="panels h" ) - panels_y = IntProperty( + panels_y : IntProperty( name="# v", min=1, max=50, default=1, description="panels v" ) - panels_distrib = EnumProperty( + panels_distrib : EnumProperty( name='distribution', items=( ('REGULAR', 'Regular', '', 0), @@ -144,7 +144,7 @@ class archipack_door_panel(ArchipackObject, PropertyGroup): ), default='REGULAR' ) - handle = EnumProperty( + handle : EnumProperty( name='Shape', items=( ('NONE', 'No handle', '', 0), @@ -559,7 +559,7 @@ class archipack_door_panel(ArchipackObject, PropertyGroup): def remove_handle(self, context, o): handle = self.find_handle(o) if handle is not None: - context.scene.objects.unlink(handle) + context.scene.collection.objects.unlink(handle) bpy.data.objects.remove(handle, do_unlink=True) def update(self, context): @@ -584,7 +584,7 @@ class ARCHIPACK_PT_door_panel(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' # bl_context = 'object' - bl_category = 'ArchiPack' + bl_category = 'Archipack' @classmethod def poll(cls, context): @@ -606,82 +606,82 @@ class ARCHIPACK_OT_door_panel(Operator): bl_description = "Door model 1" bl_category = 'Archipack' bl_options = {'REGISTER', 'UNDO'} - x = FloatProperty( + x : FloatProperty( name='Width', min=0.1, default=0.80, precision=2, unit='LENGTH', subtype='DISTANCE', description='Width' ) - z = FloatProperty( + z : FloatProperty( name='Height', min=0.1, default=2.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='height' ) - y = FloatProperty( + y : FloatProperty( name='Depth', min=0.001, default=0.02, precision=2, unit='LENGTH', subtype='DISTANCE', description='Depth' ) - direction = IntProperty( + direction : IntProperty( name="Direction", min=0, max=1, description="open direction" ) - model = IntProperty( + model : IntProperty( name="Model", min=0, max=3, description="panel type" ) - chanfer = FloatProperty( + chanfer : FloatProperty( name='Bevel', min=0.001, default=0.005, precision=3, unit='LENGTH', subtype='DISTANCE', description='chanfer' ) - panel_spacing = FloatProperty( + panel_spacing : FloatProperty( name='Spacing', min=0.001, default=0.1, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance between panels' ) - panel_bottom = FloatProperty( + panel_bottom : FloatProperty( name='Bottom', min=0.0, default=0.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from bottom' ) - panel_border = FloatProperty( + panel_border : FloatProperty( name='Border', min=0.001, default=0.2, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from border' ) - panels_x = IntProperty( + panels_x : IntProperty( name="# h", min=1, max=50, default=1, description="panels h" ) - panels_y = IntProperty( + panels_y : IntProperty( name="# v", min=1, max=50, default=1, description="panels v" ) - panels_distrib = EnumProperty( + panels_distrib : EnumProperty( name='Distribution', items=( ('REGULAR', 'Regular', '', 0), @@ -689,7 +689,7 @@ class ARCHIPACK_OT_door_panel(Operator): ), default='REGULAR' ) - handle = EnumProperty( + handle : EnumProperty( name='Shape', items=( ('NONE', 'No handle', '', 0), @@ -697,14 +697,14 @@ class ARCHIPACK_OT_door_panel(Operator): ), default='BOTH' ) - material = StringProperty( + material : StringProperty( default="" ) def draw(self, context): layout = self.layout row = layout.row() - row.label("Use Properties panel (N) to define parms", icon='INFO') + row.label(text="Use Properties panel (N) to define parms", icon='INFO') def create(self, context): """ @@ -727,7 +727,7 @@ class ARCHIPACK_OT_door_panel(Operator): d.panels_x = self.panels_x d.panels_y = self.panels_y d.handle = self.handle - context.scene.objects.link(o) + context.scene.collection.objects.link(o) o.lock_location[0] = True o.lock_location[1] = True o.lock_location[2] = True @@ -736,8 +736,8 @@ class ARCHIPACK_OT_door_panel(Operator): o.lock_scale[0] = True o.lock_scale[1] = True o.lock_scale[2] = True - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o m = o.archipack_material.add() m.category = "door" m.material = self.material @@ -751,8 +751,8 @@ class ARCHIPACK_OT_door_panel(Operator): if context.mode == "OBJECT": bpy.ops.object.select_all(action="DESELECT") o = self.create(context) - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o return {'FINISHED'} else: self.report({'WARNING'}, "Archipack: Option only valid in Object mode") @@ -769,14 +769,14 @@ class ARCHIPACK_OT_select_parent(Operator): def draw(self, context): layout = self.layout row = layout.row() - row.label("Use Properties panel (N) to define parms", icon='INFO') + row.label(text="Use Properties panel (N) to define parms", icon='INFO') def execute(self, context): if context.mode == "OBJECT": if context.active_object is not None and context.active_object.parent is not None: bpy.ops.object.select_all(action="DESELECT") - context.active_object.parent.select = True - context.scene.objects.active = context.active_object.parent + context.active_object.parent.select_set(state=True) + context.view_layer.objects.active = context.active_object.parent return {'FINISHED'} else: self.report({'WARNING'}, "Archipack: Option only valid in Object mode") @@ -789,117 +789,117 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): parent parametric object create/remove/update her own childs """ - x = FloatProperty( + x : FloatProperty( name='Width', min=0.25, default=100.0, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='Width', update=update, ) - y = FloatProperty( + y : FloatProperty( name='Depth', min=0.1, default=0.20, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='Depth', update=update, ) - z = FloatProperty( + z : FloatProperty( name='Height', min=0.1, default=2.0, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='height', update=update, ) - frame_x = FloatProperty( + frame_x : FloatProperty( name='Width', min=0, default=0.1, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='frame width', update=update, ) - frame_y = FloatProperty( + frame_y : FloatProperty( name='Depth', default=0.03, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='frame depth', update=update, ) - direction = IntProperty( + direction : IntProperty( name="Direction", min=0, max=1, description="open direction", update=update, ) - door_y = FloatProperty( + door_y : FloatProperty( name='Depth', min=0.001, default=0.02, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='depth', update=update, ) - door_offset = FloatProperty( + door_offset : FloatProperty( name='Offset', min=0, default=0, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='offset', update=update, ) - model = IntProperty( + model : IntProperty( name="Model", min=0, max=3, default=0, description="Model", update=update, ) - n_panels = IntProperty( + n_panels : IntProperty( name="Panels", min=1, max=2, default=1, description="number of panels", update=update ) - chanfer = FloatProperty( + chanfer : FloatProperty( name='Bevel', min=0.001, default=0.005, precision=3, step=0.01, unit='LENGTH', subtype='DISTANCE', description='chanfer', update=update_childs, ) - panel_spacing = FloatProperty( + panel_spacing : FloatProperty( name='Spacing', min=0.001, default=0.1, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='distance between panels', update=update_childs, ) - panel_bottom = FloatProperty( + panel_bottom : FloatProperty( name='Bottom', min=0.0, default=0.0, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='distance from bottom', update=update_childs, ) - panel_border = FloatProperty( + panel_border : FloatProperty( name='Border', min=0.001, default=0.2, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='distance from border', update=update_childs, ) - panels_x = IntProperty( + panels_x : IntProperty( name="# h", min=1, max=50, default=1, description="panels h", update=update_childs, ) - panels_y = IntProperty( + panels_y : IntProperty( name="# v", min=1, max=50, default=1, description="panels v", update=update_childs, ) - panels_distrib = EnumProperty( + panels_distrib : EnumProperty( name='Distribution', items=( ('REGULAR', 'Regular', '', 0), @@ -907,7 +907,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): ), default='REGULAR', update=update_childs, ) - handle = EnumProperty( + handle : EnumProperty( name='Handle', items=( ('NONE', 'No handle', '', 0), @@ -915,19 +915,19 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): ), default='BOTH', update=update_childs, ) - hole_margin = FloatProperty( + hole_margin : FloatProperty( name='Hole margin', min=0.0, default=0.1, precision=2, step=1, unit='LENGTH', subtype='DISTANCE', description='how much hole surround wall' ) - flip = BoolProperty( + flip : BoolProperty( default=False, update=update, description='flip outside and outside material of hole' ) - auto_update = BoolProperty( + auto_update : BoolProperty( options={'SKIP_SAVE'}, default=True, update=update @@ -1032,13 +1032,13 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): if archipack_door_panel.filter(child): self.remove_handle(context, child) to_remove -= 1 - context.scene.objects.unlink(child) + context.scene.collection.objects.unlink(child) bpy.data.objects.remove(child, do_unlink=True) def remove_handle(self, context, o): handle = self.find_handle(o) if handle is not None: - context.scene.objects.unlink(handle) + context.scene.collection.objects.unlink(handle) bpy.data.objects.remove(handle, do_unlink=True) def create_childs(self, context, o): @@ -1112,7 +1112,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): id = c_names.index(c.data.name) except: self.remove_handle(context, c) - context.scene.objects.unlink(c) + context.scene.collection.objects.unlink(c) bpy.data.objects.remove(c, do_unlink=True) # children ordering may not be the same, so get the right l_childs order @@ -1130,7 +1130,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): for i, child in enumerate(childs): if order[i] < 0: p = bpy.data.objects.new("DoorPanel", child.data) - context.scene.objects.link(p) + context.scene.collection.objects.link(p) p.lock_location[0] = True p.lock_location[1] = True p.lock_location[2] = True @@ -1158,7 +1158,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): # MaterialUtils.add_handle_materials(h) h.location = handle.location.copy() elif h is not None: - context.scene.objects.unlink(h) + context.scene.collection.objects.unlink(h) bpy.data.objects.remove(h, do_unlink=True) def _synch_hole(self, context, linked, hole): @@ -1166,7 +1166,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): if l_hole is None: l_hole = bpy.data.objects.new("hole", hole.data) l_hole['archipack_hole'] = True - context.scene.objects.link(l_hole) + context.scene.collection.objects.link(l_hole) l_hole.parent = linked l_hole.matrix_world = linked.matrix_world.copy() l_hole.location = hole.location.copy() @@ -1178,8 +1178,8 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): synch childs nodes of linked objects """ bpy.ops.object.select_all(action='DESELECT') - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o childs = self.get_childs_panels(context, o) hole = self.find_hole(o) bpy.ops.object.select_linked(type='OBDATA') @@ -1253,8 +1253,8 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): child.matrix_world = o.matrix_world.copy() else: child = childs[child_n - 1] - child.select = True - context.scene.objects.active = child + child.select_set(state=True) + context.view_layer.objects.active = child props = archipack_door_panel.datablock(child) if props is not None: props.x = x @@ -1314,7 +1314,7 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): if hole_obj is None: m = bpy.data.meshes.new("hole") hole_obj = bpy.data.objects.new("hole", m) - context.scene.objects.link(hole_obj) + context.scene.collection.objects.link(hole_obj) hole_obj['archipack_hole'] = True hole_obj.parent = o hole_obj.matrix_world = o.matrix_world.copy() @@ -1339,19 +1339,19 @@ class archipack_door(ArchipackObject, Manipulable, PropertyGroup): m = bpy.data.meshes.new("hole") o = bpy.data.objects.new("hole", m) o['archipack_robusthole'] = True - context.scene.objects.link(o) + context.scene.collection.objects.link(o) v = Vector((0, 0, 0)) offset = Vector((0, -0.001, 0)) size = Vector((self.x + 2 * self.frame_x, self.z + self.frame_x + 0.001, self.y)) verts = hole.vertices(16, offset, v, v, size, v, 0, 0, shape_z=None, path_type='RECTANGLE') - verts = [tM * Vector(v) for v in verts] + verts = [tM @ Vector(v) for v in verts] faces = hole.faces(16, path_type='RECTANGLE') matids = hole.mat(16, 0, 1, path_type='RECTANGLE') uvs = hole.uv(16, v, v, size, v, 0, 0, 0, 0, path_type='RECTANGLE') bmed.buildmesh(context, o, verts, faces, matids=matids, uvs=uvs) - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o return o @@ -1360,7 +1360,7 @@ class ARCHIPACK_PT_door(Panel): bl_label = "Door" bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_category = 'ArchiPack' + bl_category = 'Archipack' @classmethod def poll(cls, context): @@ -1371,7 +1371,7 @@ class ARCHIPACK_PT_door(Panel): if not archipack_door.filter(o): return layout = self.layout - layout.operator('archipack.door_manipulate', icon='HAND') + layout.operator('archipack.door_manipulate', icon='VIEW_PAN') props = archipack_door.datablock(o) row = layout.row(align=True) row.operator('archipack.door', text="Refresh", icon='FILE_REFRESH').mode = 'REFRESH' @@ -1382,8 +1382,8 @@ class ARCHIPACK_PT_door(Panel): # box.label(text="Styles") row = box.row(align=True) row.operator("archipack.door_preset_menu", text=bpy.types.ARCHIPACK_OT_door_preset_menu.bl_label) - row.operator("archipack.door_preset", text="", icon='ZOOMIN') - row.operator("archipack.door_preset", text="", icon='ZOOMOUT').remove_active = True + row.operator("archipack.door_preset", text="", icon='ADD') + row.operator("archipack.door_preset", text="", icon='REMOVE').remove_active = True row = layout.row() box = row.box() box.label(text="Size") @@ -1434,82 +1434,82 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): bl_description = "Door" bl_category = 'Archipack' bl_options = {'REGISTER', 'UNDO'} - x = FloatProperty( + x : FloatProperty( name='width', min=0.1, default=0.80, precision=2, unit='LENGTH', subtype='DISTANCE', description='Width' ) - y = FloatProperty( + y : FloatProperty( name='depth', min=0.1, default=0.20, precision=2, unit='LENGTH', subtype='DISTANCE', description='Depth' ) - z = FloatProperty( + z : FloatProperty( name='height', min=0.1, default=2.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='height' ) - direction = IntProperty( + direction : IntProperty( name="direction", min=0, max=1, description="open direction" ) - n_panels = IntProperty( + n_panels : IntProperty( name="panels", min=1, max=2, default=1, description="number of panels" ) - chanfer = FloatProperty( + chanfer : FloatProperty( name='chanfer', min=0.001, default=0.005, precision=3, unit='LENGTH', subtype='DISTANCE', description='chanfer' ) - panel_spacing = FloatProperty( + panel_spacing : FloatProperty( name='spacing', min=0.001, default=0.1, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance between panels' ) - panel_bottom = FloatProperty( + panel_bottom : FloatProperty( name='bottom', default=0.0, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from bottom' ) - panel_border = FloatProperty( + panel_border : FloatProperty( name='border', min=0.001, default=0.2, precision=2, unit='LENGTH', subtype='DISTANCE', description='distance from border' ) - panels_x = IntProperty( + panels_x : IntProperty( name="panels h", min=1, max=50, default=1, description="panels h" ) - panels_y = IntProperty( + panels_y : IntProperty( name="panels v", min=1, max=50, default=1, description="panels v" ) - panels_distrib = EnumProperty( + panels_distrib : EnumProperty( name='distribution', items=( ('REGULAR', 'Regular', '', 0), @@ -1517,7 +1517,7 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): ), default='REGULAR' ) - handle = EnumProperty( + handle : EnumProperty( name='Shape', items=( ('NONE', 'No handle', '', 0), @@ -1525,7 +1525,7 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): ), default='BOTH' ) - mode = EnumProperty( + mode : EnumProperty( items=( ('CREATE', 'Create', '', 0), ('DELETE', 'Delete', '', 1), @@ -1556,13 +1556,13 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): d.panels_x = self.panels_x d.panels_y = self.panels_y d.handle = self.handle - context.scene.objects.link(o) - o.select = True - context.scene.objects.active = o + context.scene.collection.objects.link(o) + o.select_set(state=True) + context.view_layer.objects.active = o self.add_material(o) self.load_preset(d) - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o return o def delete(self, context): @@ -1571,16 +1571,16 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): bpy.ops.archipack.disable_manipulate() for child in o.children: if 'archipack_hole' in child: - context.scene.objects.unlink(child) + context.scene.collection.objects.unlink(child) bpy.data.objects.remove(child, do_unlink=True) elif child.data is not None and 'archipack_door_panel' in child.data: for handle in child.children: if 'archipack_handle' in handle: - context.scene.objects.unlink(handle) + context.scene.collection.objects.unlink(handle) bpy.data.objects.remove(handle, do_unlink=True) - context.scene.objects.unlink(child) + context.scene.collection.objects.unlink(child) bpy.data.objects.remove(child, do_unlink=True) - context.scene.objects.unlink(o) + context.scene.collection.objects.unlink(o) bpy.data.objects.remove(o, do_unlink=True) def update(self, context): @@ -1593,8 +1593,8 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): if linked != o: archipack_door.datablock(linked).update(context) bpy.ops.object.select_all(action="DESELECT") - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o def unique(self, context): act = context.active_object @@ -1602,12 +1602,12 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): bpy.ops.object.select_all(action="DESELECT") for o in sel: if archipack_door.filter(o): - o.select = True + o.select_set(state=True) for child in o.children: if 'archipack_hole' in child or (child.data is not None and 'archipack_door_panel' in child.data): child.hide_select = False - child.select = True + child.select_set(state=True) if len(context.selected_objects) > 0: bpy.ops.object.make_single_user(type='SELECTED_OBJECTS', object=True, obdata=True, material=False, texture=False, animation=False) @@ -1615,9 +1615,9 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): if 'archipack_hole' in child: child.hide_select = True bpy.ops.object.select_all(action="DESELECT") - context.scene.objects.active = act + context.view_layer.objects.active = act for o in sel: - o.select = True + o.select_set(state=True) def execute(self, context): if context.mode == "OBJECT": @@ -1625,8 +1625,8 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): bpy.ops.object.select_all(action="DESELECT") o = self.create(context) o.location = bpy.context.scene.cursor_location - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o self.manipulate() elif self.mode == 'DELETE': self.delete(context) @@ -1640,14 +1640,14 @@ class ARCHIPACK_OT_door(ArchipackCreateTool, Operator): return {'CANCELLED'} -class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): +class ARCHIPACK_OT_door_draw(ArchipackDrawTool, Operator): bl_idname = "archipack.door_draw" bl_label = "Draw Doors" bl_description = "Draw Doors over walls" bl_category = 'Archipack' bl_options = {'REGISTER', 'UNDO'} - filepath = StringProperty(default="") + filepath : StringProperty(default="") feedback = None stack = [] object_name = "" @@ -1659,7 +1659,7 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): def draw(self, context): layout = self.layout row = layout.row() - row.label("Use Properties panel (N) to define parms", icon='INFO') + row.label(text="Use Properties panel (N) to define parms", icon='INFO') def draw_callback(self, _self, context): self.feedback.draw(context) @@ -1670,32 +1670,32 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): if archipack_door.filter(o): - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o if event.shift: bpy.ops.archipack.door(mode="UNIQUE") new_w = o.copy() new_w.data = o.data - context.scene.objects.link(new_w) + context.scene.collection.objects.link(new_w) # instance subs for child in o.children: if "archipack_hole" not in child: new_c = child.copy() new_c.data = child.data new_c.parent = new_w - context.scene.objects.link(new_c) + context.scene.collection.objects.link(new_c) # dup handle if any for c in child.children: new_h = c.copy() new_h.data = c.data new_h.parent = new_c - context.scene.objects.link(new_h) + context.scene.collection.objects.link(new_h) o = new_w - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o else: bpy.ops.archipack.door(auto_manipulate=False, filepath=self.filepath) @@ -1704,8 +1704,8 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): self.object_name = o.name bpy.ops.archipack.generate_hole('INVOKE_DEFAULT') - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o def modal(self, context, event): @@ -1722,14 +1722,14 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): # hide hole from raycast if hole is not None: - o.hide = True - hole.hide = True + o.hide_viewport = True + hole.hide_viewport = True - res, tM, wall, y = self.mouse_hover_wall(context, event) + res, tM, wall, width, y, z_offset = self.mouse_hover_wall(context, event) if hole is not None: - o.hide = False - hole.hide = False + o.hide_viewport = False + hole.hide_viewport = False if res and d is not None: o.matrix_world = tM @@ -1749,14 +1749,14 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): if event.type in {'LEFTMOUSE', 'RET', 'NUMPAD_ENTER', 'SPACE'}: if wall is not None: - context.scene.objects.active = wall - wall.select = True + context.view_layer.objects.active = wall + wall.select_set(state=True) if bpy.ops.archipack.single_boolean.poll(): bpy.ops.archipack.single_boolean() - wall.select = False + wall.select_set(state=False) # o must be a door here if d is not None: - context.scene.objects.active = o + context.view_layer.objects.active = o self.stack.append(o) self.add_object(context, event) context.active_object.matrix_world = tM @@ -1771,9 +1771,9 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): ): if len(self.stack) > 0: last = self.stack.pop() - context.scene.objects.active = last + context.view_layer.objects.active = last bpy.ops.archipack.door(mode="DELETE") - context.scene.objects.active = o + context.view_layer.objects.active = o return {'RUNNING_MODAL'} if event.value == 'RELEASE': @@ -1797,11 +1797,11 @@ class ARCHIPACK_OT_door_draw(ArchpackDrawTool, Operator): # invoke with alt pressed will use current object as basis for linked copy if self.filepath == '' and archipack_door.filter(context.active_object): o = context.active_object - context.scene.objects.active = None + context.view_layer.objects.active = None bpy.ops.object.select_all(action="DESELECT") if o is not None: - o.select = True - context.scene.objects.active = o + o.select_set(state=True) + context.view_layer.objects.active = o self.add_object(context, event) self.feedback = FeedbackPanel() self.feedback.instructions(context, "Draw a door", "Click & Drag over a wall", [ |