diff --git a/src/blenderbim/blenderbim/bim/export_ifc.py b/src/blenderbim/blenderbim/bim/export_ifc.py
index 1884f2cd96..e250c368e4 100644
--- a/src/blenderbim/blenderbim/bim/export_ifc.py
+++ b/src/blenderbim/blenderbim/bim/export_ifc.py
@@ -30,10 +30,10 @@ import ifcopenshell.api
import ifcopenshell.util.placement
import ifcopenshell.util.unit
from .. import tool
-import blenderbim.core.geometry
-import blenderbim.core.aggregate
-import blenderbim.core.spatial
-import blenderbim.core.style
+from ..core import geometry as core_geometry
+from ..core import aggregate as core_aggregate
+from ..core import spatial as core_spatial
+from ..core import style as core_style
from .ifc import IfcStore
from mathutils import Vector
from typing import Union
@@ -152,7 +152,7 @@ class IfcExporter:
return self.sync_grid_axis_object_placement(obj, element)
if not hasattr(element, "ObjectPlacement"):
return
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
return element
def sync_grid_axis_object_placement(self, obj: bpy.types.Object, element: ifcopenshell.entity_instance) -> None:
diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py
index 730ad37198..f57525ea44 100644
--- a/src/blenderbim/blenderbim/bim/handler.py
+++ b/src/blenderbim/blenderbim/bim/handler.py
@@ -23,7 +23,7 @@ import addon_utils
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.api.owner.settings
-import blenderbim.bim
+from .. import bim
from .. import tool
from ..core import owner as core_owner
from bpy.app.handlers import persistent
@@ -170,7 +170,7 @@ def subscribe_to(obj, data_path, callback):
def refresh_ui_data():
- from blenderbim.bim import modules
+ from . import modules
for name, value in modules.items():
try:
@@ -308,7 +308,7 @@ def load_post(scene):
# tab. We override default scene properties panels with our own poll
# to hide them unless the user has chosen to view Blender properties.
for panel in tool.Blender.get_scene_panels_list():
- if panel in blenderbim.bim.original_scene_panels_polls:
+ if panel in bim.original_scene_panels_polls:
continue
tool.Blender.override_scene_panel(panel)
tool.Blender.setup_tabs()
diff --git a/src/blenderbim/blenderbim/bim/ifc.py b/src/blenderbim/blenderbim/bim/ifc.py
index fcb36abc52..0690b5d80c 100644
--- a/src/blenderbim/blenderbim/bim/ifc.py
+++ b/src/blenderbim/blenderbim/bim/ifc.py
@@ -28,7 +28,7 @@ import importlib
import ifcopenshell
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper
-import blenderbim.bim.handler
+from . import handler as bim_handler
from .. import tool
from pathlib import Path
from ..tool.brick import BrickStore
@@ -253,11 +253,11 @@ class IfcStore:
else:
obj.BIMObjectProperties.ifc_definition_id = element.id()
- blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
+ bim_handler.subscribe_to(obj, "name", bim_handler.name_callback)
if isinstance(obj, bpy.types.Object):
- blenderbim.bim.handler.subscribe_to(
- obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback
+ bim_handler.subscribe_to(
+ obj, "active_material_index", bim_handler.active_material_index_callback
)
if IfcStore.history:
@@ -280,10 +280,10 @@ class IfcStore:
IfcStore.id_map[data["id"]] = obj
if "guid" in data:
IfcStore.guid_map[data["guid"]] = obj
- blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
+ bim_handler.subscribe_to(obj, "name", bim_handler.name_callback)
if isinstance(obj, bpy.types.Object):
- blenderbim.bim.handler.subscribe_to(
- obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback
+ bim_handler.subscribe_to(
+ obj, "active_material_index", bim_handler.active_material_index_callback
)
# TODO Listeners are not re-registered. Does this cause nasty problems to debug later on?
# TODO We're handling id_map and guid_map, but what about edited_objs? This might cause big problems.
@@ -398,7 +398,7 @@ class IfcStore:
if BrickStore.graph is not None: # `if BrickStore.graph` by itself takes ages.
BrickStore.end_transaction()
IfcStore.end_transaction(operator)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return result
diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
index f3679bd998..11aface85e 100644
--- a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
@@ -21,8 +21,8 @@ import ifcopenshell
import ifcopenshell.util.element
from .... import tool
from ....core import aggregate as core
-import blenderbim.core.spatial
-import blenderbim.bim.handler
+from ....core import spatial as core_spatial
+from ... import handler as bim_handler
from ...ifc import IfcStore
@@ -163,7 +163,7 @@ class BIM_OT_add_aggregate(bpy.types.Operator, tool.Ifc.Operator):
related_obj=aggregate,
)
elif current_container:
- blenderbim.core.spatial.assign_container(
+ core_spatial.assign_container(
tool.Ifc,
tool.Collector,
tool.Spatial,
@@ -283,7 +283,7 @@ class BIM_OT_add_part_to_object(bpy.types.Operator, tool.Ifc.Operator):
part_class=self.part_class,
part_name=self.part_name,
)
- blenderbim.core.spatial.import_spatial_decomposition(tool.Spatial)
+ core_spatial.import_spatial_decomposition(tool.Spatial)
class BIM_OT_break_link_to_other_aggregates(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/blenderbim/blenderbim/bim/module/attribute/operator.py b/src/blenderbim/blenderbim/bim/module/attribute/operator.py
index 3e323fe25d..8b88ffe6f0 100644
--- a/src/blenderbim/blenderbim/bim/module/attribute/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/attribute/operator.py
@@ -21,8 +21,8 @@ import json
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.guid
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from .... import tool
from ....core import attribute as core
from ...ifc import IfcStore
@@ -58,13 +58,13 @@ class EnableEditingAttributes(bpy.types.Operator):
new.data_type = "string"
new.ifc_class = data["type"]
new.string_value = "" if new.is_null else json.dumps(data[name])
- blenderbim.bim.helper.add_attribute_description(new)
+ bim_helper.add_attribute_description(new)
new.description += " The degrees, minutes and seconds should follow this format : [12,34,56]"
if name in ("PredefinedType", "ObjectType") and has_inherited_predefined_type:
props.attributes.remove(len(props.attributes) - 1)
return True
- blenderbim.bim.helper.import_attributes2(element, props.attributes, callback=callback)
+ bim_helper.import_attributes2(element, props.attributes, callback=callback)
props.is_editing_attributes = True
return {"FINISHED"}
@@ -105,7 +105,7 @@ class EditAttributes(bpy.types.Operator, tool.Ifc.Operator):
attributes[prop.name] = None
return True
- attributes = blenderbim.bim.helper.export_attributes(props.attributes, callback=callback)
+ attributes = bim_helper.export_attributes(props.attributes, callback=callback)
ifcopenshell.api.run("attribute.edit_attributes", self.file, product=product, attributes=attributes)
bpy.ops.bim.disable_editing_attributes(obj=obj.name)
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/attribute/ui.py b/src/blenderbim/blenderbim/bim/module/attribute/ui.py
index 4fd96dacdc..63cf208578 100644
--- a/src/blenderbim/blenderbim/bim/module/attribute/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/attribute/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel
from ...ifc import IfcStore
from .data import AttributesData
@@ -34,7 +34,7 @@ def draw_ui(context, layout, attributes):
op = row.operator("bim.disable_editing_attributes", icon="CANCEL", text="")
op.obj = obj.name
- blenderbim.bim.helper.draw_attributes(props.attributes, layout, copy_operator="bim.copy_attribute_to_selection")
+ bim_helper.draw_attributes(props.attributes, layout, copy_operator="bim.copy_attribute_to_selection")
else:
row = layout.row()
op = row.operator("bim.enable_editing_attributes", icon="GREASEPENCIL", text="Edit")
diff --git a/src/blenderbim/blenderbim/bim/module/boundary/operator.py b/src/blenderbim/blenderbim/bim/module/boundary/operator.py
index b096e5f4e3..e2d943f74c 100644
--- a/src/blenderbim/blenderbim/bim/module/boundary/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/boundary/operator.py
@@ -38,8 +38,8 @@ from mathutils import Vector, Matrix
from ...ifc import IfcStore
from ..model.decorator import ProfileDecorator
from .decorator import BoundaryDecorator
-import blenderbim.core
-import blenderbim.core.geometry
+from .... import core as core
+from ....core import geometry as core_geometry
def get_boundaries_collection(blender_space):
@@ -521,7 +521,7 @@ class ShowBoundaries(bpy.types.Operator, tool.Ifc.Operator):
if not element or not getattr(element, "BoundedBy", None):
continue
if tool.Ifc.is_moved(obj):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
element = tool.Ifc.get_entity(obj)
for rel in element.BoundedBy or []:
boundary_obj = loader.load_boundary(rel, obj)
@@ -1014,7 +1014,7 @@ class AddBoundary(bpy.types.Operator, tool.Ifc.Operator):
def get_flattened_polygon(self, element, relating_space_obj, target_face_matrix_i):
obj = tool.Ifc.get_object(element)
if obj and tool.Ifc.is_moved(obj):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
space_matrix_i = relating_space_obj.matrix_world.inverted()
diff --git a/src/blenderbim/blenderbim/bim/module/boundary/ui.py b/src/blenderbim/blenderbim/bim/module/boundary/ui.py
index 908df50c60..443dba3823 100644
--- a/src/blenderbim/blenderbim/bim/module/boundary/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/boundary/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel, UIList
from ...ifc import IfcStore
from .... import tool
diff --git a/src/blenderbim/blenderbim/bim/module/brick/operator.py b/src/blenderbim/blenderbim/bim/module/brick/operator.py
index ea3b2ef587..919be2902a 100644
--- a/src/blenderbim/blenderbim/bim/module/brick/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/brick/operator.py
@@ -21,7 +21,7 @@ import bpy
import ifcopenshell.api
from .... import tool
from ....core import brick as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ...ifc import IfcStore
from ....tool.brick import BrickStore
@@ -197,7 +197,7 @@ class NewBrickFile(bpy.types.Operator):
}
IfcStore.add_transaction_operation(self, rollback=lambda data: True, commit=self.commit)
IfcStore.end_transaction(self)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def _execute(self, context):
diff --git a/src/blenderbim/blenderbim/bim/module/clash/ui.py b/src/blenderbim/blenderbim/bim/module/clash/ui.py
index 8daa31777d..d8094eeead 100644
--- a/src/blenderbim/blenderbim/bim/module/clash/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/clash/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel
from .data import ClashData
@@ -92,7 +92,7 @@ class BIM_PT_ifcclash(Panel):
op.group = "a"
if source.mode != "a":
- blenderbim.bim.helper.draw_filter(
+ bim_helper.draw_filter(
layout, source.filter_groups, ClashData, f"clash_{props.active_clash_set_index}_a_{index}"
)
@@ -112,7 +112,7 @@ class BIM_PT_ifcclash(Panel):
op.group = "b"
if source.mode != "a":
- blenderbim.bim.helper.draw_filter(
+ bim_helper.draw_filter(
layout, source.filter_groups, ClashData, f"clash_{props.active_clash_set_index}_b_{index}"
)
diff --git a/src/blenderbim/blenderbim/bim/module/classification/operator.py b/src/blenderbim/blenderbim/bim/module/classification/operator.py
index d4413786a6..39ededeec8 100644
--- a/src/blenderbim/blenderbim/bim/module/classification/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/classification/operator.py
@@ -23,7 +23,7 @@ import ifcopenshell.api
import ifcopenshell.util.classification
import ifcopenshell.util.element
from .... import tool
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from ...ifc import IfcStore
@@ -63,7 +63,7 @@ class AddManualClassification(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMClassificationProperties
- attributes = blenderbim.bim.helper.export_attributes(props.classification_attributes)
+ attributes = bim_helper.export_attributes(props.classification_attributes)
classification = ifcopenshell.api.run(
"classification.add_classification", tool.Ifc.get(), classification="Unnamed"
)
@@ -89,7 +89,7 @@ class AddManualClassificationReference(bpy.types.Operator, tool.Ifc.Operator):
else:
objects = [self.obj]
props = context.scene.BIMClassificationReferenceProperties
- attributes = blenderbim.bim.helper.export_attributes(props.reference_attributes)
+ attributes = bim_helper.export_attributes(props.reference_attributes)
products = [
tool.Ifc.get().by_id(ifc_definition_id)
for obj in objects
@@ -140,7 +140,7 @@ class EnableAddingManualClassification(bpy.types.Operator):
props.is_adding = True
props.active_classification_id = 0
props.classification_attributes.clear()
- blenderbim.bim.helper.import_attributes2("IfcClassification", props.classification_attributes)
+ bim_helper.import_attributes2("IfcClassification", props.classification_attributes)
return {"FINISHED"}
@@ -164,7 +164,7 @@ class EnableAddingManualClassificationReference(bpy.types.Operator):
props = context.scene.BIMClassificationReferenceProperties
props.is_adding = True
props.reference_attributes.clear()
- blenderbim.bim.helper.import_attributes2("IfcClassificationReference", props.reference_attributes)
+ bim_helper.import_attributes2("IfcClassificationReference", props.reference_attributes)
return {"FINISHED"}
@@ -198,7 +198,7 @@ class EnableEditingClassification(bpy.types.Operator):
props = context.scene.BIMClassificationProperties
props.classification_attributes.clear()
- blenderbim.bim.helper.import_attributes2(
+ bim_helper.import_attributes2(
tool.Ifc.get().by_id(self.classification), props.classification_attributes, callback
)
props.active_classification_id = self.classification
@@ -268,7 +268,7 @@ class EnableEditingClassificationReference(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMClassificationReferenceProperties
props.reference_attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.reference), props.reference_attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.reference), props.reference_attributes)
props.active_reference_id = self.reference
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/classification/prop.py b/src/blenderbim/blenderbim/bim/module/classification/prop.py
index 927a12e564..e893896a0d 100644
--- a/src/blenderbim/blenderbim/bim/module/classification/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/classification/prop.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from ...ifc import IfcStore
from ...prop import StrProperty, Attribute
from .data import ClassificationsData, ClassificationReferencesData
diff --git a/src/blenderbim/blenderbim/bim/module/classification/ui.py b/src/blenderbim/blenderbim/bim/module/classification/ui.py
index 6ddf4d0384..05403245df 100644
--- a/src/blenderbim/blenderbim/bim/module/classification/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/classification/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from . import prop as classification_prop
from bpy.types import Panel, UIList
@@ -67,7 +67,7 @@ class BIM_PT_classifications(Panel):
def draw_add_manual_ui(self, context):
if self.props.is_adding:
- blenderbim.bim.helper.draw_attributes(self.props.classification_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.classification_attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.add_manual_classification", text="Save", icon="CHECKMARK")
row.operator("bim.disable_adding_manual_classification", text="", icon="CANCEL")
@@ -104,7 +104,7 @@ class BIM_PT_classifications(Panel):
row = self.layout.row(align=True)
row.operator("bim.edit_classification", text="Save changes", icon="CHECKMARK")
row.operator("bim.disable_editing_classification", text="", icon="CANCEL")
- blenderbim.bim.helper.draw_attributes(self.props.classification_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.classification_attributes, self.layout)
def draw_ui(self, classification):
row = self.layout.row(align=True)
@@ -151,7 +151,7 @@ class ReferenceUI:
row = self.layout.row()
row.prop(self.props, "classifications", text="")
if self.props.is_adding:
- blenderbim.bim.helper.draw_attributes(self.props.reference_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.reference_attributes, self.layout)
row = self.layout.row(align=True)
op = row.operator("bim.add_manual_classification_reference", text="Save", icon="CHECKMARK")
op.obj_type = self.data.data["object_type"]
@@ -203,7 +203,7 @@ class ReferenceUI:
box = self.layout.box()
row = box.row()
row.label(text=pset.name, icon="COPY_ID")
- blenderbim.bim.helper.draw_attributes(pset.properties, box)
+ bim_helper.draw_attributes(pset.properties, box)
def draw_add_file_ui(self, context):
if not self.data.data["active_classification_library"]:
@@ -243,7 +243,7 @@ class ReferenceUI:
row = self.layout.row(align=True)
row.operator("bim.edit_classification_reference", text="Save changes", icon="CHECKMARK")
row.operator("bim.disable_editing_classification_reference", text="", icon="CANCEL")
- blenderbim.bim.helper.draw_attributes(self.props.reference_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.reference_attributes, self.layout)
def draw_reference_ui(self, reference):
row = self.layout.row(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/constraint/operator.py b/src/blenderbim/blenderbim/bim/module/constraint/operator.py
index 6226959b43..4e9d10e9e1 100644
--- a/src/blenderbim/blenderbim/bim/module/constraint/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/constraint/operator.py
@@ -20,7 +20,7 @@ import bpy
import json
import ifcopenshell.api
import ifcopenshell.util.attribute
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from ...ifc import IfcStore
@@ -62,7 +62,7 @@ class EnableEditingConstraint(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMConstraintProperties
props.constraint_attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.constraint), props.constraint_attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.constraint), props.constraint_attributes)
props.active_constraint_id = self.constraint
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/context/operator.py b/src/blenderbim/blenderbim/bim/module/context/operator.py
index d9bc2d0616..5e4f1fb236 100644
--- a/src/blenderbim/blenderbim/bim/module/context/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/context/operator.py
@@ -19,8 +19,8 @@
import bpy
from .... import tool
from ....core import context as core
-import blenderbim.bim.module.context.data
-import blenderbim.bim.handler
+from . import data as bim_module_context_data
+from ... import handler as bim_handler
from ...ifc import IfcStore
diff --git a/src/blenderbim/blenderbim/bim/module/context/ui.py b/src/blenderbim/blenderbim/bim/module/context/ui.py
index 0cbcd60928..cebf4e1c7e 100644
--- a/src/blenderbim/blenderbim/bim/module/context/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/context/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from .data import ContextData
@@ -56,7 +56,7 @@ class BIM_PT_context(bpy.types.Panel):
row = box.row(align=True)
row.operator("bim.edit_context", icon="CHECKMARK")
row.operator("bim.disable_editing_context", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(ifc_context["props"], box)
+ bim_helper.draw_attributes(ifc_context["props"], box)
else:
row = box.row(align=True)
row.label(text=ifc_context["context_type"])
@@ -64,8 +64,8 @@ class BIM_PT_context(bpy.types.Panel):
row.operator("bim.remove_context", icon="X", text="").context = ifc_context["id"]
row = box.row(align=True)
- blenderbim.bim.helper.prop_with_search(row, props, "subcontexts", text="")
- blenderbim.bim.helper.prop_with_search(row, props, "target_views", text="")
+ bim_helper.prop_with_search(row, props, "subcontexts", text="")
+ bim_helper.prop_with_search(row, props, "target_views", text="")
op = row.operator("bim.add_context", icon="ADD", text="")
op.context_type = ifc_context["context_type"]
op.context_identifier = props.subcontexts
@@ -77,7 +77,7 @@ class BIM_PT_context(bpy.types.Panel):
row = box.row(align=True)
row.operator("bim.edit_context", icon="CHECKMARK")
row.operator("bim.disable_editing_context", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(subcontext["props"], box)
+ bim_helper.draw_attributes(subcontext["props"], box)
else:
row = box.row(align=True)
row.label(text=subcontext["context_type"])
diff --git a/src/blenderbim/blenderbim/bim/module/cost/data.py b/src/blenderbim/blenderbim/bim/module/cost/data.py
index 972008d699..b8d3f9279d 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/data.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/data.py
@@ -23,7 +23,7 @@ import ifcopenshell.util.date
import ifcopenshell.util.element
import ifcopenshell.util.unit
from .... import tool
-import blenderbim.bim.schema
+from ... import schema as bim_schema
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
from typing import Any
diff --git a/src/blenderbim/blenderbim/bim/module/cost/operator.py b/src/blenderbim/blenderbim/bim/module/cost/operator.py
index 2ff726889d..3eea7c1e7a 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/operator.py
@@ -21,7 +21,7 @@ import bpy
import json
import time
import ifcopenshell.api
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from bpy_extras.io_utils import ImportHelper
from .... import tool
diff --git a/src/blenderbim/blenderbim/bim/module/cost/ui.py b/src/blenderbim/blenderbim/bim/module/cost/ui.py
index ca50427c35..5c0adb6b3a 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from . import prop as CostProp
from bpy.types import Panel, UIList
from ...ifc import IfcStore
@@ -131,7 +131,7 @@ class BIM_PT_cost_schedules(Panel):
row.operator("bim.add_currency", text="", icon="ADD")
def draw_editable_cost_schedule_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.cost_schedule_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.cost_schedule_attributes, self.layout)
def draw_editable_cost_item_ui(self):
row = self.layout.row(align=True)
@@ -188,7 +188,7 @@ class BIM_PT_cost_schedules(Panel):
self.draw_editable_cost_item_values_ui()
def draw_editable_cost_item_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.cost_item_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.cost_item_attributes, self.layout)
def draw_editable_cost_item_quantities_ui(self, cost_item: dict[str, Any]):
quantities = CostSchedulesData.data["cost_quantities"]
@@ -225,7 +225,7 @@ class BIM_PT_cost_schedules(Panel):
op.physical_quantity = quantity["id"]
if self.props.active_cost_item_quantity_id and self.props.active_cost_item_quantity_id == quantity["id"]:
- blenderbim.bim.helper.draw_attributes(self.props.quantity_attributes, self.layout.box())
+ bim_helper.draw_attributes(self.props.quantity_attributes, self.layout.box())
def draw_editable_cost_item_values_ui(self):
row = self.layout.row(align=True)
@@ -245,7 +245,7 @@ class BIM_PT_cost_schedules(Panel):
self.draw_readonly_cost_value_ui(row, cost_value)
if self.props.cost_value_editing_type == "ATTRIBUTES":
- blenderbim.bim.helper.draw_attributes(self.props.cost_value_attributes, self.layout.box())
+ bim_helper.draw_attributes(self.props.cost_value_attributes, self.layout.box())
def draw_readonly_cost_value_ui(self, layout, cost_value):
if cost_value["name"]:
diff --git a/src/blenderbim/blenderbim/bim/module/covering/prop.py b/src/blenderbim/blenderbim/bim/module/covering/prop.py
index 5dae8fa999..c40e293980 100644
--- a/src/blenderbim/blenderbim/bim/module/covering/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/covering/prop.py
@@ -18,7 +18,6 @@
import bpy
from ...prop import StrProperty, Attribute
-#from blenderbim.bim.module.spatial.data import SpatialData
from bpy.types import PropertyGroup
from bpy.props import (
PointerProperty,
@@ -30,9 +29,6 @@ from bpy.props import (
FloatVectorProperty,
CollectionProperty,
)
-#import blenderbim.tool as tool
-#import blenderbim.core.geometry
-#import ifcopenshell
class BIMCoveringProperties(PropertyGroup):
diff --git a/src/blenderbim/blenderbim/bim/module/covering/workspace.py b/src/blenderbim/blenderbim/bim/module/covering/workspace.py
index 9f2816b25d..4262aeb810 100644
--- a/src/blenderbim/blenderbim/bim/module/covering/workspace.py
+++ b/src/blenderbim/blenderbim/bim/module/covering/workspace.py
@@ -25,7 +25,7 @@ from ...helper import prop_with_search
from ..model.data import AuthoringData
from bpy.types import WorkSpaceTool
from ...ifc import IfcStore
-import blenderbim.bim.handler
+from ... import handler as bim_handler
class CoveringTool(WorkSpaceTool):
diff --git a/src/blenderbim/blenderbim/bim/module/csv/ui.py b/src/blenderbim/blenderbim/bim/module/csv/ui.py
index 67e6ec1c1a..68905d13fb 100644
--- a/src/blenderbim/blenderbim/bim/module/csv/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/csv/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel
from ...ifc import IfcStore
from ..search.data import SearchData
@@ -85,7 +85,7 @@ class BIM_PT_ifccsv(Panel):
row.prop(props, "concat_value")
layout.use_property_split = False
- blenderbim.bim.helper.draw_filter(self.layout, props.filter_groups, SearchData, "csv")
+ bim_helper.draw_filter(self.layout, props.filter_groups, SearchData, "csv")
row = layout.row(align=True)
op = row.operator("bim.search", text="Select", icon="VIEWZOOM")
diff --git a/src/blenderbim/blenderbim/bim/module/debug/operator.py b/src/blenderbim/blenderbim/bim/module/debug/operator.py
index 0e7e231051..d170010bb1 100644
--- a/src/blenderbim/blenderbim/bim/module/debug/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/debug/operator.py
@@ -33,7 +33,7 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
from .... import tool
from ....core import debug as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ... import import_ifc
from pathlib import Path
from ...ifc import IfcStore
@@ -102,7 +102,7 @@ class ConvertToBlender(bpy.types.Operator):
context.scene.BIMProperties.ifc_file = ""
context.scene.BIMDebugProperties.attributes.clear()
IfcStore.purge()
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
@@ -409,7 +409,7 @@ class ParseExpress(bpy.types.Operator):
def execute(self, context):
core.parse_express(tool.Debug, context.scene.BIMDebugProperties.express_file)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
@@ -610,8 +610,6 @@ class PipInstall(bpy.types.Operator):
name: bpy.props.StringProperty()
def execute(self, context):
- import blenderbim.bim
-
target = [p for p in sys.path if p.endswith("packages") and "addons" in p][0]
py_exec = str(sys.executable)
diff --git a/src/blenderbim/blenderbim/bim/module/demo/operator.py b/src/blenderbim/blenderbim/bim/module/demo/operator.py
index 7c163b3fc9..6150665340 100644
--- a/src/blenderbim/blenderbim/bim/module/demo/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/demo/operator.py
@@ -30,7 +30,7 @@
import bpy
from .... import tool
from ....core import demo as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
# Each button correlates to a class like the one below. In this case, we're
diff --git a/src/blenderbim/blenderbim/bim/module/diff/operator.py b/src/blenderbim/blenderbim/bim/module/diff/operator.py
index 8639c263fe..f342bbdffe 100644
--- a/src/blenderbim/blenderbim/bim/module/diff/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/diff/operator.py
@@ -20,7 +20,8 @@ import bpy
import json
import logging
import ifcopenshell
-import blenderbim.bim.handler
+from ... import import_ifc
+from ... import handler as bim_handler
from .... import tool
from ...ifc import IfcStore
@@ -172,7 +173,7 @@ class ExecuteIfcDiff(bpy.types.Operator):
self.load_changed_elements(ifc_diff)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def load_changed_elements(self, ifc_diff):
@@ -181,8 +182,8 @@ class ExecuteIfcDiff(bpy.types.Operator):
active_ifc = tool.Ifc.get()
logger = logging.getLogger("ImportIFC")
- ifc_import_settings = blenderbim.bim.import_ifc.IfcImportSettings.factory(bpy.context, None, logger)
- ifc_importer = blenderbim.bim.import_ifc.IfcImporter(ifc_import_settings)
+ ifc_import_settings = import_ifc.IfcImportSettings.factory(bpy.context, None, logger)
+ ifc_importer = import_ifc.IfcImporter(ifc_import_settings)
if self.props.active_file == "NEW":
tool.Ifc.set(ifc_diff.old)
diff --git a/src/blenderbim/blenderbim/bim/module/diff/ui.py b/src/blenderbim/blenderbim/bim/module/diff/ui.py
index 851f10a0e9..1c0abd85c6 100644
--- a/src/blenderbim/blenderbim/bim/module/diff/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/diff/ui.py
@@ -19,7 +19,7 @@
from bpy.types import Panel
from ...ifc import IfcStore
from .data import DiffData
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
@@ -93,7 +93,7 @@ class BIM_PT_diff(Panel):
remove.collection = "diff_relationships"
remove.index = index
- blenderbim.bim.helper.draw_filter(self.layout, props.filter_groups, DiffData, "diff")
+ bim_helper.draw_filter(self.layout, props.filter_groups, DiffData, "diff")
row = layout.row()
row.operator("bim.execute_ifc_diff")
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py
index a79398600a..34ea45d7e7 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py
@@ -35,18 +35,18 @@ import ifcopenshell.geom
import ifcopenshell.util.selector
import ifcopenshell.util.representation
import ifcopenshell.util.element
-import blenderbim.bim.schema
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import schema as bim_schema
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from .... import tool
-import blenderbim.core.geometry
+from ....core import geometry as core_geometry
from ....core import drawing as core
from . import svgwriter
from . import annotation
from . import sheeter
from . import scheduler
from . import helper
-import blenderbim.bim.export_ifc
+from ... import export_ifc as bim_export_ifc
from .decoration import CutDecorator
from .data import DecoratorData, DrawingsData
from typing import NamedTuple, List, Union, Optional, Literal
@@ -499,7 +499,7 @@ class CreateDrawing(bpy.types.Operator):
if self.sync and self.drawing_index == 0:
with profile("sync"):
# All very hackish whilst prototyping
- exporter = blenderbim.bim.export_ifc.IfcExporter(None)
+ exporter = bim_export_ifc.IfcExporter(None)
exporter.file = tool.Ifc.get()
invalidated_elements = exporter.sync_all_objects()
invalidated_elements += exporter.sync_edited_objects()
@@ -1493,7 +1493,7 @@ class ActivateModel(bpy.types.Operator):
if model:
current_representation = tool.Geometry.get_active_representation(obj)
if current_representation != model:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -1832,7 +1832,7 @@ class SaveDrawingStylesData(bpy.types.Operator, tool.Ifc.Operator):
ifcopenshell.api.run(
"pset.edit_pset", ifc_file, pset=pset, properties={"CurrentShadingStyle": new_style_name}
)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
@@ -1861,7 +1861,7 @@ class ActivateDrawingStyle(bpy.types.Operator, tool.Ifc.Operator):
ifcopenshell.api.run(
"pset.edit_pset", ifc_file, pset=pset, properties={"CurrentShadingStyle": self.drawing_style.name}
)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def set_raster_style(self, context):
@@ -2227,7 +2227,7 @@ class EditTextPopup(bpy.types.Operator):
# skip BoxAlignment since we're going to format it ourselves
attributes = [a for a in literal_props.attributes if a.name != "BoxAlignment"]
- blenderbim.bim.helper.draw_attributes(attributes, box, popup_active_attribute=attributes[0])
+ bim_helper.draw_attributes(attributes, box, popup_active_attribute=attributes[0])
row = box.row(align=True)
cols = [row.column(align=True) for i in range(3)]
@@ -2311,7 +2311,7 @@ class AddTextLiteral(bpy.types.Operator):
"Path": "RIGHT",
"BoxAlignment": "bottom_left",
}
- # emulates `blenderbim.bim.helper.import_attributes2(ifc_literal, literal_props.attributes)`
+ # emulates `bim_helper.import_attributes2(ifc_literal, literal_props.attributes)`
for attr_name in literal_attr_values:
attr = literal_attributes.add()
attr.name = attr_name
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py
index ee0497161a..9390924acf 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from bpy.types import Panel
from .data import (
@@ -119,7 +119,7 @@ class BIM_PT_element_filters(Panel):
props = context.scene.camera.data.BIMCameraProperties
if props.filter_mode == "INCLUDE":
- blenderbim.bim.helper.draw_filter(
+ bim_helper.draw_filter(
self.layout, props.include_filter_groups, ElementFiltersData, "drawing_include"
)
row = self.layout.row(align=True)
@@ -128,7 +128,7 @@ class BIM_PT_element_filters(Panel):
).filter_mode = "INCLUDE"
row.operator("bim.enable_editing_element_filter", icon="CANCEL", text="").filter_mode = "NONE"
elif props.filter_mode == "EXCLUDE":
- blenderbim.bim.helper.draw_filter(
+ bim_helper.draw_filter(
self.layout, props.exclude_filter_groups, ElementFiltersData, "drawing_exclude"
)
row = self.layout.row(align=True)
@@ -532,7 +532,7 @@ class BIM_PT_text(Panel):
# skip BoxAlignment since we're going to format it ourselves
attributes = [a for a in literal_props.attributes if a.name != "BoxAlignment"]
- blenderbim.bim.helper.draw_attributes(attributes, box)
+ bim_helper.draw_attributes(attributes, box)
row = box.row(align=True)
cols = [row.column(align=True) for i in range(3)]
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/workspace.py b/src/blenderbim/blenderbim/bim/module/drawing/workspace.py
index f8714b5435..ddb1b252ce 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/workspace.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/workspace.py
@@ -19,14 +19,14 @@
import os
import bpy
-import blenderbim.core.type
+from ....core import type as core_type
from .... import tool
from ...helper import prop_with_search
from bpy.types import WorkSpaceTool
from .data import DecoratorData, AnnotationData
from ...ifc import IfcStore
-import blenderbim.bim.handler
+from ... import handler as bim_handler
class LaunchAnnotationTypeManager(bpy.types.Operator):
@@ -171,7 +171,7 @@ def create_annotation_occurrence(context):
ifc_representation_class=tool.Drawing.get_ifc_representation_class(object_type),
)
- blenderbim.core.type.assign_type(tool.Ifc, tool.Type, element=element, type=relating_type)
+ core_type.assign_type(tool.Ifc, tool.Type, element=element, type=relating_type)
tool.Ifc.run("group.assign_group", group=tool.Drawing.get_drawing_group(drawing), products=[element])
tool.Collector.assign(obj)
diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py
index 0eb313eb41..83b3aba070 100644
--- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py
@@ -28,14 +28,14 @@ import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.placement
import ifcopenshell.api
-import blenderbim.core.geometry
+from ....core import geometry as core_geometry
from ....core import geometry as core
-import blenderbim.core.aggregate
-import blenderbim.core.style
-import blenderbim.core.root
-import blenderbim.core.drawing
+from ....core import aggregate as core_aggregate
+from ....core import style as core_style
+from ....core import root as core_root
+from ....core import drawing as core_drawing
from .... import tool
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from mathutils import Vector, Matrix
from time import time
from ...ifc import IfcStore
@@ -89,7 +89,7 @@ class OverrideMeshSeparate(bpy.types.Operator, tool.Ifc.Operator):
if new_obj == obj:
continue
# This is not very efficient, it needlessly copies the representations first.
- blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
+ core_root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
new_objs.append(new_obj)
for new_obj in new_objs:
bpy.ops.bim.update_representation(obj=new_obj.name)
@@ -874,7 +874,7 @@ class OverrideDuplicateMove(bpy.types.Operator):
# Prior to duplicating, sync the object placement to make decomposition recreation more stable.
if tool.Ifc.is_moved(obj):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
new_obj = obj.copy()
temp_data = None
@@ -897,7 +897,7 @@ class OverrideDuplicateMove(bpy.types.Operator):
# clear object's collection so it will be able to have it's own
new_obj.BIMObjectProperties.collection = None
# copy the actual class
- new = blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
+ new = core_root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
# clean up the orphaned mesh with ifc id of the original object to avoid confusion
# IfcGridAxis keeps the same mesh data (it's pointing to ifc id 0, so it's not a problem)
@@ -934,7 +934,7 @@ class OverrideDuplicateMove(bpy.types.Operator):
# Recreate decompositions
tool.Root.recreate_decompositions(decomposition_relationships, old_to_new)
OverrideDuplicateMove.remove_linked_aggregate_data(old_to_new)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return old_to_new
@staticmethod
@@ -1200,7 +1200,7 @@ class DuplicateMoveLinkedAggregate(bpy.types.Operator):
if location_from_3d_cursor:
get_location_from_3d_cursor(old_to_new, selected_element)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return old_to_new
@@ -1430,7 +1430,7 @@ class RefreshLinkedAggregate(bpy.types.Operator):
new_aggregate = ifcopenshell.util.element.get_aggregate(new[0])
if not new_aggregate:
- blenderbim.core.aggregate.assign_object(
+ core_aggregate.assign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
@@ -1442,7 +1442,7 @@ class RefreshLinkedAggregate(bpy.types.Operator):
new_obj = tool.Ifc.get_object(new[0])
set_original_name(new_obj, original_names)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
operator_time = time() - refresh_start_time
if operator_time > 10:
@@ -1919,7 +1919,7 @@ def poll_editing_representaiton_item_style(cls, context):
if shape_aspect == "":
return True
- from blenderbim.bim.module.material.data import ObjectMaterialData
+ from ..material.data import ObjectMaterialData
if not ObjectMaterialData.is_loaded:
ObjectMaterialData.load()
diff --git a/src/blenderbim/blenderbim/bim/module/geometry/prop.py b/src/blenderbim/blenderbim/bim/module/geometry/prop.py
index af4b172f61..d5e991b3bf 100644
--- a/src/blenderbim/blenderbim/bim/module/geometry/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/geometry/prop.py
@@ -56,7 +56,7 @@ def get_mode(self, context):
def get_styles(self, context):
# postponed import to avoid circular import
- from blenderbim.bim.module.material.data import MaterialsData
+ from ..material.data import MaterialsData
if not MaterialsData.is_loaded:
MaterialsData.load()
@@ -70,7 +70,7 @@ def get_shape_aspects(self, context):
def get_material_constituents(self, context, edit_text):
- from blenderbim.bim.module.material.data import ObjectMaterialData
+ from ..material.data import ObjectMaterialData
if not ObjectMaterialData.is_loaded:
ObjectMaterialData.load()
diff --git a/src/blenderbim/blenderbim/bim/module/geometry/ui.py b/src/blenderbim/blenderbim/bim/module/geometry/ui.py
index 5f05c5db32..d48e2cf14d 100644
--- a/src/blenderbim/blenderbim/bim/module/geometry/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/geometry/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim
+from .... import bim
from .... import tool
from bpy.types import Panel, Menu, UIList
from ...ifc import IfcStore
@@ -38,7 +38,7 @@ def mode_menu(self, context):
row = self.layout.row(align=True)
if context.scene.BIMGeometryProperties.mode == "EDIT":
row.operator("bim.override_mode_set_object", icon="CANCEL", text="Discard Changes").should_save = False
- row.prop(context.scene.BIMGeometryProperties, "mode", text="", icon_value=blenderbim.bim.icons["IFC"].icon_id)
+ row.prop(context.scene.BIMGeometryProperties, "mode", text="", icon_value=bim.icons["IFC"].icon_id)
def object_menu(self, context):
@@ -69,7 +69,7 @@ class BIM_MT_hotkey_separate(Menu):
bl_label = "Separate"
def draw(self, context):
- self.layout.label(text="IFC Separate", icon_value=blenderbim.bim.icons["IFC"].icon_id)
+ self.layout.label(text="IFC Separate", icon_value=bim.icons["IFC"].icon_id)
self.layout.operator("bim.override_mesh_separate", text="Selection").type = "SELECTED"
self.layout.operator("bim.override_mesh_separate", text="By Material").type = "MATERIAL"
self.layout.operator("bim.override_mesh_separate", text="By Loose Parts").type = "LOOSE"
diff --git a/src/blenderbim/blenderbim/bim/module/group/operator.py b/src/blenderbim/blenderbim/bim/module/group/operator.py
index 8981b414f8..51e7683473 100644
--- a/src/blenderbim/blenderbim/bim/module/group/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/group/operator.py
@@ -19,7 +19,7 @@
import bpy
import ifcopenshell.util.attribute
import ifcopenshell.api
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from ...ifc import IfcStore
import json
@@ -152,7 +152,7 @@ class EnableEditingGroup(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMGroupProperties
props.group_attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.group), props.group_attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.group), props.group_attributes)
props.active_group_id = self.group
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/layer/operator.py b/src/blenderbim/blenderbim/bim/module/layer/operator.py
index fced041cea..2cd5ccc67b 100644
--- a/src/blenderbim/blenderbim/bim/module/layer/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/layer/operator.py
@@ -21,7 +21,7 @@ import json
import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.attribute
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from ...ifc import IfcStore
@@ -63,7 +63,7 @@ class EnableEditingLayer(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMLayerProperties
props.layer_attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.layer), props.layer_attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.layer), props.layer_attributes)
props.active_layer_id = self.layer
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/library/operator.py b/src/blenderbim/blenderbim/bim/module/library/operator.py
index a57aa80d22..b6725d9dec 100644
--- a/src/blenderbim/blenderbim/bim/module/library/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/library/operator.py
@@ -20,7 +20,7 @@ import bpy
import ifcopenshell.api
from .... import tool
from ....core import library as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ...ifc import IfcStore
diff --git a/src/blenderbim/blenderbim/bim/module/library/ui.py b/src/blenderbim/blenderbim/bim/module/library/ui.py
index a4e6b59eac..68ea915a03 100644
--- a/src/blenderbim/blenderbim/bim/module/library/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/library/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from bpy.types import Panel, UIList
from .data import LibrariesData, LibraryReferencesData
@@ -53,7 +53,7 @@ class BIM_PT_libraries(Panel):
row = self.layout.row(align=True)
row.operator("bim.edit_library", icon="CHECKMARK")
row.operator("bim.disable_editing_library", text="", icon="CANCEL")
- blenderbim.bim.helper.draw_attributes(self.props.library_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.library_attributes, self.layout)
def draw_editable_references_ui(self):
row = self.layout.row(align=True)
@@ -81,7 +81,7 @@ class BIM_PT_libraries(Panel):
row = self.layout.row(align=True)
row.operator("bim.edit_library_reference", icon="CHECKMARK")
row.operator("bim.disable_editing_library_reference", text="", icon="CANCEL")
- blenderbim.bim.helper.draw_attributes(self.props.reference_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.reference_attributes, self.layout)
def draw_readonly_library_ui(self):
row = self.layout.row()
diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py
index 679a83a2ec..cdb492ffb4 100644
--- a/src/blenderbim/blenderbim/bim/module/material/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/material/operator.py
@@ -22,9 +22,9 @@ import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.attribute
import ifcopenshell.util.representation
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
-import blenderbim.core.style
+from ....core import style as core_style
from ....core import material as core
from ..model import profile as model_profile
from .prop import purge as material_prop_purge
@@ -459,12 +459,12 @@ class EnableEditingAssignedMaterial(bpy.types.Operator):
props.material_set_attributes.clear()
if "Usage" in material.is_a():
- blenderbim.bim.helper.import_attributes2(
+ bim_helper.import_attributes2(
material, props.material_set_usage_attributes, callback=self.import_attributes
)
- blenderbim.bim.helper.import_attributes2(material[0], props.material_set_attributes)
+ bim_helper.import_attributes2(material[0], props.material_set_attributes)
else:
- blenderbim.bim.helper.import_attributes2(material, props.material_set_attributes)
+ bim_helper.import_attributes2(material, props.material_set_attributes)
return {"FINISHED"}
def import_attributes(self, name, prop, data):
@@ -540,7 +540,7 @@ class EditAssignedMaterial(bpy.types.Operator, tool.Ifc.Operator):
return {"FINISHED"}
material_set = self.file.by_id(self.material_set)
- attributes = blenderbim.bim.helper.export_attributes(props.material_set_attributes)
+ attributes = bim_helper.export_attributes(props.material_set_attributes)
ifcopenshell.api.run(
"material.edit_assigned_material",
self.file,
@@ -549,7 +549,7 @@ class EditAssignedMaterial(bpy.types.Operator, tool.Ifc.Operator):
if self.material_set_usage:
material_set_usage = self.file.by_id(self.material_set_usage)
- attributes = blenderbim.bim.helper.export_attributes(props.material_set_usage_attributes)
+ attributes = bim_helper.export_attributes(props.material_set_usage_attributes)
if material_set_usage.is_a("IfcMaterialLayerSetUsage"):
ifcopenshell.api.run(
"material.edit_layer_usage",
@@ -581,7 +581,7 @@ class EnableEditingMaterialSetItemProfile(bpy.types.Operator):
self.props.active_material_set_item_id = self.material_set_item
self.props.material_set_item_profile_attributes.clear()
profile = tool.Ifc.get().by_id(self.material_set_item).Profile
- blenderbim.bim.helper.import_attributes2(profile, self.props.material_set_item_profile_attributes)
+ bim_helper.import_attributes2(profile, self.props.material_set_item_profile_attributes)
return {"FINISHED"}
@@ -609,7 +609,7 @@ class EditMaterialSetItemProfile(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.props = obj.BIMObjectMaterialProperties
- attributes = blenderbim.bim.helper.export_attributes(self.props.material_set_item_profile_attributes)
+ attributes = bim_helper.export_attributes(self.props.material_set_item_profile_attributes)
profile = tool.Ifc.get().by_id(self.material_set_item).Profile
ifcopenshell.api.run("profile.edit_profile", tool.Ifc.get(), profile=profile, attributes=attributes)
self.props.active_material_set_item_id = 0
@@ -638,7 +638,7 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
self.props.material_set_item_material = str(material_set_item.Material.id())
self.props.material_set_item_attributes.clear()
- blenderbim.bim.helper.import_attributes2(material_set_item, self.props.material_set_item_attributes)
+ bim_helper.import_attributes2(material_set_item, self.props.material_set_item_attributes)
if material_set_item.is_a("IfcMaterialProfile"):
if material_set_item.Profile and material_set_item.Profile.ProfileName:
@@ -675,7 +675,7 @@ class EditMaterialSetItem(bpy.types.Operator, tool.Ifc.Operator):
element = tool.Ifc.get_entity(obj)
material = ifcopenshell.util.element.get_material(element, should_skip_usage=True)
- attributes = blenderbim.bim.helper.export_attributes(props.material_set_item_attributes)
+ attributes = bim_helper.export_attributes(props.material_set_item_attributes)
if material.is_a("IfcMaterialConstituentSet"):
ifcopenshell.api.run(
diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py
index ba25029720..c88fb0c577 100644
--- a/src/blenderbim/blenderbim/bim/module/material/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/material/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
import bpy
from bpy.types import Panel, UIList
@@ -108,7 +108,7 @@ class BIM_PT_materials(Panel):
return
ifc_definition_id = self.props.active_material_id
if self.props.editing_material_type == "ATTRIBUTES":
- blenderbim.bim.helper.draw_attributes(self.props.material_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.material_attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_material", text="Save Material", icon="CHECKMARK").material = ifc_definition_id
row.operator("bim.disable_editing_material", text="", icon="CANCEL")
@@ -216,8 +216,8 @@ class BIM_PT_object_material(Panel):
self.draw_read_only_set_ui()
def draw_editable_set_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.material_set_attributes, self.layout)
- blenderbim.bim.helper.draw_attributes(self.props.material_set_usage_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.material_set_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.material_set_usage_attributes, self.layout)
if ObjectMaterialData.data["set_item_name"] == "profile" and not self.mprops.profiles:
row = self.layout.row(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/misc/operator.py b/src/blenderbim/blenderbim/bim/module/misc/operator.py
index 467eed8fe3..a482130dbe 100644
--- a/src/blenderbim/blenderbim/bim/module/misc/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/misc/operator.py
@@ -19,11 +19,11 @@
import bpy
import numpy as np
import ifcopenshell
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from .... import tool
from ....core import misc as core
from ....core import geometry as core_geometry
-import blenderbim.core.root
+from ....core import root as core_root
from ...ifc import IfcStore
from mathutils import Vector, Matrix, Euler
@@ -160,7 +160,7 @@ class SplitAlongEdge(bpy.types.Operator, tool.Ifc.Operator):
new_objs = tool.Misc.split_objects_with_cutter(objs_to_cut, cutter)
for obj in new_objs:
- blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
+ core_root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
bpy.ops.bim.update_representation(obj=obj.name)
for obj in objs_to_cut:
bpy.ops.bim.update_representation(obj=obj.name)
diff --git a/src/blenderbim/blenderbim/bim/module/model/door.py b/src/blenderbim/blenderbim/bim/module/model/door.py
index 3645927323..72db8a9fbe 100644
--- a/src/blenderbim/blenderbim/bim/module/model/door.py
+++ b/src/blenderbim/blenderbim/bim/module/model/door.py
@@ -27,9 +27,9 @@ import ifcopenshell.util.element
import ifcopenshell.util.representation
from ifcopenshell.util.shape_builder import V
from .... import tool
-import blenderbim.core.geometry
+from ....core import geometry as core_geometry
from ....core import geometry as core
-import blenderbim.core.root
+from ....core import root as core_root
from .window import create_bm_window, create_bm_box
from mathutils import Vector, Matrix
@@ -142,7 +142,7 @@ def update_door_modifier_representation(context: bpy.types.Context, obj: bpy.typ
previously_active_context.TargetView,
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -508,10 +508,10 @@ class BIM_OT_add_door(bpy.types.Operator, tool.Ifc.Operator):
obj = bpy.data.objects.new("IfcDoor", mesh)
obj.location = spawn_location
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc, tool.Collector, tool.Root, obj=obj, ifc_class="IfcDoor", should_add_representation=False
)
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
if tool.Ifc.get_schema() != "IFC2X3":
element.PredefinedType = "DOOR"
@@ -573,7 +573,7 @@ class CancelEditingDoor(bpy.types.Operator, tool.Ifc.Operator):
props.set_props_kwargs_from_ifc_data(data)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/model/mep.py b/src/blenderbim/blenderbim/bim/module/model/mep.py
index 6cfafd15f8..1385e8b18e 100644
--- a/src/blenderbim/blenderbim/bim/module/model/mep.py
+++ b/src/blenderbim/blenderbim/bim/module/model/mep.py
@@ -30,10 +30,10 @@ import ifcopenshell.util.element
import ifcopenshell.util.representation
import mathutils.geometry
import numpy as np
-import blenderbim.bim.handler
-import blenderbim.core.type
-import blenderbim.core.root
-import blenderbim.core.geometry
+from ... import handler as bim_handler
+from ....core import type as core_type
+from ....core import root as core_root
+from ....core import geometry as core_geometry
from .... import tool
from math import pi, degrees, radians, sin, cos, asin, tan
from copy import copy
@@ -529,7 +529,7 @@ class MEPGenerator:
obj = bpy.data.objects.new("Obstruction", None)
# TODO: OBSTRUCTION predefined type is available only for IfcDuctFitting and IfcPipeFitting
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -838,7 +838,7 @@ class MEPAddTransition(bpy.types.Operator, tool.Ifc.Operator):
else: # create new fitting type if nothing is compatible
mesh = bpy.data.meshes.new("Transition")
obj = bpy.data.objects.new("Transition", mesh)
- transition_type = blenderbim.core.root.assign_class(
+ transition_type = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -1189,7 +1189,7 @@ class MEPAddBend(bpy.types.Operator, tool.Ifc.Operator):
else: # create new fitting type if nothing is compatible
mesh = bpy.data.meshes.new("Bend")
obj = bpy.data.objects.new("Bend", mesh)
- bend_type = blenderbim.core.root.assign_class(
+ bend_type = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py
index 322cad792a..cbb1088b5c 100644
--- a/src/blenderbim/blenderbim/bim/module/model/opening.py
+++ b/src/blenderbim/blenderbim/bim/module/model/opening.py
@@ -33,9 +33,9 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.unit
from .... import tool
-import blenderbim.core.geometry
+from ....core import geometry as core_geometry
from ... import import_ifc
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ...ifc import IfcStore
from math import pi, radians
from mathutils import Vector, Matrix
@@ -126,7 +126,7 @@ class FilledOpeningGenerator:
bpy.context.view_layer.update()
if tool.Ifc.is_moved(voided_obj):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=voided_obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=voided_obj)
existing_opening_occurrence = self.get_existing_opening_occurrence_if_any(filling)
@@ -178,7 +178,7 @@ class FilledOpeningGenerator:
context = tool.Geometry.get_active_representation_context(voided_obj)
representation = tool.Geometry.get_representation_by_context(voided_element, context)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=voided_obj,
@@ -243,7 +243,7 @@ class FilledOpeningGenerator:
if not voided_obj.data:
continue
representation = tool.Ifc.get().by_id(voided_obj.data.BIMMeshProperties.ifc_definition_id)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=voided_obj,
@@ -384,11 +384,11 @@ class RecalculateFill(bpy.types.Operator, tool.Ifc.Operator):
for building_element in building_elements:
building_obj = tool.Ifc.get_object(building_element)
if tool.Ifc.is_moved(building_obj):
- blenderbim.core.geometry.edit_object_placement(
+ core_geometry.edit_object_placement(
tool.Ifc, tool.Geometry, tool.Surveyor, obj=building_obj
)
for opening in openings:
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
ifcopenshell.api.run(
"geometry.edit_object_placement", tool.Ifc.get(), product=opening, matrix=obj.matrix_world
)
@@ -403,7 +403,7 @@ class RecalculateFill(bpy.types.Operator, tool.Ifc.Operator):
if building_obj and building_obj.data:
representation = tool.Geometry.get_active_representation(building_obj)
if representation:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=building_obj,
@@ -567,7 +567,7 @@ class AddBoolean(Operator, tool.Ifc.Operator):
tool.Model.mark_manual_booleans(element1, booleans)
tool.Model.clear_scene_openings()
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj1,
@@ -710,7 +710,7 @@ class RemoveBooleans(Operator, tool.Ifc.Operator, AddObjectHelper):
bbim_boolean_updates.setdefault(element, []).append(boolean_id)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
if body:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=upstream_obj,
@@ -740,7 +740,7 @@ class ShowOpenings(Operator, tool.Ifc.Operator):
if not element or not getattr(element, "HasOpenings", None):
continue
if tool.Ifc.is_moved(obj):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
openings = tool.Model.load_openings(
[
r.RelatedOpeningElement
@@ -802,8 +802,8 @@ class EditOpenings(Operator, tool.Ifc.Operator):
opening_obj = tool.Ifc.get_object(opening)
building_objs.add(obj)
- similar_openings = blenderbim.core.geometry.get_similar_openings(tool.Ifc, opening)
- similar_openings_building_objs = blenderbim.core.geometry.get_similar_openings_building_objs(
+ similar_openings = core_geometry.get_similar_openings(tool.Ifc, opening)
+ similar_openings_building_objs = core_geometry.get_similar_openings_building_objs(
tool.Ifc, similar_openings
)
building_objs.update(similar_openings_building_objs)
@@ -811,14 +811,14 @@ class EditOpenings(Operator, tool.Ifc.Operator):
if opening_obj:
if tool.Ifc.is_edited(opening_obj):
tool.Geometry.run_geometry_update_representation(obj=opening_obj)
- blenderbim.core.geometry.edit_similar_opening_placement(
+ core_geometry.edit_similar_opening_placement(
tool.Geometry, opening, similar_openings
)
elif tool.Ifc.is_moved(opening_obj):
- blenderbim.core.geometry.edit_object_placement(
+ core_geometry.edit_object_placement(
tool.Ifc, tool.Geometry, tool.Surveyor, obj=opening_obj
)
- blenderbim.core.geometry.edit_similar_opening_placement(
+ core_geometry.edit_similar_opening_placement(
tool.Geometry, opening, similar_openings
)
diff --git a/src/blenderbim/blenderbim/bim/module/model/pie.py b/src/blenderbim/blenderbim/bim/module/model/pie.py
index c3c2f0691c..6d0e9db00c 100644
--- a/src/blenderbim/blenderbim/bim/module/model/pie.py
+++ b/src/blenderbim/blenderbim/bim/module/model/pie.py
@@ -18,8 +18,8 @@
import bpy
from .... import tool
-import blenderbim.core.spatial
-import blenderbim.core.aggregate
+from ....core import spatial as core_spatial
+from ....core import aggregate as core_aggregate
from ...ifc import IfcStore
@@ -70,7 +70,7 @@ class PieUpdateContainer(bpy.types.Operator):
for collection in obj.users_collection:
spatial_obj = collection.BIMCollectionProperties.obj
if spatial_obj and spatial_obj.BIMObjectProperties.ifc_definition_id:
- blenderbim.core.spatial.assign_container(
+ core_spatial.assign_container(
tool.Ifc, tool.Collector, tool.Spatial, structure_obj=spatial_obj, element_obj=obj
)
break
diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py
index b69364d479..87642bf7c9 100644
--- a/src/blenderbim/blenderbim/bim/module/model/product.py
+++ b/src/blenderbim/blenderbim/bim/module/model/product.py
@@ -29,10 +29,10 @@ import ifcopenshell.util.representation
import ifcopenshell.util.type
import ifcopenshell.util.unit
from .... import tool
-import blenderbim.core.aggregate
-import blenderbim.core.type
-import blenderbim.core.geometry
-import blenderbim.core.spatial
+from ....core import aggregate as core_aggregate
+from ....core import type as core_type
+from ....core import geometry as core_geometry
+from ....core import spatial as core_spatial
from . import wall, slab, profile, mep
from ...ifc import IfcStore
from .data import AuthoringData
@@ -201,7 +201,7 @@ class AddConstrTypeInstance(bpy.types.Operator):
mesh_data = obj.data
element = tool.Ifc.get_entity(obj)
- blenderbim.core.type.assign_type(tool.Ifc, tool.Type, element=element, type=relating_type)
+ core_type.assign_type(tool.Ifc, tool.Type, element=element, type=relating_type)
if obj.data != mesh_data: # remove orphaned mesh from "bim.assign_class"
tool.Blender.remove_data_block(mesh_data)
@@ -219,14 +219,14 @@ class AddConstrTypeInstance(bpy.types.Operator):
parent = ifcopenshell.util.element.get_aggregate(building_element)
if parent:
parent_obj = tool.Ifc.get_object(parent)
- blenderbim.core.aggregate.assign_object(
+ core_aggregate.assign_object(
tool.Ifc, tool.Aggregate, tool.Collector, relating_obj=parent_obj, related_obj=obj
)
else:
parent = ifcopenshell.util.element.get_container(building_element)
if parent:
parent_obj = tool.Ifc.get_object(parent)
- blenderbim.core.spatial.assign_container(
+ core_spatial.assign_container(
tool.Ifc, tool.Collector, tool.Spatial, structure_obj=parent_obj, element_obj=obj
)
@@ -467,7 +467,7 @@ def generate_box(usecase_path, ifc_file, settings):
old_box = ifcopenshell.util.representation.get_representation(product, "Model", "Box", "MODEL_VIEW")
if settings["context"].ContextType == "Model" and getattr(settings["context"], "ContextIdentifier") == "Body":
if old_box:
- blenderbim.core.geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_box)
+ core_geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_box)
new_settings = settings.copy()
new_settings["context"] = box_context
@@ -501,7 +501,7 @@ def regenerate_profile_usage(usecase_path, ifc_file, settings):
continue
representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
if representation:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/model/profile.py b/src/blenderbim/blenderbim/bim/module/model/profile.py
index 25b10f7c32..b6346322f7 100644
--- a/src/blenderbim/blenderbim/bim/module/model/profile.py
+++ b/src/blenderbim/blenderbim/bim/module/model/profile.py
@@ -27,12 +27,12 @@ import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from .... import tool
-import blenderbim.core.type
-import blenderbim.core.geometry
-import blenderbim.core.material
-import blenderbim.core.root
+from ....core import type as core_type
+from ....core import geometry as core_geometry
+from ....core import material as core_material
+from ....core import root as core_root
from math import pi, degrees, inf
from mathutils import Vector, Matrix, Quaternion
from ..geometry.helper import Helper
@@ -88,7 +88,7 @@ class DumbProfileGenerator:
if self.container_obj:
matrix_world.translation.z = self.container_obj.location.z
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -103,7 +103,7 @@ class DumbProfileGenerator:
obj.matrix_world = matrix_world
bpy.context.view_layer.update()
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
if self.axis_context:
representation = ifcopenshell.api.run(
@@ -127,7 +127,7 @@ class DumbProfileGenerator:
ifcopenshell.api.run(
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=representation
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -452,7 +452,7 @@ class DumbProfileJoiner:
if old_axis:
for inverse in tool.Ifc.get().get_inverse(old_axis):
ifcopenshell.util.element.replace_attribute(inverse, old_axis, new_axis)
- blenderbim.core.geometry.remove_representation(
+ core_geometry.remove_representation(
tool.Ifc, tool.Geometry, obj=obj, representation=old_axis
)
else:
@@ -488,7 +488,7 @@ class DumbProfileJoiner:
ifcopenshell.util.element.replace_attribute(inverse, old_body, new_body)
obj.data.BIMMeshProperties.ifc_definition_id = int(new_body.id())
obj.data.name = f"{self.body_context.id()}/{new_body.id()}"
- blenderbim.core.geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_body)
+ core_geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_body)
else:
ifcopenshell.api.run(
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=new_body
@@ -512,8 +512,8 @@ class DumbProfileJoiner:
else:
coordinates[2] -= change_in_z
opening.ObjectPlacement.RelativePlacement.Location.Coordinates = coordinates
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -525,7 +525,7 @@ class DumbProfileJoiner:
tool.Geometry.record_object_materials(obj)
if element.is_a("IfcFlowSegment") or element.is_a("IfcFlowFitting"):
# lazy import to avoid circular import errors
- from blenderbim.bim.module.model.mep import MEPGenerator
+ from .mep import MEPGenerator
MEPGenerator().setup_ports(obj)
@@ -931,7 +931,7 @@ class PatchNonParametricMepSegment(bpy.types.Operator, tool.Ifc.Operator):
return context.active_object
def _execute(self, context):
- blenderbim.core.material.patch_non_parametric_mep_segment(
+ core_material.patch_non_parametric_mep_segment(
tool.Ifc, tool.Material, tool.Profile, obj=context.active_object
)
bpy.ops.bim.enable_editing_extrusion_axis()
@@ -984,7 +984,7 @@ def disable_editing_extrusion_axis(context):
element = tool.Ifc.get_entity(obj)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -1048,7 +1048,7 @@ class EditExtrusionAxis(bpy.types.Operator, tool.Ifc.Operator):
matrix.translation = start
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/model/railing.py b/src/blenderbim/blenderbim/bim/module/model/railing.py
index 4d615f22d0..e4d922bc04 100644
--- a/src/blenderbim/blenderbim/bim/module/model/railing.py
+++ b/src/blenderbim/blenderbim/bim/module/model/railing.py
@@ -24,8 +24,8 @@ import ifcopenshell.api
import ifcopenshell.util.representation
import ifcopenshell.util.unit
from ifcopenshell.util.shape_builder import V
-import blenderbim.core.root
-import blenderbim.core.geometry
+from ....core import root as core_root
+from ....core import geometry as core_geometry
from .... import tool
from .door import bm_sort_out_geom
from .data import RailingData, refresh
@@ -300,7 +300,7 @@ class BIM_OT_add_railing(bpy.types.Operator, tool.Ifc.Operator):
obj.location = spawn_location
body_context = ifcopenshell.util.representation.get_context(ifc_file, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.root.assign_class(
+ core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -476,7 +476,7 @@ def cancel_editing_railing_path(context):
else:
element = tool.Ifc.get_entity(obj)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/model/roof.py b/src/blenderbim/blenderbim/bim/module/model/roof.py
index 4ece6c104f..6e48a25989 100644
--- a/src/blenderbim/blenderbim/bim/module/model/roof.py
+++ b/src/blenderbim/blenderbim/bim/module/model/roof.py
@@ -23,7 +23,7 @@ import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import blenderbim.core.root
+from ....core import root as core_root
from .... import tool
from ...helper import convert_property_group_from_si
from .door import bm_sort_out_geom
@@ -516,7 +516,7 @@ class BIM_OT_add_roof(bpy.types.Operator, tool.Ifc.Operator):
obj.location = spawn_location
body_context = ifcopenshell.util.representation.get_context(ifc_file, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.root.assign_class(
+ core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
diff --git a/src/blenderbim/blenderbim/bim/module/model/root.py b/src/blenderbim/blenderbim/bim/module/model/root.py
index 5bf5d84987..d89883e464 100644
--- a/src/blenderbim/blenderbim/bim/module/model/root.py
+++ b/src/blenderbim/blenderbim/bim/module/model/root.py
@@ -18,7 +18,7 @@
import bpy
import ifcopenshell.file
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from .... import tool
from ...ifc import IFC_CONNECTED_TYPE
from typing import Any
@@ -47,4 +47,4 @@ def sync_name(usecase_path: str, ifc_file: ifcopenshell.file, settings: dict[str
elif isinstance(obj, bpy.types.Material):
new_name = settings["attributes"]["Name"] or "Unnamed"
obj.name = new_name
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py
index 5b4252d17b..8be98d1453 100644
--- a/src/blenderbim/blenderbim/bim/module/model/slab.py
+++ b/src/blenderbim/blenderbim/bim/module/model/slab.py
@@ -26,10 +26,10 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.unit
import ifcopenshell.util.type
-import blenderbim.bim.handler
-import blenderbim.core.type
-import blenderbim.core.geometry
-import blenderbim.core.root
+from ... import handler as bim_handler
+from ....core import type as core_type
+from ....core import geometry as core_geometry
+from ....core import root as core_root
from .... import tool
from mathutils import Vector, Matrix
from ..geometry.helper import Helper
@@ -169,7 +169,7 @@ class DumbSlabGenerator:
obj.matrix_world = Matrix.Rotation(self.x_angle, 4, "X") @ matrix_world
bpy.context.view_layer.update()
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -179,7 +179,7 @@ class DumbSlabGenerator:
)
ifcopenshell.api.run("type.assign_type", self.file, related_objects=[element], relating_type=self.relating_type)
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
representation = ifcopenshell.api.run(
"geometry.add_slab_representation",
tool.Ifc.get(),
@@ -191,7 +191,7 @@ class DumbSlabGenerator:
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=representation
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -308,7 +308,7 @@ class DumbSlabPlaner:
)
for inverse in tool.Ifc.get().get_inverse(representation):
ifcopenshell.util.element.replace_attribute(inverse, representation, new_rep)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -317,7 +317,7 @@ class DumbSlabPlaner:
is_global=True,
should_sync_changes_first=False,
)
- blenderbim.core.geometry.remove_representation(
+ core_geometry.remove_representation(
tool.Ifc, tool.Geometry, obj=obj, representation=representation
)
return
@@ -335,7 +335,7 @@ class DumbSlabPlaner:
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=representation
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -540,7 +540,7 @@ class EditSketchExtrusionProfile(bpy.types.Operator, tool.Ifc.Operator):
bpy.ops.view3d.slvs_delete_entity(index=p1["slvs_index"])
bpy.ops.view3d.slvs_delete_entity(index=nm["slvs_index"])
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -585,7 +585,7 @@ def disable_editing_extrusion_profile(context):
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
profile_mesh = obj.data
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -686,7 +686,7 @@ class EditExtrusionProfile(bpy.types.Operator, tool.Ifc.Operator):
ifcopenshell.util.element.remove_deep2(tool.Ifc.get(), old_profile)
profile_mesh = obj.data
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -717,7 +717,7 @@ class EditExtrusionProfile(bpy.types.Operator, tool.Ifc.Operator):
if old_footprint:
for inverse in tool.Ifc.get().get_inverse(old_footprint):
ifcopenshell.util.element.replace_attribute(inverse, old_footprint, new_footprint)
- blenderbim.core.geometry.remove_representation(
+ core_geometry.remove_representation(
tool.Ifc, tool.Geometry, obj=obj, representation=old_footprint
)
else:
diff --git a/src/blenderbim/blenderbim/bim/module/model/stair.py b/src/blenderbim/blenderbim/bim/module/model/stair.py
index 4fbd23b400..fdb3d71df8 100644
--- a/src/blenderbim/blenderbim/bim/module/model/stair.py
+++ b/src/blenderbim/blenderbim/bim/module/model/stair.py
@@ -23,7 +23,7 @@ import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import blenderbim.core.root
+from ....core import root as core_root
from .... import tool
from mathutils import Vector
from bmesh.types import BMVert
@@ -218,7 +218,7 @@ class BIM_OT_add_clever_stair(bpy.types.Operator, tool.Ifc.Operator):
obj = bpy.data.objects.new("StairFlight", mesh)
obj.location = spawn_location
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py
index cd928a6251..26a3f37a70 100644
--- a/src/blenderbim/blenderbim/bim/module/model/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/model/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim
+from .... import bim
from .... import tool
from bpy.types import Panel, Menu
from .data import (
@@ -664,10 +664,10 @@ def add_menu(self, context):
def add_mesh_object_menu(self, context):
self.layout.separator()
- self.layout.operator("mesh.add_grid", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_stair", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_clever_stair", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_window", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_door", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_railing", icon_value=blenderbim.bim.icons["IFC"].icon_id)
- self.layout.operator("mesh.add_roof", icon_value=blenderbim.bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_grid", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_stair", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_clever_stair", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_window", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_door", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_railing", icon_value=bim.icons["IFC"].icon_id)
+ self.layout.operator("mesh.add_roof", icon_value=bim.icons["IFC"].icon_id)
diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py
index 2b63be8b2f..db483b90a5 100644
--- a/src/blenderbim/blenderbim/bim/module/model/wall.py
+++ b/src/blenderbim/blenderbim/bim/module/model/wall.py
@@ -28,10 +28,10 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.type
import mathutils.geometry
-import blenderbim.bim.handler
-import blenderbim.core.type
-import blenderbim.core.root
-import blenderbim.core.geometry
+from ... import handler as bim_handler
+from ....core import type as core_type
+from ....core import root as core_root
+from ....core import geometry as core_geometry
from ....core import model as core
from .... import tool
from ...ifc import IfcStore
@@ -227,7 +227,7 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator):
if tool.Model.get_usage_type(element) == "LAYER2":
layer2_objs.append(obj)
else:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -554,7 +554,7 @@ class DumbWallGenerator:
obj.matrix_world = matrix_world
bpy.context.view_layer.update()
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -573,7 +573,7 @@ class DumbWallGenerator:
ifcopenshell.api.run(
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=representation
)
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
representation = ifcopenshell.api.run(
"geometry.add_wall_representation",
tool.Ifc.get(),
@@ -587,7 +587,7 @@ class DumbWallGenerator:
ifcopenshell.api.run(
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=representation
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -791,7 +791,7 @@ class DumbWallJoiner:
def flip(self, wall1):
if tool.Ifc.is_moved(wall1):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=wall1)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=wall1)
element1 = tool.Ifc.get_entity(wall1)
if not element1 or tool.Model.get_usage_type(element1) != "LAYER2":
@@ -865,7 +865,7 @@ class DumbWallJoiner:
bpy.context.view_layer.update()
body = ifcopenshell.util.representation.get_representation(element1, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=wall1,
@@ -938,7 +938,7 @@ class DumbWallJoiner:
wall2.data = wall2.data.copy()
for collection in wall1.users_collection:
collection.objects.link(wall2)
- blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=wall2)
+ core_root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=wall2)
return wall2
def join_Z(self, wall1, slab2):
@@ -1131,7 +1131,7 @@ class DumbWallJoiner:
if old_axis:
for inverse in tool.Ifc.get().get_inverse(old_axis):
ifcopenshell.util.element.replace_attribute(inverse, old_axis, new_axis)
- blenderbim.core.geometry.remove_representation(
+ core_geometry.remove_representation(
tool.Ifc, tool.Geometry, obj=obj, representation=old_axis
)
else:
@@ -1158,7 +1158,7 @@ class DumbWallJoiner:
ifcopenshell.util.element.replace_attribute(inverse, old_body, new_body)
obj.data.BIMMeshProperties.ifc_definition_id = int(new_body.id())
obj.data.name = f"{self.body_context.id()}/{new_body.id()}"
- blenderbim.core.geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_body)
+ core_geometry.remove_representation(tool.Ifc, tool.Geometry, obj=obj, representation=old_body)
else:
ifcopenshell.api.run(
"geometry.assign_representation", tool.Ifc.get(), product=element, representation=new_body
@@ -1184,23 +1184,23 @@ class DumbWallJoiner:
coordinates[0] -= change_in_x
opening.ObjectPlacement.RelativePlacement.Location.Coordinates = coordinates
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
# If opening has filling then stick to the filling's position
# We're applying new openings position only after wall position is applied
for opening in [r.RelatedOpeningElement for r in element.HasOpenings if r.RelatedOpeningElement.HasFillings]:
- similar_openings = blenderbim.core.geometry.get_similar_openings(tool.Ifc, opening)
+ similar_openings = core_geometry.get_similar_openings(tool.Ifc, opening)
filling_obj = tool.Ifc.get_object(opening.HasFillings[0].RelatedBuildingElement)
filling_moved = tool.Ifc.is_moved(filling_obj)
if filling_moved:
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=filling_obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=filling_obj)
if filling_moved or wall_moved:
ifcopenshell.api.run(
"geometry.edit_object_placement", tool.Ifc.get(), product=opening, matrix=filling_obj.matrix_world
)
- blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings)
+ core_geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/model/window.py b/src/blenderbim/blenderbim/bim/module/model/window.py
index 943edc930b..c55a594dbf 100644
--- a/src/blenderbim/blenderbim/bim/module/model/window.py
+++ b/src/blenderbim/blenderbim/bim/module/model/window.py
@@ -23,8 +23,8 @@ import bmesh
import collections
import ifcopenshell
from .... import tool
-import blenderbim.core.root
-import blenderbim.core.geometry
+from ....core import root as core_root
+from ....core import geometry as core_geometry
from ifcopenshell.api.geometry.add_window_representation import DEFAULT_PANEL_SCHEMAS
import ifcopenshell.api
import ifcopenshell.util.element
@@ -105,7 +105,7 @@ def update_window_modifier_representation(context, obj):
previously_active_context.ContextIdentifier,
previously_active_context.TargetView,
)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -403,10 +403,10 @@ class BIM_OT_add_window(bpy.types.Operator, tool.Ifc.Operator):
obj = bpy.data.objects.new("IfcWindow", mesh)
obj.location = spawn_location
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc, tool.Collector, tool.Root, obj=obj, ifc_class="IfcWindow", should_add_representation=False
)
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
if tool.Ifc.get_schema() != "IFC2X3":
element.PredefinedType = "WINDOW"
@@ -465,7 +465,7 @@ class CancelEditingWindow(bpy.types.Operator, tool.Ifc.Operator):
props.set_props_kwargs_from_ifc_data(data)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
diff --git a/src/blenderbim/blenderbim/bim/module/nest/operator.py b/src/blenderbim/blenderbim/bim/module/nest/operator.py
index 7f4bb20236..188efe2fa9 100644
--- a/src/blenderbim/blenderbim/bim/module/nest/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/nest/operator.py
@@ -21,8 +21,8 @@ import ifcopenshell
import ifcopenshell.util.element
from .... import tool
from ....core import nest as core
-import blenderbim.core.spatial
-import blenderbim.bim.handler
+from ....core import spatial as core_spatial
+from ... import handler as bim_handler
from ...ifc import IfcStore
diff --git a/src/blenderbim/blenderbim/bim/module/owner/operator.py b/src/blenderbim/blenderbim/bim/module/owner/operator.py
index e91cbf90ec..170153f7c1 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/operator.py
@@ -19,7 +19,7 @@
import bpy
from .... import tool
from ....core import owner as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ...ifc import IfcStore
diff --git a/src/blenderbim/blenderbim/bim/module/owner/ui.py b/src/blenderbim/blenderbim/bim/module/owner/ui.py
index 6624f54325..974fa39819 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from .data import PeopleData, OrganisationsData, OwnerData, ActorData, ObjectActorData
@@ -33,7 +33,7 @@ def draw_roles(box, parent):
row = box.row(align=True)
row.operator("bim.edit_role", icon="CHECKMARK")
row.operator("bim.disable_editing_role", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(role["props"], box)
+ bim_helper.draw_attributes(role["props"], box)
else:
row = box.row(align=True)
row.label(text=role["label"])
@@ -56,7 +56,7 @@ def draw_addresses(box, parent):
row = box.row(align=True)
row.operator("bim.edit_address", icon="CHECKMARK")
row.operator("bim.disable_editing_address", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(address["props"], box)
+ bim_helper.draw_attributes(address["props"], box)
for attribute in address["list_attributes"]:
row = box.row(align=True)
row.label(text=attribute["name"])
@@ -108,7 +108,7 @@ class BIM_PT_people(bpy.types.Panel):
row = box.row(align=True)
row.operator("bim.edit_person", icon="CHECKMARK")
row.operator("bim.disable_editing_person", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(person["props"], box)
+ bim_helper.draw_attributes(person["props"], box)
for attribute in person["list_attributes"]:
row = box.row(align=True)
@@ -167,7 +167,7 @@ class BIM_PT_organisations(bpy.types.Panel):
row = box.row(align=True)
row.operator("bim.edit_organisation", icon="CHECKMARK")
row.operator("bim.disable_editing_organisation", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(organisation["props"], box)
+ bim_helper.draw_attributes(organisation["props"], box)
draw_roles(box, organisation)
draw_addresses(box, organisation)
@@ -274,7 +274,7 @@ class BIM_PT_actor(bpy.types.Panel):
row = box.row(align=True)
row.operator("bim.edit_actor", icon="CHECKMARK")
row.operator("bim.disable_editing_actor", icon="CANCEL", text="")
- blenderbim.bim.helper.draw_attributes(self.props.actor_attributes, box)
+ bim_helper.draw_attributes(self.props.actor_attributes, box)
else:
row = self.layout.row(align=True)
row.label(text=actor["name"], icon="USER")
diff --git a/src/blenderbim/blenderbim/bim/module/patch/operator.py b/src/blenderbim/blenderbim/bim/module/patch/operator.py
index 1f29a79516..73c1166884 100644
--- a/src/blenderbim/blenderbim/bim/module/patch/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/patch/operator.py
@@ -22,7 +22,7 @@ import json
import ifcopenshell
from .... import tool
from ....core import patch as core
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from pathlib import Path
try:
@@ -159,5 +159,5 @@ class RunMigratePatch(bpy.types.Operator):
bpy.ops.file.refresh()
except:
pass # Probably running in headless mode
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/profile/operator.py b/src/blenderbim/blenderbim/bim/module/profile/operator.py
index 0f88538709..7399e2f811 100644
--- a/src/blenderbim/blenderbim/bim/module/profile/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/profile/operator.py
@@ -18,7 +18,7 @@
import bpy
import ifcopenshell.api
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from ..model import profile as model_profile
from ....core import profile as core
@@ -85,7 +85,7 @@ class EnableEditingProfile(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMProfileProperties
props.profile_attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.profile), props.profile_attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.profile), props.profile_attributes)
props.active_profile_id = self.profile
@@ -107,7 +107,7 @@ class EditProfile(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMProfileProperties
- attributes = blenderbim.bim.helper.export_attributes(props.profile_attributes)
+ attributes = bim_helper.export_attributes(props.profile_attributes)
profile = tool.Ifc.get().by_id(props.active_profile_id)
ifcopenshell.api.run("profile.edit_profile", tool.Ifc.get(), profile=profile, attributes=attributes)
model_profile.DumbProfileRegenerator().regenerate_from_profile_def(profile)
diff --git a/src/blenderbim/blenderbim/bim/module/profile/ui.py b/src/blenderbim/blenderbim/bim/module/profile/ui.py
index 3af37f4c4e..fa472c4031 100644
--- a/src/blenderbim/blenderbim/bim/module/profile/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/profile/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from bpy.types import Panel, UIList
from .data import ProfileData
@@ -102,7 +102,7 @@ class BIM_PT_profiles(Panel):
self.draw_editable_ui(context)
def draw_editable_ui(self, context):
- blenderbim.bim.helper.draw_attributes(self.props.profile_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.profile_attributes, self.layout)
class BIM_UL_profiles(UIList):
diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py
index 9fe9bd7766..d2b1cfeaf5 100644
--- a/src/blenderbim/blenderbim/bim/module/project/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/project/operator.py
@@ -37,13 +37,13 @@ import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.shape
import ifcopenshell.util.unit
-import blenderbim.bim.handler
-import blenderbim.bim.schema
+from ... import handler as bim_handler
+from ... import schema as bim_schema
from .... import tool
from ....core import project as core
-import blenderbim.core.context
-import blenderbim.core.owner
-import blenderbim.core.spatial
+from ....core import context as core_context
+from ....core import owner as core_owner
+from ....core import spatial as core_spatial
from ...ifc import IfcStore
from ...ui import IFCFileSelector
from ....bim import import_ifc
@@ -132,7 +132,7 @@ class CreateProject(bpy.types.Operator):
for mat in bpy.data.materials:
bpy.data.materials.remove(mat)
core.create_project(tool.Ifc, tool.Georeference, tool.Project, tool.Spatial, schema=props.export_schema, template=template)
- blenderbim.bim.schema.reload(tool.Ifc.get().schema_identifier)
+ bim_schema.reload(tool.Ifc.get().schema_identifier)
tool.Blender.register_toolbar()
def rollback(self, data):
@@ -469,7 +469,7 @@ class AppendLibraryElement(bpy.types.Operator):
except:
# TODO Remove this terrible code when I refactor this into the core
pass
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def import_material_from_ifc(self, element: ifcopenshell.entity_instance, context: bpy.types.Context) -> None:
@@ -795,7 +795,7 @@ class LoadProjectElements(bpy.types.Operator):
def execute(self, context):
self.props = context.scene.BIMProjectProperties
self.file = IfcStore.get_file()
- blenderbim.bim.schema.reload(self.file.schema_identifier)
+ bim_schema.reload(self.file.schema_identifier)
start = time.time()
logger = logging.getLogger("ImportIFC")
path_log = os.path.join(context.scene.BIMProperties.data_dir, "process.log")
@@ -1315,7 +1315,7 @@ class ExportIFCBase:
if save_blend_file:
bpy.ops.wm.save_mainfile(filepath=bpy.data.filepath)
bpy.context.scene.BIMProperties.is_dirty = False
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
self.report(
{"INFO"},
f'IFC Project "{os.path.basename(output_file)}" {"" if not save_blend_file else "And Current Blend File Are"} Saved',
@@ -1860,7 +1860,7 @@ class AppendInspectedLinkedElement(AppendLibraryElement):
bl_options = {"REGISTER"}
def _execute(self, context):
- from blenderbim.bim.module.project.data import LinksData
+ from .data import LinksData
if not LinksData.linked_data:
self.report({"INFO"}, "No linked element found.")
diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py
index 452db11b3a..b734b4f819 100644
--- a/src/blenderbim/blenderbim/bim/module/project/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/project/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import os
-import blenderbim.bim
+from .... import bim
from .... import tool
from ...helper import prop_with_search
from bpy.types import Panel, Menu, UIList
@@ -49,7 +49,7 @@ class BIM_MT_recent_projects(Menu):
for path in paths:
op = self.layout.operator(
- "bim.load_project", text=path.name, icon_value=blenderbim.bim.icons["IFC"].icon_id
+ "bim.load_project", text=path.name, icon_value=bim.icons["IFC"].icon_id
)
op.filepath = str(path)
op.should_start_fresh_session = True
@@ -71,7 +71,7 @@ class BIM_MT_new_project(Menu):
# Do we need to set it back to exec default?
# self.layout.operator_context = "EXEC_DEFAULT"
self.layout.separator()
- self.layout.label(text="New IFC Project", icon_value=blenderbim.bim.icons["IFC"].icon_id)
+ self.layout.label(text="New IFC Project", icon_value=bim.icons["IFC"].icon_id)
self.layout.operator("bim.new_project", text="Metric (m) Project").preset = "metric_m"
self.layout.operator("bim.new_project", text="Metric (mm) Project").preset = "metric_mm"
self.layout.operator("bim.new_project", text="Imperial (ft) Project").preset = "imperial_ft"
diff --git a/src/blenderbim/blenderbim/bim/module/pset/data.py b/src/blenderbim/blenderbim/bim/module/pset/data.py
index 390b475619..58dc3d1894 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/data.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/data.py
@@ -21,7 +21,7 @@ import ifcopenshell
import ifcopenshell.util.doc
import ifcopenshell.util.element
from .... import tool
-import blenderbim.bim.schema
+from ... import schema as bim_schema
# TODO: Should this cache belong here? Dunno. Maybe.
@@ -106,7 +106,7 @@ class ObjectPsetsData(Data):
element = tool.Ifc.get_entity(obj)
if not element:
return []
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(
+ psets = bim_schema.ifc.psetqto.get_applicable(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), pset_only=True
)
psetnames = cls.format_pset_enum(psets)
@@ -119,7 +119,7 @@ class ObjectPsetsData(Data):
element = tool.Ifc.get_entity(obj)
if not element:
return []
- qtos = blenderbim.bim.schema.ifc.psetqto.get_applicable(
+ qtos = bim_schema.ifc.psetqto.get_applicable(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), qto_only=True
)
return cls.format_pset_enum(qtos)
@@ -178,7 +178,7 @@ class MaterialPsetsData(Data):
if material.ifc_definition_id:
material = tool.Ifc.get().by_id(material.ifc_definition_id)
category = getattr(material, "Category", None) or None
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable("IfcMaterial", category, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable("IfcMaterial", category, pset_only=True)
psetnames = cls.format_pset_enum(psets)
assigned_names = ifcopenshell.util.element.get_psets(
material, psets_only=True, should_inherit=False
diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py
index 8dab1944b8..cb2be332c7 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py
@@ -22,12 +22,12 @@ import ifcopenshell.api
import ifcopenshell.util.unit
import ifcopenshell.util.pset
import ifcopenshell.util.attribute
-import blenderbim.bim.schema
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import schema as bim_schema
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from .... import tool
from ....core import pset as core
-import blenderbim.bim.module.pset.data
+from . import data as bim_module_pset_data
from ...ifc import IfcStore
@@ -37,8 +37,8 @@ class TogglePsetExpansion(bpy.types.Operator, tool.Ifc.Operator):
pset_id: bpy.props.IntProperty()
def _execute(self, context):
- blenderbim.bim.module.pset.data.is_expanded[self.pset_id] = (
- not blenderbim.bim.module.pset.data.is_expanded.setdefault(self.pset_id, True)
+ bim_module_pset_data.is_expanded[self.pset_id] = (
+ not bim_module_pset_data.is_expanded.setdefault(self.pset_id, True)
)
@@ -129,7 +129,7 @@ class EditPset(bpy.types.Operator, tool.Ifc.Operator):
pset=pset,
name=props.active_pset_name,
properties=properties,
- pset_template=blenderbim.bim.schema.ifc.psetqto.get_by_name(props.active_pset_name),
+ pset_template=bim_schema.ifc.psetqto.get_by_name(props.active_pset_name),
)
else:
for key, value in properties.items():
diff --git a/src/blenderbim/blenderbim/bim/module/pset/prop.py b/src/blenderbim/blenderbim/bim/module/pset/prop.py
index fdee2fd50c..cc4685c7ea 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/prop.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.schema
+from ... import schema as bim_schema
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.doc
@@ -105,7 +105,7 @@ def get_material_set_pset_names(self, context):
return []
ifc_class = material.is_a()
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
@@ -117,7 +117,7 @@ def get_material_set_item_pset_names(self, context):
return []
ifc_class = tool.Ifc.get().by_id(ifc_definition_id).is_a()
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
@@ -126,7 +126,7 @@ def get_task_qto_names(self, context):
global qtonames
ifc_class = "IfcTask"
if ifc_class not in qtonames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
qtonames[ifc_class] = blender_formatted_enum_from_psets(psets)
return qtonames[ifc_class]
@@ -137,7 +137,7 @@ def get_resource_pset_names(self, context):
rtprops = context.scene.BIMResourceTreeProperties
ifc_class = IfcStore.get_file().by_id(rtprops.resources[rprops.active_resource_index].ifc_definition_id).is_a()
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
@@ -148,7 +148,7 @@ def get_resource_qto_names(self, context):
rtprops = context.scene.BIMResourceTreeProperties
ifc_class = IfcStore.get_file().by_id(rtprops.resources[rprops.active_resource_index].ifc_definition_id).is_a()
if ifc_class not in qtonames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
qtonames[ifc_class] = blender_formatted_enum_from_psets(psets)
return qtonames[ifc_class]
@@ -157,7 +157,7 @@ def get_group_pset_names(self, context):
global psetnames
ifc_class = "IfcGroup"
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
@@ -166,7 +166,7 @@ def get_group_qto_names(self, context):
global qtonames
ifc_class = "IfcGroup"
if ifc_class not in qtonames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, qto_only=True)
qtonames[ifc_class] = blender_formatted_enum_from_psets(psets)
return qtonames[ifc_class]
@@ -175,7 +175,7 @@ def get_profile_pset_names(self, context):
pprops = context.scene.BIMProfileProperties
ifc_class = IfcStore.get_file().by_id(pprops.profiles[pprops.active_profile_index].ifc_definition_id).is_a()
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
@@ -184,7 +184,7 @@ def get_work_schedule_pset_names(self, context):
global psetnames
ifc_class = "IfcWorkSchedule"
if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psets = bim_schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = blender_formatted_enum_from_psets(psets)
return psetnames[ifc_class]
diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
index 0db9e773a4..0d6ad7f27a 100644
--- a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
@@ -20,8 +20,8 @@ import os
import bpy
import ifcopenshell
import ifcopenshell.api
-import blenderbim.bim.schema
-import blenderbim.bim.handler
+from ... import schema as bim_schema
+from ... import handler as bim_handler
from .... import tool
from ...ifc import IfcStore
from typing import final
@@ -38,7 +38,7 @@ class PsetTemplateOperator:
IfcStore.pset_template_file.end_transaction()
IfcStore.add_transaction_operation(self)
IfcStore.end_transaction(self)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def rollback(self, data):
@@ -71,8 +71,8 @@ class AddPsetTemplateFile(bpy.types.Operator):
ifcopenshell.api.run("pset_template.add_prop_template", template, pset_template=pset_template)
template.write(filepath)
self.props.new_template_filename = ""
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
context.scene.BIMPsetTemplateProperties.pset_template_files = filepath
return {"FINISHED"}
@@ -86,8 +86,8 @@ class AddPsetTemplate(bpy.types.Operator, PsetTemplateOperator):
template = ifcopenshell.api.run("pset_template.add_pset_template", IfcStore.pset_template_file)
ifcopenshell.api.run("pset_template.add_prop_template", IfcStore.pset_template_file, pset_template=template)
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
context.scene.BIMPsetTemplateProperties.pset_templates = str(template.id())
@@ -106,8 +106,8 @@ class RemovePsetTemplate(bpy.types.Operator, PsetTemplateOperator):
**{"pset_template": IfcStore.pset_template_file.by_id(int(props.pset_templates))}
)
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
class EnableEditingPsetTemplate(bpy.types.Operator):
@@ -220,8 +220,8 @@ class EditPsetTemplate(bpy.types.Operator, PsetTemplateOperator):
)
bpy.ops.bim.disable_editing_pset_template()
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
class SavePsetTemplateFile(bpy.types.Operator):
@@ -230,8 +230,8 @@ class SavePsetTemplateFile(bpy.types.Operator):
def execute(self, context):
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
return {"FINISHED"}
@@ -244,8 +244,8 @@ class RemovePsetTemplateFile(bpy.types.Operator):
os.remove(IfcStore.pset_template_path)
except:
pass
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
return {"FINISHED"}
@@ -264,8 +264,8 @@ class AddPropTemplate(bpy.types.Operator, PsetTemplateOperator):
)
bpy.ops.bim.disable_editing_prop_template()
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
class RemovePropTemplate(bpy.types.Operator, PsetTemplateOperator):
@@ -281,8 +281,8 @@ class RemovePropTemplate(bpy.types.Operator, PsetTemplateOperator):
**{"prop_template": IfcStore.pset_template_file.by_id(self.prop_template)}
)
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_handler.refresh_ui_data()
+ bim_schema.reload(tool.Ifc.get().schema)
class EditPropTemplate(bpy.types.Operator, PsetTemplateOperator):
@@ -312,6 +312,6 @@ class EditPropTemplate(bpy.types.Operator, PsetTemplateOperator):
)
bpy.ops.bim.disable_editing_prop_template()
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
if tool.Ifc.get():
- blenderbim.bim.schema.reload(tool.Ifc.get().schema)
+ bim_schema.reload(tool.Ifc.get().schema)
diff --git a/src/blenderbim/blenderbim/bim/module/resource/prop.py b/src/blenderbim/blenderbim/bim/module/resource/prop.py
index a42a27c1ba..5b608048eb 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/prop.py
@@ -21,9 +21,9 @@ import ifcopenshell.api
import ifcopenshell.util.resource
from ...ifc import IfcStore
from .... import tool
-import blenderbim.bim.module.pset.data
-import blenderbim.bim.module.resource.data
-import blenderbim.bim.module.sequence.data
+from ..pset import data as bim_module_pset_data
+from . import data as bim_module_resource_data
+from ..sequence import data as bim_module_sequence_data
from ...prop import StrProperty, Attribute
from bpy.types import PropertyGroup
from bpy.props import (
@@ -61,7 +61,7 @@ def updateResourceName(self, context):
if props.active_resource_id == self.ifc_definition_id:
attribute = props.resource_attributes.get("Name")
attribute.string_value = self.name
- blenderbim.bim.module.resource.data.refresh()
+ bim_module_resource_data.refresh()
tool.Sequence.refresh_task_resources()
@@ -70,7 +70,7 @@ def get_quantity_types(self, context):
def update_active_resource_index(self, context):
- blenderbim.bim.module.pset.data.refresh()
+ bim_module_pset_data.refresh()
if self.should_show_resource_tools:
tool.Resource.load_productivity_data()
@@ -87,9 +87,9 @@ def updateResourceUsage(self, context):
tool.Sequence.load_task_properties()
tool.Resource.load_resource_properties()
tool.Sequence.refresh_task_resources()
- blenderbim.bim.module.resource.data.refresh()
- blenderbim.bim.module.sequence.data.refresh()
- blenderbim.bim.module.pset.data.refresh()
+ bim_module_resource_data.refresh()
+ bim_module_sequence_data.refresh()
+ bim_module_pset_data.refresh()
class ISODuration(PropertyGroup):
diff --git a/src/blenderbim/blenderbim/bim/module/resource/ui.py b/src/blenderbim/blenderbim/bim/module/resource/ui.py
index 05a5bd77cb..1cf2da6e56 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel, UIList
from ...ifc import IfcStore
from .data import ResourceData
@@ -235,10 +235,10 @@ class BIM_PT_resources(Panel):
row.operator("bim.disable_editing_resource", text="", icon="CANCEL")
def draw_editable_resource_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.resource_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.resource_attributes, self.layout)
def draw_editable_resource_time_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.resource_time_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.resource_time_attributes, self.layout)
def draw_editable_resource_quantity_ui(self):
resource = ResourceData.data["resources"][self.props.active_resource_id]
@@ -261,7 +261,7 @@ class BIM_PT_resources(Panel):
if self.props.is_editing_quantity:
box = self.layout.box()
- blenderbim.bim.helper.draw_attributes(self.props.quantity_attributes, box)
+ bim_helper.draw_attributes(self.props.quantity_attributes, box)
else:
row = self.layout.row(align=True)
row.prop(self.props, "quantity_types", text="")
@@ -285,7 +285,7 @@ class BIM_PT_resources(Panel):
self.draw_readonly_cost_value_ui(row, cost_value)
if self.props.cost_value_editing_type == "ATTRIBUTES":
- blenderbim.bim.helper.draw_attributes(self.props.cost_value_attributes, self.layout.box())
+ bim_helper.draw_attributes(self.props.cost_value_attributes, self.layout.box())
def draw_readonly_cost_value_ui(self, layout, cost_value):
if self.props.active_cost_value_id == cost_value["id"] and self.props.cost_value_editing_type == "FORMULA":
diff --git a/src/blenderbim/blenderbim/bim/module/root/operator.py b/src/blenderbim/blenderbim/bim/module/root/operator.py
index 9fd6e4dbb5..04c0341c7d 100644
--- a/src/blenderbim/blenderbim/bim/module/root/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/root/operator.py
@@ -22,12 +22,12 @@ import ifcopenshell.api
import ifcopenshell.util.schema
import ifcopenshell.util.element
import ifcopenshell.util.type
-import blenderbim.bim.handler
-import blenderbim.core.geometry
-import blenderbim.core.material
-import blenderbim.core.spatial
-import blenderbim.core.style
-import blenderbim.core.type
+from ... import handler as bim_handler
+from ....core import geometry as core_geometry
+from ....core import material as core_material
+from ....core import spatial as core_spatial
+from ....core import style as core_style
+from ....core import type as core_type
from ....core import root as core
from .... import tool
from ...ifc import IfcStore
@@ -300,4 +300,4 @@ class CopyClass(bpy.types.Operator, tool.Ifc.Operator):
objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
for obj in objects:
core.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
diff --git a/src/blenderbim/blenderbim/bim/module/search/ui.py b/src/blenderbim/blenderbim/bim/module/search/ui.py
index 744a8805c4..522c907413 100644
--- a/src/blenderbim/blenderbim/bim/module/search/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/search/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel
from .data import SearchData, ColourByPropertyData, SelectSimilarData
@@ -36,7 +36,7 @@ class BIM_PT_search(Panel):
props = context.scene.BIMSearchProperties
- blenderbim.bim.helper.draw_filter(self.layout, props.filter_groups, SearchData, "search")
+ bim_helper.draw_filter(self.layout, props.filter_groups, SearchData, "search")
if len(props.filter_groups):
row = self.layout.row(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/prop.py b/src/blenderbim/blenderbim/bim/module/sequence/prop.py
index 64447abe36..72a49dab52 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/prop.py
@@ -25,8 +25,8 @@ from .... import tool
from ....core import sequence as core
from ...ifc import IfcStore
from .data import SequenceData, AnimationColorSchemeData, refresh as refresh_sequence_data
-import blenderbim.bim.module.resource.data
-import blenderbim.bim.module.pset.data
+from ..resource import data as bim_module_resource_data
+from ..pset import data as bim_module_pset_data
from ...prop import StrProperty, Attribute
from dateutil import parser
from bpy.types import PropertyGroup
@@ -92,7 +92,7 @@ def update_active_task_index(self, context):
task = tool.Sequence.get_highlighted_task()
self.highlighted_task_id = task.id() if task else 0
tool.Sequence.update_task_ICOM(task)
- blenderbim.bim.module.pset.data.refresh()
+ bim_module_pset_data.refresh()
if self.editing_task_type == "SEQUENCE":
tool.Sequence.load_task_properties()
@@ -342,9 +342,9 @@ def updateAssignedResourceUsage(self, context):
tool.Sequence.load_task_properties()
tool.Resource.load_resource_properties()
tool.Sequence.refresh_task_resources()
- blenderbim.bim.module.resource.data.refresh()
+ bim_module_resource_data.refresh()
refresh_sequence_data()
- blenderbim.bim.module.pset.data.refresh()
+ bim_module_pset_data.refresh()
def update_task_bar_list(self, context):
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/ui.py b/src/blenderbim/blenderbim/bim/module/sequence/ui.py
index dcfe0be6c8..1e2b6462af 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import isodate
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel, UIList
from ...ifc import IfcStore
from ...helper import draw_attributes
@@ -384,10 +384,10 @@ class BIM_PT_work_schedules(Panel):
op.task = task["id"]
def draw_editable_sequence_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.sequence_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.sequence_attributes, self.layout)
def draw_editable_sequence_lag_time_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.lag_time_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.lag_time_attributes, self.layout)
def draw_editable_task_calendar_ui(self):
task = SequenceData.data["tasks"][self.props.active_task_id]
@@ -409,12 +409,12 @@ class BIM_PT_work_schedules(Panel):
row.label(text="Must Create a Calendar First. See Work Calendar Panel", icon="INFO")
def draw_editable_task_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(
+ bim_helper.draw_attributes(
self.props.task_attributes, self.layout, copy_operator="bim.copy_task_attribute"
)
def draw_editable_task_time_attributes_ui(self):
- blenderbim.bim.helper.draw_attributes(self.props.task_time_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.task_time_attributes, self.layout)
def draw_baseline_ui(self, work_schedule_id):
if not self.props.should_show_schedule_baseline_ui:
diff --git a/src/blenderbim/blenderbim/bim/module/spatial/operator.py b/src/blenderbim/blenderbim/bim/module/spatial/operator.py
index 8759f58395..d46455720e 100644
--- a/src/blenderbim/blenderbim/bim/module/spatial/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/spatial/operator.py
@@ -20,10 +20,10 @@ import bpy
import ifcopenshell.util.element
from .... import tool
from ....core import spatial as core
-import blenderbim.core.geometry
-import blenderbim.core.aggregate
-import blenderbim.core.root
-import blenderbim.bim.handler
+from ....core import geometry as core_geometry
+from ....core import aggregate as core_aggregate
+from ....core import root as core_root
+from ... import handler as bim_handler
class ReferenceStructure(bpy.types.Operator, tool.Ifc.Operator):
@@ -140,7 +140,7 @@ class CopyToContainer(bpy.types.Operator, tool.Ifc.Operator):
old_to_new[tool.Ifc.get_entity(obj)] = result_objs
# Recreate decompositions
tool.Root.recreate_decompositions(relationships, old_to_new)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
class SelectContainer(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/blenderbim/blenderbim/bim/module/spatial/workspace.py b/src/blenderbim/blenderbim/bim/module/spatial/workspace.py
index 09d23c06b3..d86cfbb723 100644
--- a/src/blenderbim/blenderbim/bim/module/spatial/workspace.py
+++ b/src/blenderbim/blenderbim/bim/module/spatial/workspace.py
@@ -23,8 +23,8 @@ from .... import tool
from ..model.data import AuthoringData
from bpy.types import WorkSpaceTool
from ...ifc import IfcStore
-import blenderbim.bim.handler
-import blenderbim.core.spatial
+from ... import handler as bim_handler
+from ....core import spatial as core_spatial
class SpatialTool(WorkSpaceTool):
@@ -153,8 +153,8 @@ class Hotkey(bpy.types.Operator, tool.Ifc.Operator):
bpy.ops.bim.generate_spaces_from_walls()
else:
try:
- blenderbim.core.spatial.generate_space(tool.Ifc, tool.Model, tool.Root, tool.Spatial, tool.Type)
- except blenderbim.core.spatial.NoDefaultContainer:
+ core_spatial.generate_space(tool.Ifc, tool.Model, tool.Root, tool.Spatial, tool.Type)
+ except core_spatial.NoDefaultContainer:
return self.report({"ERROR"}, "Please set a default container to create the space in.")
def hotkey_S_B(self):
diff --git a/src/blenderbim/blenderbim/bim/module/structural/operator.py b/src/blenderbim/blenderbim/bim/module/structural/operator.py
index 1a5ae1c3ce..ef103a5817 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/operator.py
@@ -21,11 +21,11 @@ import json
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.attribute
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from ....core import structural as core
from .... import tool
-import blenderbim.core.context
+from ....core import context as core_context
from math import degrees
from mathutils import Vector, Matrix
from ...ifc import IfcStore
@@ -516,7 +516,7 @@ class EditStructuralLoadCase(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMStructuralProperties
- attributes = blenderbim.bim.helper.export_attributes(props.load_case_attributes)
+ attributes = bim_helper.export_attributes(props.load_case_attributes)
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"structural.edit_structural_load_case",
@@ -552,7 +552,7 @@ class EnableEditingStructuralLoadCase(bpy.types.Operator):
self.props.active_load_case_id = self.load_case
self.props.load_case_editing_type = "ATTRIBUTES"
self.props.load_case_attributes.clear()
- blenderbim.bim.helper.import_attributes2(
+ bim_helper.import_attributes2(
tool.Ifc.get().by_id(self.load_case), self.props.load_case_attributes, callback=self.import_attributes
)
return {"FINISHED"}
@@ -756,7 +756,7 @@ class EnableEditingStructuralLoad(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMStructuralProperties
props.structural_load_attributes.clear()
- blenderbim.bim.helper.import_attributes2(
+ bim_helper.import_attributes2(
tool.Ifc.get().by_id(self.structural_load), props.structural_load_attributes
)
props.active_structural_load_id = self.structural_load
@@ -798,7 +798,7 @@ class EditStructuralLoad(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMStructuralProperties
- attributes = blenderbim.bim.helper.export_attributes(props.structural_load_attributes)
+ attributes = bim_helper.export_attributes(props.structural_load_attributes)
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"structural.edit_structural_load",
@@ -909,7 +909,7 @@ class EnableEditingBoundaryCondition(bpy.types.Operator):
props.boundary_condition_attributes.clear()
boundary_condition = tool.Ifc.get().by_id(self.boundary_condition)
- # blenderbim.bim.helper.import_attributes(data["type"], props.boundary_condition_attributes, data)
+ # bim_helper.import_attributes(data["type"], props.boundary_condition_attributes, data)
for attribute in IfcStore.get_schema().declaration_by_name(boundary_condition.is_a()).all_attributes():
value = getattr(boundary_condition, attribute.name(), None)
data_type = ifcopenshell.util.attribute.get_primitive_type(attribute)
@@ -971,7 +971,7 @@ class EditBoundaryCondition(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = context.scene.BIMStructuralProperties
self.file = IfcStore.get_file()
- # attributes = blenderbim.bim.helper.export_attributes(props.boundary_condition_attributes)
+ # attributes = bim_helper.export_attributes(props.boundary_condition_attributes)
attributes = {}
for attribute in props.boundary_condition_attributes:
if attribute.is_null:
diff --git a/src/blenderbim/blenderbim/bim/module/structural/ui.py b/src/blenderbim/blenderbim/bim/module/structural/ui.py
index 7c0c3d0b3f..14860117b7 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel, UIList
from ...ifc import IfcStore
from ...helper import draw_attributes, prop_with_search
@@ -491,7 +491,7 @@ class BIM_PT_structural_loads(Panel):
)
if self.props.active_structural_load_id:
- blenderbim.bim.helper.draw_attributes(self.props.structural_load_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.structural_load_attributes, self.layout)
class BIM_UL_structural_loads(UIList):
@@ -565,7 +565,7 @@ class BIM_PT_boundary_conditions(Panel):
if self.props.active_boundary_condition_id:
draw_boundary_condition_editable_ui(self.layout, self.props)
- # blenderbim.bim.helper.draw_attributes(self.props.boundary_condition_attributes, self.layout)
+ # bim_helper.draw_attributes(self.props.boundary_condition_attributes, self.layout)
class BIM_UL_boundary_conditions(UIList):
diff --git a/src/blenderbim/blenderbim/bim/module/structural/workspace.py b/src/blenderbim/blenderbim/bim/module/structural/workspace.py
index 46e06ee63a..78bd7e16a2 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/workspace.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/workspace.py
@@ -23,7 +23,7 @@ from .... import tool
from ...helper import prop_with_search
from bpy.types import WorkSpaceTool
from ...ifc import IfcStore
-import blenderbim.bim.handler
+from ... import handler as bim_handler
class StructuralTool(WorkSpaceTool):
diff --git a/src/blenderbim/blenderbim/bim/module/style/operator.py b/src/blenderbim/blenderbim/bim/module/style/operator.py
index 60c7daf8b1..742eb247b2 100644
--- a/src/blenderbim/blenderbim/bim/module/style/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/style/operator.py
@@ -18,8 +18,8 @@
import os
import bpy
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from .... import tool
from ....core import style as core
import ifcopenshell.api
@@ -666,7 +666,7 @@ class EnableEditingSurfaceStyle(bpy.types.Operator, tool.Ifc.Operator):
if attributes is not None:
attributes.clear()
- blenderbim.bim.helper.import_attributes2(surface_style or self.ifc_class, attributes, callback)
+ bim_helper.import_attributes2(surface_style or self.ifc_class, attributes, callback)
material = tool.Ifc.get_object(style)
active_style_type = material.BIMStyleProperties.active_style_type
@@ -753,7 +753,7 @@ class EditSurfaceStyle(bpy.types.Operator, tool.Ifc.Operator):
"style.edit_surface_style",
tool.Ifc.get(),
style=self.surface_style,
- attributes=blenderbim.bim.helper.export_attributes(attributes),
+ attributes=bim_helper.export_attributes(attributes),
)
def add_new_style(self):
@@ -804,7 +804,7 @@ class EditSurfaceStyle(bpy.types.Operator, tool.Ifc.Operator):
tool.Ifc.get(),
style=self.style,
ifc_class=self.props.is_editing_class,
- attributes=blenderbim.bim.helper.export_attributes(attributes),
+ attributes=bim_helper.export_attributes(attributes),
)
def get_shading_attributes(self):
diff --git a/src/blenderbim/blenderbim/bim/module/style/ui.py b/src/blenderbim/blenderbim/bim/module/style/ui.py
index 1e83cd8b05..54c6734c12 100644
--- a/src/blenderbim/blenderbim/bim/module/style/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/style/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from bpy.types import Panel, UIList
from ...ifc import IfcStore
@@ -46,7 +46,7 @@ class BIM_PT_styles(Panel):
if not self.props.is_editing:
row = self.layout.row(align=True)
row.label(text="{} Styles".format(StylesData.data["total_styles"]), icon="SHADING_RENDERED")
- blenderbim.bim.helper.prop_with_search(row, self.props, "style_type", text="")
+ bim_helper.prop_with_search(row, self.props, "style_type", text="")
row.operator("bim.load_styles", text="", icon="IMPORT").style_type = self.props.style_type
return
@@ -128,7 +128,7 @@ class BIM_PT_styles(Panel):
# display style elements props during edit
if self.props.is_editing_style:
if self.props.is_editing_class == "IfcSurfaceStyle":
- blenderbim.bim.helper.draw_attributes(self.props.attributes, self.layout)
+ bim_helper.draw_attributes(self.props.attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_style", text="Save Attributes", icon="CHECKMARK")
row.operator("bim.disable_editing_style", text="", icon="CANCEL")
@@ -243,19 +243,19 @@ class BIM_PT_styles(Panel):
op = row.operator("bim.browse_external_style", icon="APPEND_BLEND", text="Append From Blend File")
style = self.props.styles[self.props.active_style_index]
op.active_surface_style_id = style.ifc_definition_id
- blenderbim.bim.helper.draw_attributes(self.props.external_style_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.external_style_attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_surface_style", text="Save External Style", icon="CHECKMARK")
row.operator("bim.disable_editing_style", text="", icon="CANCEL")
def draw_refraction_surface_style(self):
- blenderbim.bim.helper.draw_attributes(self.props.refraction_style_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.refraction_style_attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_surface_style", text="Save Refraction Style", icon="CHECKMARK")
row.operator("bim.disable_editing_style", text="", icon="CANCEL")
def draw_lighting_surface_style(self):
- blenderbim.bim.helper.draw_attributes(self.props.lighting_style_colours, self.layout)
+ bim_helper.draw_attributes(self.props.lighting_style_colours, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_surface_style", text="Save Lighting Style", icon="CHECKMARK")
row.operator("bim.disable_editing_style", text="", icon="CANCEL")
diff --git a/src/blenderbim/blenderbim/bim/module/system/operator.py b/src/blenderbim/blenderbim/bim/module/system/operator.py
index ae8c2aaeaf..46b5e073cb 100644
--- a/src/blenderbim/blenderbim/bim/module/system/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/system/operator.py
@@ -20,8 +20,8 @@ import bpy
import ifcopenshell.api
from .... import tool
from ....core import system as core
-import blenderbim.bim.handler
-import blenderbim.bim.helper
+from ... import handler as bim_handler
+from ... import helper as bim_helper
from ...ifc import IfcStore
from .data import PortData
from mathutils import Matrix
@@ -380,7 +380,7 @@ class EnableEditingZone(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = bpy.context.scene.BIMZoneProperties
props.attributes.clear()
- blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(self.zone), props.attributes)
+ bim_helper.import_attributes2(tool.Ifc.get().by_id(self.zone), props.attributes)
props.is_editing = self.zone
@@ -402,7 +402,7 @@ class EditZone(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context):
props = bpy.context.scene.BIMZoneProperties
zone = tool.Ifc.get().by_id(props.is_editing)
- attributes = blenderbim.bim.helper.export_attributes(props.attributes)
+ attributes = bim_helper.export_attributes(props.attributes)
ifcopenshell.api.run("system.edit_system", tool.Ifc.get(), system=zone, attributes=attributes)
props.is_editing = 0
bpy.ops.bim.load_zones()
diff --git a/src/blenderbim/blenderbim/bim/module/system/ui.py b/src/blenderbim/blenderbim/bim/module/system/ui.py
index d5f11d9c28..5a65c92b41 100644
--- a/src/blenderbim/blenderbim/bim/module/system/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/system/ui.py
@@ -17,7 +17,7 @@
# along with BlenderBIM Add-on. If not, see .
import bpy
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from .... import tool
from ...helper import prop_with_search
from bpy.types import Panel, UIList
@@ -377,7 +377,7 @@ class BIM_PT_zones(Panel):
self.layout.template_list("BIM_UL_zones", "", self.props, "zones", self.props, "active_zone_index")
if self.props.is_editing:
- blenderbim.bim.helper.draw_attributes(self.props.attributes, self.layout)
+ bim_helper.draw_attributes(self.props.attributes, self.layout)
row = self.layout.row(align=True)
row.operator("bim.edit_zone", icon="CHECKMARK")
row.operator("bim.disable_editing_zone", icon="CANCEL", text="")
diff --git a/src/blenderbim/blenderbim/bim/module/tester/operator.py b/src/blenderbim/blenderbim/bim/module/tester/operator.py
index 80e68b5fa6..79d5afb2c2 100644
--- a/src/blenderbim/blenderbim/bim/module/tester/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/tester/operator.py
@@ -26,7 +26,7 @@ import ifctester.ids
import ifctester.reporter
import ifcopenshell
from .... import tool
-import blenderbim.bim.handler
+from ... import handler as bim_handler
from ...operator import MultipleFileSelector
from pathlib import Path
@@ -58,7 +58,7 @@ class ExecuteIfcTester(bpy.types.Operator, tool.Ifc.Operator):
for f in props.specs_files:
self.execute_tester(ifc_data, ifc_file.name, f.name)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
def execute_tester(self, ifc_data, ifc_path, specs_path):
diff --git a/src/blenderbim/blenderbim/bim/module/type/operator.py b/src/blenderbim/blenderbim/bim/module/type/operator.py
index e142c23801..91b821ed16 100644
--- a/src/blenderbim/blenderbim/bim/module/type/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/type/operator.py
@@ -25,9 +25,9 @@ import ifcopenshell.util.type
import ifcopenshell.util.unit
import ifcopenshell.api
from .... import tool
-import blenderbim.core.geometry
+from ....core import geometry as core_geometry
from ....core import type as core
-import blenderbim.core.root
+from ....core import root as core_root
from ...ifc import IfcStore
@@ -98,7 +98,7 @@ class UnassignType(bpy.types.Operator):
element.Representation.Representations = representations
if new_active_representation:
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -268,7 +268,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
bm.free()
obj = bpy.data.objects.new(name, mesh)
obj.matrix_world.translation = location
- blenderbim.core.root.assign_class(
+ core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -283,7 +283,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template in ("LAYERSET_AXIS2", "LAYERSET_AXIS3"):
unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
obj = bpy.data.objects.new(name, None)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -317,7 +317,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "PROFILESET" or template.startswith("FLOW_SEGMENT_"):
unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
obj = bpy.data.objects.new(name, None)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -390,7 +390,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "EMPTY":
obj = bpy.data.objects.new(name, None)
- blenderbim.core.root.assign_class(
+ core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -405,7 +405,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "WINDOW":
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name, mesh)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -420,7 +420,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "DOOR":
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name, mesh)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -435,7 +435,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "STAIR":
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name, mesh)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -450,7 +450,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "RAILING":
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name, mesh)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -466,7 +466,7 @@ class AddType(bpy.types.Operator, tool.Ifc.Operator):
elif template == "ROOF":
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name, mesh)
- element = blenderbim.core.root.assign_class(
+ element = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -549,7 +549,7 @@ class DuplicateType(bpy.types.Operator, tool.Ifc.Operator):
new_obj = obj.copy()
if obj.data:
new_obj.data = obj.data.copy()
- new = blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
+ new = core_root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=new_obj)
new.Name += " Copy"
bpy.ops.bim.load_type_thumbnails(ifc_class=new.is_a())
if obj in context.selectable_objects:
diff --git a/src/blenderbim/blenderbim/bim/module/unit/operator.py b/src/blenderbim/blenderbim/bim/module/unit/operator.py
index 1d9b52c67f..e7454ecbb7 100644
--- a/src/blenderbim/blenderbim/bim/module/unit/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/unit/operator.py
@@ -20,8 +20,8 @@ import bpy
import json
import ifcopenshell.api
import ifcopenshell.util.unit
-import blenderbim.bim.helper
-import blenderbim.bim.handler
+from ... import helper as bim_helper
+from ... import handler as bim_handler
from .... import tool
from ....core import unit as core
from ...ifc import IfcStore
diff --git a/src/blenderbim/blenderbim/bim/module/unit/ui.py b/src/blenderbim/blenderbim/bim/module/unit/ui.py
index f4be63b31b..253ce0fdb7 100644
--- a/src/blenderbim/blenderbim/bim/module/unit/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/unit/ui.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see .
-import blenderbim.bim.helper
+from ... import helper as bim_helper
from bpy.types import Panel, UIList
from ...ifc import IfcStore
from ...helper import prop_with_search
@@ -98,7 +98,7 @@ class BIM_PT_units(Panel):
self.draw_editable_ui(context)
def draw_editable_ui(self, context):
- blenderbim.bim.helper.draw_attributes(self.props.unit_attributes, self.layout)
+ bim_helper.draw_attributes(self.props.unit_attributes, self.layout)
class BIM_UL_units(UIList):
diff --git a/src/blenderbim/blenderbim/bim/module/void/operator.py b/src/blenderbim/blenderbim/bim/module/void/operator.py
index f2e9371cf9..b71bf5fa0c 100644
--- a/src/blenderbim/blenderbim/bim/module/void/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/void/operator.py
@@ -21,9 +21,9 @@ import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.representation
from .... import tool
-import blenderbim.core.geometry
-import blenderbim.core.root
-import blenderbim.bim.handler
+from ....core import geometry as core_geometry
+from ....core import root as core_root
+from ... import handler as bim_handler
from ...ifc import IfcStore
from ..model.opening import FilledOpeningGenerator
@@ -86,7 +86,7 @@ class AddOpening(bpy.types.Operator, tool.Ifc.Operator):
continue
if tool.Ifc.is_moved(obj1):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj1)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj1)
has_visible_openings = False
for opening in [r.RelatedOpeningElement for r in element1.HasOpenings]:
@@ -96,7 +96,7 @@ class AddOpening(bpy.types.Operator, tool.Ifc.Operator):
body_context = ifcopenshell.util.representation.get_context(IfcStore.get_file(), "Model", "Body")
if not element2:
- element2 = blenderbim.core.root.assign_class(
+ element2 = core_root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -108,7 +108,7 @@ class AddOpening(bpy.types.Operator, tool.Ifc.Operator):
ifcopenshell.api.run("void.add_opening", tool.Ifc.get(), opening=element2, element=element1)
if tool.Ifc.is_moved(obj2):
- blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj2)
+ core_geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj2)
voided_objs = [obj1]
for subelement in ifcopenshell.util.element.get_decomposition(element1):
@@ -119,7 +119,7 @@ class AddOpening(bpy.types.Operator, tool.Ifc.Operator):
for voided_obj in voided_objs:
if voided_obj.data:
representation = tool.Ifc.get().by_id(voided_obj.data.BIMMeshProperties.ifc_definition_id)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=voided_obj,
@@ -162,7 +162,7 @@ class RemoveOpening(bpy.types.Operator, tool.Ifc.Operator):
building_obj = tool.Ifc.get_object(building_element)
if building_obj and building_obj.data:
representation = tool.Geometry.get_active_representation(building_obj)
- blenderbim.core.geometry.switch_representation(
+ core_geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=building_obj,
@@ -271,5 +271,5 @@ class BooleansMarkAsManual(bpy.types.Operator):
self.report(
{"INFO"}, f"{len(booleans)} booleans were marked as {'manual' if self.mark_as_manual else 'automatic'}"
)
- blenderbim.bim.handler.refresh_ui_data()
+ bim_handler.refresh_ui_data()
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/operator.py b/src/blenderbim/blenderbim/bim/operator.py
index 2b1326d210..1dcb215e7a 100644
--- a/src/blenderbim/blenderbim/bim/operator.py
+++ b/src/blenderbim/blenderbim/bim/operator.py
@@ -30,7 +30,8 @@ import subprocess
import tempfile
import webbrowser
import ifcopenshell
-import blenderbim.bim.handler
+from .. import bim
+from . import handler as bim_handler
from .. import tool
from . import schema
from ..bim import import_ifc
@@ -58,7 +59,7 @@ class SetTab(bpy.types.Operator):
@classmethod
def description(cls, context, operator):
- return next((t[1] for t in blenderbim.bim.prop.get_tab(None, context) if t[0] == operator.tab), "")
+ return next((t[1] for t in bim.prop.get_tab(None, context) if t[0] == operator.tab), "")
def execute(self, context):
if context.area.spaces.active.search_filter:
diff --git a/src/blenderbim/blenderbim/bim/prop.py b/src/blenderbim/blenderbim/bim/prop.py
index f0d589290b..f93be3649f 100644
--- a/src/blenderbim/blenderbim/bim/prop.py
+++ b/src/blenderbim/blenderbim/bim/prop.py
@@ -30,9 +30,9 @@ from ifcopenshell.util.doc import (
get_property_doc,
get_predefined_type_doc,
)
-import blenderbim.bim
-import blenderbim.bim.schema
-import blenderbim.bim.handler
+from .. import bim
+from . import schema as bim_schema
+from . import handler as bim_handler
from .ifc import IfcStore
from .. import tool
from collections import defaultdict
@@ -109,20 +109,20 @@ def get_attribute_enum_values(prop, context):
def update_schema_dir(self, context):
- import blenderbim.bim.schema
+ from . import schema
- blenderbim.bim.schema.ifc.schema_dir = context.scene.BIMProperties.schema_dir
+ schema.ifc.schema_dir = context.scene.BIMProperties.schema_dir
def update_data_dir(self, context):
- import blenderbim.bim.schema
+ from . import schema
- blenderbim.bim.schema.ifc.data_dir = context.scene.BIMProperties.data_dir
+ schema.ifc.data_dir = context.scene.BIMProperties.data_dir
def update_ifc_file(self, context):
if context.scene.BIMProperties.ifc_file:
- blenderbim.bim.handler.loadIfcStore(context.scene)
+ bim.handler.loadIfcStore(context.scene)
def update_section_color(self, context):
@@ -308,7 +308,7 @@ class Attribute(PropertyGroup):
def get_tab(self, context):
return [
- ("PROJECT", "Project Overview", "", blenderbim.bim.icons["IFC"].icon_id, 0),
+ ("PROJECT", "Project Overview", "", bim.icons["IFC"].icon_id, 0),
("OBJECT", "Object Information", "", "FILE_3D", 1),
("GEOMETRY", "Geometry and Materials", "", "MATERIAL", 2),
("DRAWINGS", "Drawings and Documents", "", "DOCUMENTS", 3),
diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py
index fcf69a46f2..2967839ec3 100644
--- a/src/blenderbim/blenderbim/bim/ui.py
+++ b/src/blenderbim/blenderbim/bim/ui.py
@@ -18,6 +18,7 @@
import os
import bpy
+import importlib
import addon_utils
import platform
from pathlib import Path
@@ -29,12 +30,13 @@ from ifcopenshell.util.doc import (
get_type_doc,
get_attribute_doc,
)
-import blenderbim.bim
+from .. import bim
from .. import tool
from ifcopenshell.util.file import IfcHeaderExtractor
from .prop import Attribute
from typing import Optional
+bbim = importlib.import_module("..", package=__package__)
class IFCFileSelector:
filepath: str
@@ -397,7 +399,7 @@ class BIM_PT_tabs(Panel):
text="",
emboss=aprops.tab == "PROJECT",
depress=True,
- icon_value=blenderbim.bim.icons["IFC"].icon_id,
+ icon_value=bim.icons["IFC"].icon_id,
).tab = "PROJECT"
self.draw_tab_entry(row, "FILE_3D", "OBJECT", is_ifc_project, aprops.tab == "OBJECT")
self.draw_tab_entry(row, "MATERIAL", "GEOMETRY", is_ifc_project, aprops.tab == "GEOMETRY")
@@ -433,7 +435,7 @@ class BIM_PT_tabs(Panel):
row = self.layout.row(align=True)
row.prop(aprops, "tab", text="")
- if blenderbim.last_error:
+ if bbim.last_error:
box = self.layout.box()
box.alert = True
row = box.row(align=True)