From e4193c59ac356e2834ff81365c479809c8b6ae8b Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 18 Jul 2024 16:15:16 +1000 Subject: [PATCH] Make all "import" imports relative --- src/blenderbim/blenderbim/bim/export_ifc.py | 10 ++--- src/blenderbim/blenderbim/bim/handler.py | 6 +-- src/blenderbim/blenderbim/bim/ifc.py | 16 +++---- .../bim/module/aggregate/operator.py | 8 ++-- .../bim/module/attribute/operator.py | 10 ++--- .../blenderbim/bim/module/attribute/ui.py | 4 +- .../bim/module/boundary/operator.py | 8 ++-- .../blenderbim/bim/module/boundary/ui.py | 2 +- .../blenderbim/bim/module/brick/operator.py | 4 +- .../blenderbim/bim/module/clash/ui.py | 6 +-- .../bim/module/classification/operator.py | 14 +++---- .../bim/module/classification/prop.py | 2 +- .../bim/module/classification/ui.py | 12 +++--- .../bim/module/constraint/operator.py | 4 +- .../blenderbim/bim/module/context/operator.py | 4 +- .../blenderbim/bim/module/context/ui.py | 10 ++--- .../blenderbim/bim/module/cost/data.py | 2 +- .../blenderbim/bim/module/cost/operator.py | 2 +- .../blenderbim/bim/module/cost/ui.py | 10 ++--- .../blenderbim/bim/module/covering/prop.py | 4 -- .../bim/module/covering/workspace.py | 2 +- .../blenderbim/bim/module/csv/ui.py | 4 +- .../blenderbim/bim/module/debug/operator.py | 8 ++-- .../blenderbim/bim/module/demo/operator.py | 2 +- .../blenderbim/bim/module/diff/operator.py | 9 ++-- .../blenderbim/bim/module/diff/ui.py | 4 +- .../blenderbim/bim/module/drawing/operator.py | 22 +++++----- .../blenderbim/bim/module/drawing/ui.py | 8 ++-- .../bim/module/drawing/workspace.py | 6 +-- .../bim/module/geometry/operator.py | 28 ++++++------- .../blenderbim/bim/module/geometry/prop.py | 4 +- .../blenderbim/bim/module/geometry/ui.py | 6 +-- .../blenderbim/bim/module/group/operator.py | 4 +- .../blenderbim/bim/module/layer/operator.py | 4 +- .../blenderbim/bim/module/library/operator.py | 2 +- .../blenderbim/bim/module/library/ui.py | 6 +-- .../bim/module/material/operator.py | 22 +++++----- .../blenderbim/bim/module/material/ui.py | 8 ++-- .../blenderbim/bim/module/misc/operator.py | 6 +-- .../blenderbim/bim/module/model/door.py | 12 +++--- .../blenderbim/bim/module/model/mep.py | 14 +++---- .../blenderbim/bim/module/model/opening.py | 32 +++++++------- .../blenderbim/bim/module/model/pie.py | 6 +-- .../blenderbim/bim/module/model/product.py | 18 ++++---- .../blenderbim/bim/module/model/profile.py | 32 +++++++------- .../blenderbim/bim/module/model/railing.py | 8 ++-- .../blenderbim/bim/module/model/roof.py | 4 +- .../blenderbim/bim/module/model/root.py | 4 +- .../blenderbim/bim/module/model/slab.py | 28 ++++++------- .../blenderbim/bim/module/model/stair.py | 4 +- .../blenderbim/bim/module/model/ui.py | 16 +++---- .../blenderbim/bim/module/model/wall.py | 36 ++++++++-------- .../blenderbim/bim/module/model/window.py | 12 +++--- .../blenderbim/bim/module/nest/operator.py | 4 +- .../blenderbim/bim/module/owner/operator.py | 2 +- .../blenderbim/bim/module/owner/ui.py | 12 +++--- .../blenderbim/bim/module/patch/operator.py | 4 +- .../blenderbim/bim/module/profile/operator.py | 6 +-- .../blenderbim/bim/module/profile/ui.py | 4 +- .../blenderbim/bim/module/project/operator.py | 20 ++++----- .../blenderbim/bim/module/project/ui.py | 6 +-- .../blenderbim/bim/module/pset/data.py | 8 ++-- .../blenderbim/bim/module/pset/operator.py | 14 +++---- .../blenderbim/bim/module/pset/prop.py | 20 ++++----- .../bim/module/pset_template/operator.py | 42 +++++++++---------- .../blenderbim/bim/module/resource/prop.py | 16 +++---- .../blenderbim/bim/module/resource/ui.py | 10 ++--- .../blenderbim/bim/module/root/operator.py | 14 +++---- .../blenderbim/bim/module/search/ui.py | 4 +- .../blenderbim/bim/module/sequence/prop.py | 10 ++--- .../blenderbim/bim/module/sequence/ui.py | 10 ++--- .../blenderbim/bim/module/spatial/operator.py | 10 ++--- .../bim/module/spatial/workspace.py | 8 ++-- .../bim/module/structural/operator.py | 18 ++++---- .../blenderbim/bim/module/structural/ui.py | 6 +-- .../bim/module/structural/workspace.py | 2 +- .../blenderbim/bim/module/style/operator.py | 10 ++--- .../blenderbim/bim/module/style/ui.py | 12 +++--- .../blenderbim/bim/module/system/operator.py | 8 ++-- .../blenderbim/bim/module/system/ui.py | 4 +- .../blenderbim/bim/module/tester/operator.py | 4 +- .../blenderbim/bim/module/type/operator.py | 26 ++++++------ .../blenderbim/bim/module/unit/operator.py | 4 +- .../blenderbim/bim/module/unit/ui.py | 4 +- .../blenderbim/bim/module/void/operator.py | 18 ++++---- src/blenderbim/blenderbim/bim/operator.py | 5 ++- src/blenderbim/blenderbim/bim/prop.py | 18 ++++---- src/blenderbim/blenderbim/bim/ui.py | 8 ++-- 88 files changed, 444 insertions(+), 446 deletions(-) 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)