[Bf-extensions-cvs] [489e5660] blender2.8: archipack 2.8 compatibility (step2)

Stephen Leger noreply at git.blender.org
Sun Nov 18 14:07:31 CET 2018


Commit: 489e566047d8dab906ceceec4e73ab3d59f9830c
Author: Stephen Leger
Date:   Sun Nov 18 14:06:37 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBA489e566047d8dab906ceceec4e73ab3d59f9830c

archipack 2.8 compatibility (step2)

===================================================================

M	archipack/__init__.py
M	archipack/archipack_autoboolean.py
M	archipack/archipack_cutter.py
M	archipack/archipack_door.py
M	archipack/archipack_fence.py
M	archipack/archipack_floor.py
M	archipack/archipack_handle.py
M	archipack/archipack_manipulator.py
M	archipack/archipack_material.py
M	archipack/archipack_object.py
M	archipack/archipack_preset.py
M	archipack/archipack_reference_point.py
M	archipack/archipack_roof.py
M	archipack/archipack_slab.py
M	archipack/archipack_snap.py
M	archipack/archipack_stair.py
M	archipack/archipack_truss.py
M	archipack/archipack_wall2.py
M	archipack/archipack_window.py

===================================================================

diff --git a/archipack/__init__.py b/archipack/__init__.py
index 74f4f761..6c30d218 100644
--- a/archipack/__init__.py
+++ b/archipack/__init__.py
@@ -301,30 +301,9 @@ class Archipack_Pref(AddonPreferences):
         col.prop(self, "constant_handle_size")
 
 # ----------------------------------------------------
-# Archipack panels
+# Archipack panel
 # ----------------------------------------------------
 
-
-class TOOLS_PT_Archipack_Tools(Panel):
-    bl_label = "Archipack Tools"
-    bl_idname = "TOOLS_PT_Archipack_Tools"
-    bl_space_type = "VIEW_3D"
-    bl_region_type = "TOOLS"
-    # bl_category = "Tools"
-    bl_context = "objectmode"
-
-    @classmethod
-    def poll(self, context):
-        return True
-
-    def draw(self, context):
-        wm = context.window_manager
-        layout = self.layout
-        box = layout.box()
-        box.label(text="Auto boolean")
-        box.operator("archipack.auto_boolean", text="AutoBoolean", icon='AUTO').mode = 'HYBRID'
-
-
 class TOOLS_PT_Archipack_Create(Panel):
     bl_label = "Archipack"
     bl_idname = "TOOLS_PT_Archipack_Create"
@@ -342,9 +321,11 @@ class TOOLS_PT_Archipack_Create(Panel):
 
         icons = icons_collection["main"]
         layout = self.layout
+        box = layout.box()
+        box.operator("archipack.auto_boolean", text="Boolean", icon='AUTO').mode = 'HYBRID'
         row = layout.row(align=True)
         box = row.box()
-        box.label(text="Objects")
+        box.label(text="Create")
         row = box.row(align=True)
         row.operator("archipack.window_preset_menu",
                     text="Window",
@@ -508,7 +489,6 @@ def register():
     archipack_floor.register()
     archipack_rendering.register()
     bpy.utils.register_class(Archipack_Pref)
-    bpy.utils.register_class(TOOLS_PT_Archipack_Tools)
     bpy.utils.register_class(TOOLS_PT_Archipack_Create)
     bpy.utils.register_class(ARCHIPACK_MT_create)
     bpy.types.VIEW3D_MT_mesh_add.append(menu_func)
@@ -518,8 +498,6 @@ def unregister():
     global icons_collection
     bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)
     bpy.utils.unregister_class(ARCHIPACK_MT_create)
-
-    bpy.utils.unregister_class(TOOLS_PT_Archipack_Tools)
     bpy.utils.unregister_class(TOOLS_PT_Archipack_Create)
     bpy.utils.unregister_class(Archipack_Pref)
     archipack_material.unregister()
diff --git a/archipack/archipack_autoboolean.py b/archipack/archipack_autoboolean.py
index ad0e28d8..8e4df558 100644
--- a/archipack/archipack_autoboolean.py
+++ b/archipack/archipack_autoboolean.py
@@ -28,9 +28,9 @@ import bpy
 from bpy.types import Operator
 from bpy.props import EnumProperty
 from mathutils import Vector
+from . archipack_object import ArchipackCollectionManager
 
