[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