-
-class ArchipackBoolManager():
+class ArchipackBoolManager(ArchipackCollectionManager):
     """
         Handle three methods for booleans
         - interactive: one modifier for each hole right on wall
@@ -196,7 +196,7 @@ class ArchipackBoolManager():
                     m.object = None
                 o.modifiers.remove(m)
             if h is not None:
-                context.scene.collection.objects.unlink(h)
+                self.unlink_object_from_scene(h)
                 bpy.data.objects.remove(h, do_unlink=True)
 
     # Mixed
@@ -204,7 +204,7 @@ class ArchipackBoolManager():
         # print("create_merge_basis")
         h = bpy.data.meshes.new("AutoBoolean")
         hole_obj = bpy.data.objects.new("AutoBoolean", h)
-        context.scene.collection.objects.link(hole_obj)
+        self.link_object_to_scene(context, hole_obj)
         hole_obj['archipack_hybridhole'] = True
         if wall.parent is not None:
             hole_obj.parent = wall.parent
@@ -299,7 +299,7 @@ class ArchipackBoolManager():
                     to_delete.append([m, h])
             # remove modifier and holes not found in new list
             self.remove_modif_and_object(context, hole_obj, to_delete)
-            # context.scene.collection.objects.unlink(hole_obj)
+            self.unlink_object_from_scene(hole_obj)
             bpy.data.objects.remove(hole_obj, do_unlink=True)
 
         to_delete = []
@@ -546,14 +546,6 @@ class ARCHIPACK_OT_single_boolean(Operator):
             ),
         default='HYBRID'
         )
-    solver_mode : EnumProperty(
-        name="Solver",
-        items=(
-            ('CARVE', 'CARVE', 'Slow but robust (could be slow in hybrid mode with many holes)', 0),
-            ('BMESH', 'BMESH', 'Fast but more prone to errors', 1)
-            ),
-        default='BMESH'
-        )
     """
         Wall must be active object
         window or door must be selected
@@ -609,7 +601,6 @@ class ARCHIPACK_OT_auto_boolean(Operator):
         layout = self.layout
         row = layout.row()
         row.prop(self, 'mode')
-        row.prop(self, 'solver_mode')
 
     def execute(self, context):
         if context.mode == "OBJECT":
diff --git a/archipack/archipack_cutter.py b/archipack/archipack_cutter.py
index d46dd58f..3b9f424d 100644
--- a/archipack/archipack_cutter.py
+++ b/archipack/archipack_cutter.py
@@ -655,11 +655,8 @@ class ArchipackCutter():
     parts_expand : BoolProperty(
             default=False
             )
-    closed : BoolProperty(
-            description="keep closed to be wall snap manipulator compatible",
-            options={'SKIP_SAVE'},
-            default=True
-            )
+
+    closed = True
 
     def draw(self, layout, context):
         box = layout.box()
@@ -849,7 +846,8 @@ class ArchipackCutter():
         self.update_parent(context, o)
 
     def update_path(self, context):
-        user_def_path = context.scene.objects.get(self.user_defined_path)
+
+        user_def_path = context.scene.objects.get(self.user_defined_path.strip())
         if user_def_path is not None and user_def_path.type == 'CURVE':
             self.from_spline(context,
                 user_def_path.matrix_world,
diff --git a/archipack/archipack_door.py b/archipack/archipack_door.py
index 9c63082b..03e3d5e1 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, ArchipackDrawTool
+from .archipack_object import ArchipackObject, ArchipackCreateTool, ArchipackDrawTool, ArchipackCollectionManager
 from .archipack_gl import FeedbackPanel
 from .archipack_keymaps import Keymaps
 
@@ -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.collection.objects.unlink(handle)
+            self.unlink_object_from_scene(handle)
             bpy.data.objects.remove(handle, do_unlink=True)
 
     def update(self, context):
@@ -600,7 +600,7 @@ class ARCHIPACK_PT_door_panel(Panel):
 # ------------------------------------------------------------------
 
 
-class ARCHIPACK_OT_door_panel(Operator):
+class ARCHIPACK_OT_door_panel(ArchipackCollectionManager, Operator):
     bl_idname = "archipack.door_panel"
     bl_label = "Door model 1"
     bl_description = "Door model 1"
@@ -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.collection.objects.link(o)
+        self.link_object_to_scene(context, o)
         o.lock_location[0] = True
         o.lock_location[1] = True
         o.lock_location[2] = True
@@ -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.collection.objects.unlink(child)
+                self.unlink_object_from_scene(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.collection.objects.unlink(handle)
+            self.unlink_object_from_scene(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.collection.objects.unlink(c)
+                self.unlink_object_from_scene(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.collection.objects.link(p)
+                self.link_object_to_scene(context, 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.collection.objects.unlink(h)
+                self.unlink_object_from_scene(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.collection.objects.link(l_hole)
+            self.link_object_to_scene(context, l_hole)
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list