bonsai tool module imports #5178

This commit is contained in:
Andrej730
2024-08-14 13:56:39 +05:00
committed by Andrej
parent be442ff1be
commit c03777cfe6
82 changed files with 532 additions and 550 deletions
+1 -1
View File
@@ -85,7 +85,7 @@ class IfcExporter:
)
self.file.wrapped_data.header.file_name.preprocessor_version = "IfcOpenShell {}".format(ifcopenshell.version)
self.file.wrapped_data.header.file_name.originating_system = "{} {}".format(
self.get_application_name(), tool.Blender.get_blenderbim_version()
self.get_application_name(), tool.Blender.get_bonsai_version()
)
def sync_all_objects(self) -> list[ifcopenshell.entity_instance]:
+1 -1
View File
@@ -226,7 +226,7 @@ def redo_post(scene):
def get_application(ifc: ifcopenshell.file) -> ifcopenshell.entity_instance:
# TODO: cache this for even faster application retrieval. It honestly makes a difference on long scripts.
version = tool.Blender.get_blenderbim_version()
version = tool.Blender.get_bonsai_version()
for element in ifc.by_type("IfcApplication"):
if element.ApplicationIdentifier == "Bonsai" and element.Version == version:
return element
@@ -76,7 +76,7 @@ class AuginCreateNewModel(bpy.types.Operator):
props.project_filename = "BBM{}{}".format(
datetime.datetime.now().strftime("%Y%m%d%H%M%S"), "".join(random.choice(chars) for _ in range(6))
)
addon_version = tool.Blender.get_blenderbim_version()
addon_version = tool.Blender.get_bonsai_version()
payload = {
"user_token": props.token,
+1 -1
View File
@@ -20,7 +20,7 @@ import bpy
import ifcopenshell.file
import blenderbim.bim.handler
import blenderbim.tool as tool
from blenderbim.bim.ifc import IFC_CONNECTED_TYPE
from bonsai.bim.ifc import IFC_CONNECTED_TYPE
from typing import Any
+1 -1
View File
@@ -1046,7 +1046,7 @@ class UIData:
@classmethod
def version(cls):
return tool.Blender.get_blenderbim_version()
return tool.Blender.get_bonsai_version()
def draw_statusbar(self, context):
+48 -48
View File
@@ -16,51 +16,51 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
from blenderbim.tool.aggregate import Aggregate
from blenderbim.tool.blender import Blender
from blenderbim.tool.boundary import Boundary
from blenderbim.tool.brick import Brick
from blenderbim.tool.bsdd import Bsdd
from blenderbim.tool.cad import Cad
from blenderbim.tool.clash import Clash
from blenderbim.tool.classification import Classification
from blenderbim.tool.collector import Collector
from blenderbim.tool.context import Context
from blenderbim.tool.debug import Debug
from blenderbim.tool.demo import Demo
from blenderbim.tool.document import Document
from blenderbim.tool.drawing import Drawing
from blenderbim.tool.geometry import Geometry
from blenderbim.tool.georeference import Georeference
from blenderbim.tool.ifc import Ifc
from blenderbim.tool.ifcgit import IfcGit
from blenderbim.tool.ifcgit import IfcGitRepo
from blenderbim.tool.library import Library
from blenderbim.tool.loader import Loader
from blenderbim.tool.material import Material
from blenderbim.tool.misc import Misc
from blenderbim.tool.model import Model
from blenderbim.tool.nest import Nest
from blenderbim.tool.owner import Owner
from blenderbim.tool.patch import Patch
from blenderbim.tool.project import Project
from blenderbim.tool.profile import Profile
from blenderbim.tool.pset import Pset
from blenderbim.tool.qto import Qto
from blenderbim.tool.raycast import Raycast
from blenderbim.tool.resource import Resource
from blenderbim.tool.root import Root
from blenderbim.tool.sequence import Sequence
from blenderbim.tool.snap import Snap
from blenderbim.tool.spatial import Spatial
from blenderbim.tool.covering import Covering
from blenderbim.tool.structural import Structural
from blenderbim.tool.style import Style
from blenderbim.tool.surveyor import Surveyor
from blenderbim.tool.system import System
from blenderbim.tool.tester import Tester
from blenderbim.tool.type import Type
from blenderbim.tool.unit import Unit
from blenderbim.tool.search import Search
from blenderbim.tool.cost import Cost
from blenderbim.tool.web import Web
from bonsai.tool.aggregate import Aggregate
from bonsai.tool.blender import Blender
from bonsai.tool.boundary import Boundary
from bonsai.tool.brick import Brick
from bonsai.tool.bsdd import Bsdd
from bonsai.tool.cad import Cad
from bonsai.tool.clash import Clash
from bonsai.tool.classification import Classification
from bonsai.tool.collector import Collector
from bonsai.tool.context import Context
from bonsai.tool.debug import Debug
from bonsai.tool.demo import Demo
from bonsai.tool.document import Document
from bonsai.tool.drawing import Drawing
from bonsai.tool.geometry import Geometry
from bonsai.tool.georeference import Georeference
from bonsai.tool.ifc import Ifc
from bonsai.tool.ifcgit import IfcGit
from bonsai.tool.ifcgit import IfcGitRepo
from bonsai.tool.library import Library
from bonsai.tool.loader import Loader
from bonsai.tool.material import Material
from bonsai.tool.misc import Misc
from bonsai.tool.model import Model
from bonsai.tool.nest import Nest
from bonsai.tool.owner import Owner
from bonsai.tool.patch import Patch
from bonsai.tool.project import Project
from bonsai.tool.profile import Profile
from bonsai.tool.pset import Pset
from bonsai.tool.qto import Qto
from bonsai.tool.raycast import Raycast
from bonsai.tool.resource import Resource
from bonsai.tool.root import Root
from bonsai.tool.sequence import Sequence
from bonsai.tool.snap import Snap
from bonsai.tool.spatial import Spatial
from bonsai.tool.covering import Covering
from bonsai.tool.structural import Structural
from bonsai.tool.style import Style
from bonsai.tool.surveyor import Surveyor
from bonsai.tool.system import System
from bonsai.tool.tester import Tester
from bonsai.tool.type import Type
from bonsai.tool.unit import Unit
from bonsai.tool.search import Search
from bonsai.tool.cost import Cost
from bonsai.tool.web import Web
+3 -3
View File
@@ -17,14 +17,14 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import ifcopenshell.util.element
import ifcopenshell.util.representation
from typing import Union
class Aggregate(blenderbim.core.tool.Aggregate):
class Aggregate(bonsai.core.tool.Aggregate):
@classmethod
def can_aggregate(cls, relating_obj: bpy.types.Object, related_obj: bpy.types.Object) -> bool:
relating_object = tool.Ifc.get_entity(relating_obj)
+20 -20
View File
@@ -23,14 +23,14 @@ import json
import os
import ifcopenshell.api
import ifcopenshell.util.element
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim
import types
import importlib
from mathutils import Vector
from pathlib import Path
from blenderbim.bim.ifc import IFC_CONNECTED_TYPE
from bonsai.bim.ifc import IFC_CONNECTED_TYPE
from typing import Any, Optional, Union, Literal, Iterable, Callable
from typing_extensions import assert_never
@@ -49,7 +49,7 @@ VIEWPORT_ATTRIBUTES = [
OBJECT_DATA_TYPE = Union[bpy.types.Mesh, bpy.types.Curve, bpy.types.Camera]
class Blender(blenderbim.core.tool.Blender):
class Blender(bonsai.core.tool.Blender):
OBJECT_TYPES_THAT_SUPPORT_EDIT_MODE = ("MESH", "CURVE", "SURFACE", "META", "FONT", "LATTICE", "ARMATURE")
OBJECT_TYPES_THAT_SUPPORT_EDIT_GPENCIL_MODE = ("GPENCIL",)
TYPE_MANAGER_ICON = "LIGHTPROBE_VOLUME" if bpy.app.version >= (4, 1, 0) else "LIGHTPROBE_GRID"
@@ -943,7 +943,7 @@ class Blender(blenderbim.core.tool.Blender):
return commit_hash[:7]
@classmethod
def get_blenderbim_version(cls) -> str:
def get_bonsai_version(cls) -> str:
bbim = cls.get_bbim_extension_package()
version = bbim.bbim_semver["version"]
if commit_hash := cls.get_last_commit_hash():
@@ -952,11 +952,11 @@ class Blender(blenderbim.core.tool.Blender):
@classmethod
def register_toolbar(cls):
import blenderbim.bim.module.model.workspace as ws_model
import blenderbim.bim.module.drawing.workspace as ws_drawing
import blenderbim.bim.module.spatial.workspace as ws_spatial
import blenderbim.bim.module.structural.workspace as ws_structural
import blenderbim.bim.module.covering.workspace as ws_covering
import bonsai.bim.module.model.workspace as ws_model
import bonsai.bim.module.drawing.workspace as ws_drawing
import bonsai.bim.module.spatial.workspace as ws_spatial
import bonsai.bim.module.structural.workspace as ws_structural
import bonsai.bim.module.covering.workspace as ws_covering
if bpy.app.background:
return
@@ -984,11 +984,11 @@ class Blender(blenderbim.core.tool.Blender):
@classmethod
def unregister_toolbar(cls):
import blenderbim.bim.module.model.workspace as ws_model
import blenderbim.bim.module.drawing.workspace as ws_drawing
import blenderbim.bim.module.spatial.workspace as ws_spatial
import blenderbim.bim.module.structural.workspace as ws_structural
import blenderbim.bim.module.covering.workspace as ws_covering
import bonsai.bim.module.model.workspace as ws_model
import bonsai.bim.module.drawing.workspace as ws_drawing
import bonsai.bim.module.spatial.workspace as ws_spatial
import bonsai.bim.module.structural.workspace as ws_structural
import bonsai.bim.module.covering.workspace as ws_covering
if bpy.app.background:
return
@@ -1022,7 +1022,7 @@ class Blender(blenderbim.core.tool.Blender):
if not hasattr(item, "bl_rna") or not isinstance(item.bl_rna, bpy.types.Panel):
continue
# ignore bbim panels
if item.__module__.startswith("blenderbim"):
if item.__module__.startswith("bonsai"):
continue
# filter scene panels
if getattr(item, "bl_context", None) != "scene":
@@ -1075,7 +1075,7 @@ class Blender(blenderbim.core.tool.Blender):
def poll_check_blender_tab(cls, context):
return tool.Blender.is_tab(context, "BLENDER")
polls = blenderbim.bim.original_scene_panels_polls
polls = bonsai.bim.original_scene_panels_polls
# override poll method
if not hasattr(original_panel, "poll"):
@@ -1096,7 +1096,7 @@ class Blender(blenderbim.core.tool.Blender):
@classmethod
def remove_scene_panel_override(cls, panel: bpy.types.Panel) -> None:
polls = blenderbim.bim.original_scene_panels_polls
polls = bonsai.bim.original_scene_panels_polls
poll = polls[panel]
if poll is None:
@@ -1125,7 +1125,7 @@ class Blender(blenderbim.core.tool.Blender):
return importlib.import_module(name)
@classmethod
def get_addon_preferences(cls) -> blenderbim.bim.ui.BIM_ADDON_preferences:
def get_addon_preferences(cls) -> bonsai.bim.ui.BIM_ADDON_preferences:
blender_package_name = cls.get_blender_addon_package_name()
return bpy.context.preferences.addons[blender_package_name].preferences
+4 -4
View File
@@ -18,16 +18,16 @@
import bpy
import mathutils
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from mathutils import Matrix, Vector
from typing import Any, Sequence
class Boundary(blenderbim.core.tool.Boundary):
class Boundary(bonsai.core.tool.Boundary):
@classmethod
def get_assign_connection_geometry_settings(cls, obj: bpy.types.Object) -> dict[str, Any]:
from blenderbim.bim.module.geometry.helper import Helper
from bonsai.bim.module.geometry.helper import Helper
ifc = tool.Ifc.get()
helper = Helper(ifc)
+7 -6
View File
@@ -23,8 +23,9 @@ import ifcopenshell.guid
import ifcopenshell.util.brick
import ifcopenshell.util.element
import ifcopenshell.util.system
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.brick
import bonsai.core.tool
import bonsai.tool as tool
from contextlib import contextmanager
import datetime
@@ -47,7 +48,7 @@ logger = logging.getLogger("rdflib")
logger.setLevel(logging.ERROR)
class Brick(blenderbim.core.tool.Brick):
class Brick(bonsai.core.tool.Brick):
@classmethod
def add_brick(cls, namespace, brick_class, label):
ns = Namespace(namespace)
@@ -400,17 +401,17 @@ class Brick(blenderbim.core.tool.Brick):
@classmethod
def run_assign_brick_reference(cls, element=None, library=None, brick_uri=None):
return blenderbim.core.brick.assign_brick_reference(
return bonsai.core.brick.assign_brick_reference(
tool.Ifc, tool.Brick, element=element, library=library, brick_uri=brick_uri
)
@classmethod
def run_refresh_brick_viewer(cls):
return blenderbim.core.brick.refresh_brick_viewer(tool.Brick)
return bonsai.core.brick.refresh_brick_viewer(tool.Brick)
@classmethod
def run_view_brick_class(cls, brick_class=None, split_screen=False):
return blenderbim.core.brick.view_brick_class(tool.Brick, brick_class=brick_class, split_screen=split_screen)
return bonsai.core.brick.view_brick_class(tool.Brick, brick_class=brick_class, split_screen=split_screen)
@classmethod
def select_browser_item(cls, item, split_screen=False):
+3 -3
View File
@@ -1,12 +1,12 @@
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import bpy
import json
import bsdd
from typing import Any, Union, Optional
class Bsdd(blenderbim.core.tool.Bsdd):
class Bsdd(bonsai.core.tool.Bsdd):
@classmethod
def clear_class_psets(cls) -> None:
bpy.context.scene.BIMBSDDProperties.classification_psets.clear()
+3 -3
View File
@@ -20,13 +20,13 @@ import os
import bpy
import json
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from contextlib import contextmanager
from mathutils import Vector
class Clash(blenderbim.core.tool.Clash):
class Clash(bonsai.core.tool.Clash):
@classmethod
def export_clash_sets(cls):
+3 -4
View File
@@ -20,14 +20,13 @@ from __future__ import annotations
import bpy
import ifcopenshell.api
import ifcopenshell.util.classification
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim
import bonsai.core.tool
import bonsai.tool as tool
from typing import Any, Optional, Union, Literal, Iterable, Callable
from typing_extensions import assert_never
class Classification(blenderbim.core.tool.Classification):
class Classification(bonsai.core.tool.Classification):
@classmethod
def get_location(cls, classification: ifcopenshell.entity_instance) -> Union[str, None]:
schema = classification.file.schema
+3 -3
View File
@@ -17,13 +17,13 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import ifcopenshell.util.element
from typing import Union
class Collector(blenderbim.core.tool.Collector):
class Collector(bonsai.core.tool.Collector):
@classmethod
def assign(cls, obj: bpy.types.Object, should_clean_users_collection=True) -> None:
"""Links an object to an appropriate Blender collection."""
+6 -6
View File
@@ -17,12 +17,12 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.bim.helper
import blenderbim.tool as tool
import blenderbim.core.tool
import bonsai.bim.helper
import bonsai.tool as tool
import bonsai.core.tool
class Context(blenderbim.core.tool.Context):
class Context(bonsai.core.tool.Context):
@classmethod
def set_context(cls, context):
bpy.context.scene.BIMContextProperties.active_context_id = context.id()
@@ -42,7 +42,7 @@ class Context(blenderbim.core.tool.Context):
props.context_attributes.remove(props.context_attributes.find("CoordinateSpaceDimension"))
return True
blenderbim.bim.helper.import_attributes(context.is_a(), props.context_attributes, context.get_info(), callback)
bonsai.bim.helper.import_attributes(context.is_a(), props.context_attributes, context.get_info(), callback)
@classmethod
def clear_context(cls):
@@ -54,4 +54,4 @@ class Context(blenderbim.core.tool.Context):
@classmethod
def export_attributes(cls):
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMContextProperties.context_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMContextProperties.context_attributes)
+12 -12
View File
@@ -1,25 +1,25 @@
import os
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.date
import ifcopenshell.util.cost
import ifcopenshell.util.unit
import blenderbim.bim.helper
import bonsai.bim.helper
import json
from typing import Optional, Any, Generator, Union, Literal
class Cost(blenderbim.core.tool.Cost):
class Cost(bonsai.core.tool.Cost):
RELATED_OBJECT_TYPE = Literal["PRODUCT", "PROCESS", "RESOURCE"]
@classmethod
def get_cost_schedule_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMCostProperties
return blenderbim.bim.helper.export_attributes(props.cost_schedule_attributes)
return bonsai.bim.helper.export_attributes(props.cost_schedule_attributes)
@classmethod
def disable_editing_cost_schedule(cls) -> None:
@@ -90,7 +90,7 @@ class Cost(blenderbim.core.tool.Cost):
props = bpy.context.scene.BIMCostProperties
props.cost_schedule_attributes.clear()
blenderbim.bim.helper.import_attributes2(cost_schedule, props.cost_schedule_attributes, callback=special_import)
bonsai.bim.helper.import_attributes2(cost_schedule, props.cost_schedule_attributes, callback=special_import)
@classmethod
def enable_editing_cost_items(cls, cost_schedule: ifcopenshell.entity_instance) -> None:
@@ -191,7 +191,7 @@ class Cost(blenderbim.core.tool.Cost):
def load_cost_item_attributes(cls, cost_item: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMCostProperties
props.cost_item_attributes.clear()
blenderbim.bim.helper.import_attributes2(cost_item, props.cost_item_attributes)
bonsai.bim.helper.import_attributes2(cost_item, props.cost_item_attributes)
@classmethod
def disable_editing_cost_item(cls) -> None:
@@ -201,7 +201,7 @@ class Cost(blenderbim.core.tool.Cost):
@classmethod
def get_cost_item_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMCostProperties
return blenderbim.bim.helper.export_attributes(props.cost_item_attributes)
return bonsai.bim.helper.export_attributes(props.cost_item_attributes)
@classmethod
def get_active_cost_item(cls) -> Union[ifcopenshell.entity_instance, None]:
@@ -319,7 +319,7 @@ class Cost(blenderbim.core.tool.Cost):
def load_cost_item_quantity_attributes(cls, physical_quantity: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMCostProperties
props.quantity_attributes.clear()
blenderbim.bim.helper.import_attributes2(physical_quantity, props.quantity_attributes)
bonsai.bim.helper.import_attributes2(physical_quantity, props.quantity_attributes)
@classmethod
def enable_editing_cost_item_values(cls, cost_item: ifcopenshell.entity_instance) -> None:
@@ -334,7 +334,7 @@ class Cost(blenderbim.core.tool.Cost):
@classmethod
def get_cost_item_quantity_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMCostProperties
return blenderbim.bim.helper.export_attributes(props.quantity_attributes)
return bonsai.bim.helper.export_attributes(props.quantity_attributes)
@classmethod
def get_attributes_for_cost_value(
@@ -396,7 +396,7 @@ class Cost(blenderbim.core.tool.Cost):
callback = lambda name, prop, data: import_attributes(
name, prop, data, cost_value, is_rates, props.cost_value_attributes
)
blenderbim.bim.helper.import_attributes2(cost_value, props.cost_value_attributes, callback=callback)
bonsai.bim.helper.import_attributes2(cost_value, props.cost_value_attributes, callback=callback)
@classmethod
def calculate_applied_value(
@@ -456,7 +456,7 @@ class Cost(blenderbim.core.tool.Cost):
props = bpy.context.scene.BIMCostProperties
callback = lambda attributes, prop: export_attributes(attributes, prop)
return blenderbim.bim.helper.export_attributes(props.cost_value_attributes, callback)
return bonsai.bim.helper.export_attributes(props.cost_value_attributes, callback)
@classmethod
def get_cost_value_unit_component(cls) -> ifcopenshell.entity_instance:
+3 -12
View File
@@ -17,22 +17,13 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import bmesh
import shapely
import ifcopenshell
import ifcopenshell.util.element
import blenderbim.core.tool
import blenderbim.core.root
import blenderbim.core.spatial
import blenderbim.core.geometry
import blenderbim.tool as tool
import json
from math import pi
from mathutils import Vector, Matrix
from shapely import Polygon, MultiPolygon
import bonsai.core.tool
import bonsai.tool as tool
class Covering(blenderbim.core.tool.Covering):
class Covering(bonsai.core.tool.Covering):
@classmethod
def get_z_from_ceiling_height(cls) -> float:
props = bpy.context.scene.BIMCoveringProperties
+4 -4
View File
@@ -19,12 +19,12 @@
import os
import bpy
import ifcopenshell.express
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
class Debug(blenderbim.core.tool.Debug):
class Debug(bonsai.core.tool.Debug):
@classmethod
def add_schema_identifier(cls, schema):
IfcStore.schema_identifiers.append(schema.schema_name)
+3 -3
View File
@@ -30,13 +30,13 @@
# processing, and more.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
# There is always one class in each tool file, which implements the interface
# defined by `core/tool.py`.
class Demo(blenderbim.core.tool.Demo):
class Demo(bonsai.core.tool.Demo):
@classmethod
def clear_name_field(cls):
# In this concrete implementation, we see that "clear name field"
+6 -6
View File
@@ -18,12 +18,12 @@
import bpy
import ifcopenshell.util.system
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.bim import import_ifc
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim import import_ifc
class Document(blenderbim.core.tool.Document):
class Document(bonsai.core.tool.Document):
@classmethod
def add_breadcrumb(cls, document):
props = bpy.context.scene.BIMDocumentProperties
@@ -54,7 +54,7 @@ class Document(blenderbim.core.tool.Document):
@classmethod
def export_document_attributes(cls):
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMDocumentProperties.document_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMDocumentProperties.document_attributes)
@classmethod
def get_active_breadcrumb(cls):
@@ -66,7 +66,7 @@ class Document(blenderbim.core.tool.Document):
def import_document_attributes(cls, document):
props = bpy.context.scene.BIMDocumentProperties
props.document_attributes.clear()
blenderbim.bim.helper.import_attributes2(document, props.document_attributes)
bonsai.bim.helper.import_attributes2(document, props.document_attributes)
@classmethod
def import_project_documents(cls):
+25 -24
View File
@@ -32,17 +32,18 @@ import platform
import mathutils
import subprocess
import numpy as np
import blenderbim.core.tool
import blenderbim.core.geometry
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.core.geometry
import bonsai.tool as tool
import ifcopenshell.api
import ifcopenshell.geom
import ifcopenshell.util.representation
import ifcopenshell.util.element
import ifcopenshell.util.selector
import ifcopenshell.util.shape
import blenderbim.bim.import_ifc
import blenderbim.core.root
import bonsai.bim.helper
import bonsai.bim.import_ifc
import bonsai.core.root
from shapely.ops import unary_union
from lxml import etree
from mathutils import Vector, Matrix
@@ -51,7 +52,7 @@ from typing import Optional, Union, Iterable, Any, Literal
from pathlib import Path
class Drawing(blenderbim.core.tool.Drawing):
class Drawing(bonsai.core.tool.Drawing):
ANNOTATION_DATA_TYPE = Literal["empty", "curve", "mesh"]
DOCUMENT_TYPE = Literal["SCHEDULE", "REFERENCE"]
@@ -96,7 +97,7 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def create_annotation_object(cls, drawing: ifcopenshell.entity_instance, object_type: str) -> bpy.types.Object:
import blenderbim.bim.module.drawing.annotation as annotation
import bonsai.bim.module.drawing.annotation as annotation
data_type = cls.get_annotation_data_type(object_type)
obj = annotation.Annotator.get_annotation_obj(drawing, object_type, data_type)
@@ -269,7 +270,7 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def create_svg_schedule(cls, schedule: ifcopenshell.entity_instance) -> None:
import blenderbim.bim.module.drawing.scheduler as scheduler
import bonsai.bim.module.drawing.scheduler as scheduler
schedule_creator = scheduler.Scheduler()
schedule_creator.schedule(
@@ -278,7 +279,7 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def create_svg_sheet(cls, document: ifcopenshell.entity_instance, titleblock: str) -> str:
import blenderbim.bim.module.drawing.sheeter as sheeter
import bonsai.bim.module.drawing.sheeter as sheeter
sheet_builder = sheeter.SheetBuilder()
sheet_builder.data_dir = bpy.context.scene.BIMProperties.data_dir
@@ -288,7 +289,7 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def add_drawings(cls, sheet: ifcopenshell.entity_instance) -> None:
import blenderbim.bim.module.drawing.sheeter as sheeter
import bonsai.bim.module.drawing.sheeter as sheeter
sheet_builder = sheeter.SheetBuilder()
sheet_builder.data_dir = bpy.context.scene.BIMProperties.data_dir
@@ -401,7 +402,7 @@ class Drawing(blenderbim.core.tool.Drawing):
def export_text_literal_attributes(cls, obj: bpy.types.Object) -> list[dict[str, Any]]:
literals = []
for literal_props in obj.BIMTextProperties.literals:
literal_data = blenderbim.bim.helper.export_attributes(literal_props.attributes)
literal_data = bonsai.bim.helper.export_attributes(literal_props.attributes)
literals.append(literal_data)
return literals
@@ -671,8 +672,8 @@ class Drawing(blenderbim.core.tool.Drawing):
[e for e in cls.get_group_elements(group) if e.is_a("IfcAnnotation") and e.ObjectType != "DRAWING"]
)
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 = bonsai.bim.import_ifc.IfcImportSettings.factory(bpy.context, None, logger)
ifc_importer = bonsai.bim.import_ifc.IfcImporter(ifc_import_settings)
ifc_importer.file = tool.Ifc.get()
ifc_importer.calculate_unit_scale()
ifc_importer.process_context_filter()
@@ -751,7 +752,7 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def import_camera_props(cls, drawing: ifcopenshell.entity_instance, obj: bpy.types.Object) -> None:
from blenderbim.bim.module.drawing.prop import get_diagram_scales
from bonsai.bim.module.drawing.prop import get_diagram_scales
# Temporarily clear the definition id to prevent prop update callbacks to IFC.
ifc_definition_id = obj.BIMObjectProperties.ifc_definition_id
@@ -891,14 +892,14 @@ class Drawing(blenderbim.core.tool.Drawing):
@classmethod
def import_text_attributes(cls, obj: bpy.types.Object) -> None:
from blenderbim.bim.module.drawing.prop import BOX_ALIGNMENT_POSITIONS
from bonsai.bim.module.drawing.prop import BOX_ALIGNMENT_POSITIONS
props = obj.BIMTextProperties
props.literals.clear()
for ifc_literal in cls.get_text_literal(obj, return_list=True):
literal_props = props.literals.add()
blenderbim.bim.helper.import_attributes2(ifc_literal, literal_props.attributes)
bonsai.bim.helper.import_attributes2(ifc_literal, literal_props.attributes)
box_alignment_mask = [False] * 9
position_string = literal_props.attributes["BoxAlignment"].string_value
@@ -906,7 +907,7 @@ class Drawing(blenderbim.core.tool.Drawing):
literal_props.box_alignment = box_alignment_mask
literal_props.ifc_definition_id = ifc_literal.id()
from blenderbim.bim.module.drawing.data import DecoratorData
from bonsai.bim.module.drawing.data import DecoratorData
text_data = DecoratorData.get_ifc_text_data(obj)
props.font_size = str(text_data["FontSize"])
@@ -958,7 +959,7 @@ class Drawing(blenderbim.core.tool.Drawing):
context=None,
ifc_representation_class=None,
) -> Union[ifcopenshell.entity_instance, None]:
return blenderbim.core.root.assign_class(
return bonsai.core.root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -998,7 +999,7 @@ class Drawing(blenderbim.core.tool.Drawing):
"""updates pset `EPset_Annotation.Classes` value
based on current font size from `obj.BIMTextProperties.font_size`
"""
from blenderbim.bim.module.drawing.data import FONT_SIZES
from bonsai.bim.module.drawing.data import FONT_SIZES
props = obj.BIMTextProperties
element = tool.Ifc.get_entity(obj)
@@ -1206,7 +1207,7 @@ class Drawing(blenderbim.core.tool.Drawing):
reference_element: ifcopenshell.entity_instance,
context: ifcopenshell.entity_instance,
) -> ifcopenshell.entity_instance:
import blenderbim.bim.module.drawing.helper as helper
import bonsai.bim.module.drawing.helper as helper
camera = tool.Ifc.get_object(drawing)
bounds = helper.ortho_view_frame(camera.data) if camera.data.type == "ORTHO" else None
@@ -1273,7 +1274,7 @@ class Drawing(blenderbim.core.tool.Drawing):
reference_element: ifcopenshell.entity_instance,
context: ifcopenshell.entity_instance,
) -> ifcopenshell.entity_instance:
import blenderbim.bim.module.drawing.helper as helper
import bonsai.bim.module.drawing.helper as helper
reference_obj = tool.Ifc.get_object(reference_element)
reference_obj.matrix_world
@@ -1397,7 +1398,7 @@ class Drawing(blenderbim.core.tool.Drawing):
reference_element: ifcopenshell.entity_instance,
context: ifcopenshell.entity_instance,
) -> ifcopenshell.entity_instance:
import blenderbim.bim.module.drawing.helper as helper
import bonsai.bim.module.drawing.helper as helper
target_view = tool.Drawing.get_drawing_target_view(drawing)
@@ -1569,7 +1570,7 @@ class Drawing(blenderbim.core.tool.Drawing):
return cls.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)
bonsai.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
return element
@classmethod
@@ -1883,7 +1884,7 @@ class Drawing(blenderbim.core.tool.Drawing):
break
priority_representation = ifcopenshell.util.representation.get_representation(element, *subcontext)
if priority_representation:
blenderbim.core.geometry.switch_representation(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
+18 -18
View File
@@ -29,23 +29,23 @@ import ifcopenshell.guid
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.system
import blenderbim.core.tool
import blenderbim.core.drawing
import blenderbim.core.style
import blenderbim.core.spatial
import blenderbim.core.system
import blenderbim.core.geometry
import blenderbim.tool as tool
import blenderbim.bim.import_ifc
import bonsai.core.tool
import bonsai.core.drawing
import bonsai.core.geometry
import bonsai.core.spatial
import bonsai.core.style
import bonsai.core.system
import bonsai.tool as tool
import bonsai.bim.import_ifc
from collections import defaultdict
from math import radians, pi
from mathutils import Vector, Matrix
from blenderbim.bim.ifc import IfcStore
from bonsai.bim.ifc import IfcStore
from typing import Union, Iterable, Optional, Literal
from typing import Iterator
class Geometry(blenderbim.core.tool.Geometry):
class Geometry(bonsai.core.tool.Geometry):
@classmethod
def change_object_data(cls, obj: bpy.types.Object, data: bpy.types.ID, is_global: bool = False) -> None:
if is_global:
@@ -97,7 +97,7 @@ class Geometry(blenderbim.core.tool.Geometry):
if not element:
return
if element.is_a("IfcAnnotation") and element.ObjectType == "DRAWING":
return blenderbim.core.drawing.remove_drawing(tool.Ifc, tool.Drawing, drawing=element)
return bonsai.core.drawing.remove_drawing(tool.Ifc, tool.Drawing, drawing=element)
if element.is_a("IfcRelSpaceBoundary"):
ifcopenshell.api.run("boundary.remove_boundary", tool.Ifc.get(), boundary=element)
return bpy.data.objects.remove(obj)
@@ -143,7 +143,7 @@ class Geometry(blenderbim.core.tool.Geometry):
for rel in element.HasOpenings:
bpy.ops.bim.remove_opening(opening_id=rel.RelatedOpeningElement.id())
for port in ifcopenshell.util.system.get_ports(element):
blenderbim.core.system.remove_port(tool.Ifc, tool.System, port=port)
bonsai.core.system.remove_port(tool.Ifc, tool.System, port=port)
ifcopenshell.api.run("root.remove_product", tool.Ifc.get(), product=element)
if isinstance(obj.data, bpy.types.Mesh) and not tool.Ifc.get_entity_by_id(
@@ -152,7 +152,7 @@ class Geometry(blenderbim.core.tool.Geometry):
tool.Blender.remove_data_block(obj.data)
if is_spatial:
blenderbim.core.spatial.import_spatial_decomposition(tool.Spatial)
bonsai.core.spatial.import_spatial_decomposition(tool.Spatial)
try:
obj.name
bpy.data.objects.remove(obj)
@@ -576,7 +576,7 @@ class Geometry(blenderbim.core.tool.Geometry):
cls, obj: bpy.types.Object, representation: ifcopenshell.entity_instance, apply_openings: bool = True
) -> Union[bpy.types.Mesh, bpy.types.Curve]:
logger = logging.getLogger("ImportIFC")
ifc_import_settings = blenderbim.bim.import_ifc.IfcImportSettings.factory(bpy.context, None, logger)
ifc_import_settings = bonsai.bim.import_ifc.IfcImportSettings.factory(bpy.context, None, logger)
element = tool.Ifc.get_entity(obj)
assert element # Type checker.
settings = ifcopenshell.geom.settings()
@@ -606,7 +606,7 @@ class Geometry(blenderbim.core.tool.Geometry):
settings.set("dimensionality", ifcopenshell.ifcopenshell_wrapper.CURVES_SURFACES_AND_SOLIDS)
shape = ifcopenshell.geom.create_shape(settings, element, representation)
ifc_importer = blenderbim.bim.import_ifc.IfcImporter(ifc_import_settings)
ifc_importer = bonsai.bim.import_ifc.IfcImporter(ifc_import_settings)
ifc_importer.file = tool.Ifc.get()
if element.is_a("IfcAnnotation") and element.ObjectType == "DRAWING":
@@ -796,7 +796,7 @@ class Geometry(blenderbim.core.tool.Geometry):
@classmethod
def run_style_add_style(cls, obj: bpy.types.Material) -> ifcopenshell.entity_instance:
return blenderbim.core.style.add_style(tool.Ifc, tool.Style, obj=obj)
return bonsai.core.style.add_style(tool.Ifc, tool.Style, obj=obj)
@classmethod
def select_connection(cls, connection: ifcopenshell.entity_instance) -> None:
@@ -899,7 +899,7 @@ class Geometry(blenderbim.core.tool.Geometry):
as it will handle those complications by itself.
"""
representation = tool.Ifc.get().by_id(obj.data.BIMMeshProperties.ifc_definition_id)
blenderbim.core.geometry.switch_representation(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
@@ -937,7 +937,7 @@ class Geometry(blenderbim.core.tool.Geometry):
cls.recreate_object_with_data(obj, None)
return
blenderbim.core.geometry.switch_representation(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
+8 -8
View File
@@ -24,13 +24,13 @@ import ifcopenshell.api.georeference
import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.unit
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.helper
from typing import Any, Union, Literal
class Georeference(blenderbim.core.tool.Georeference):
class Georeference(bonsai.core.tool.Georeference):
COORDINATE_TYPE = Literal["blender", "local", "map"]
@classmethod
@@ -69,7 +69,7 @@ class Georeference(blenderbim.core.tool.Georeference):
for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False):
if context.HasCoordinateOperation:
projected_crs = context.HasCoordinateOperation[0].TargetCRS
blenderbim.bim.helper.import_attributes2(projected_crs, props.projected_crs, callback=callback)
bonsai.bim.helper.import_attributes2(projected_crs, props.projected_crs, callback=callback)
return
@classmethod
@@ -125,7 +125,7 @@ class Georeference(blenderbim.core.tool.Georeference):
for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False):
if context.HasCoordinateOperation:
coordinate_operation = context.HasCoordinateOperation[0]
blenderbim.bim.helper.import_attributes2(
bonsai.bim.helper.import_attributes2(
coordinate_operation, props.coordinate_operation, callback=callback
)
return
@@ -160,7 +160,7 @@ class Georeference(blenderbim.core.tool.Georeference):
return True
props = bpy.context.scene.BIMGeoreferenceProperties
return blenderbim.bim.helper.export_attributes(props.projected_crs, callback=callback)
return bonsai.bim.helper.export_attributes(props.projected_crs, callback=callback)
@classmethod
def export_coordinate_operation(cls) -> dict[str, Any]:
@@ -191,7 +191,7 @@ class Georeference(blenderbim.core.tool.Georeference):
return True
props = bpy.context.scene.BIMGeoreferenceProperties
return blenderbim.bim.helper.export_attributes(props.coordinate_operation, callback=callback)
return bonsai.bim.helper.export_attributes(props.coordinate_operation, callback=callback)
@classmethod
def get_true_north_attributes(cls) -> Union[list[float], None]:
+10 -10
View File
@@ -22,14 +22,14 @@ import numpy as np
import ifcopenshell.api
import ifcopenshell.ifcopenshell_wrapper as ifcopenshell_wrapper
import ifcopenshell.util.element
import blenderbim.core.tool
import blenderbim.bim.handler
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore, IFC_CONNECTED_TYPE
import bonsai.core.tool
import bonsai.bim.handler
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore, IFC_CONNECTED_TYPE
from typing import Optional, Union, Any, final, Literal
class Ifc(blenderbim.core.tool.Ifc):
class Ifc(bonsai.core.tool.Ifc):
OBJECT_TYPE = Literal[
"Object",
"Material",
@@ -154,9 +154,9 @@ class Ifc(blenderbim.core.tool.Ifc):
if global_id:
IfcStore.guid_map[global_id] = obj
blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
blenderbim.bim.handler.subscribe_to(
obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback
bonsai.bim.handler.subscribe_to(obj, "name", bonsai.bim.handler.name_callback)
bonsai.bim.handler.subscribe_to(
obj, "active_material_index", bonsai.bim.handler.active_material_index_callback
)
for obj in bpy.data.materials:
@@ -172,7 +172,7 @@ class Ifc(blenderbim.core.tool.Ifc):
if style:
IfcStore.id_map[style.id()] = obj
blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
bonsai.bim.handler.subscribe_to(obj, "name", bonsai.bim.handler.name_callback)
@classmethod
def link(cls, element: ifcopenshell.entity_instance, obj: IFC_CONNECTED_TYPE) -> None:
@@ -242,7 +242,7 @@ class Ifc(blenderbim.core.tool.Ifc):
@final
def execute(self, context):
IfcStore.execute_ifc_operator(self, context)
blenderbim.bim.handler.refresh_ui_data()
bonsai.bim.handler.refresh_ui_data()
return {"FINISHED"}
# NOTE: this class can't inherit from abc.ABC to use abc.abstractmethod
+3 -3
View File
@@ -21,9 +21,9 @@ import os
import re
import bpy
import logging
from blenderbim.bim import import_ifc
from blenderbim.bim.ifc import IfcStore
import blenderbim.tool as tool
from bonsai.bim import import_ifc
from bonsai.bim.ifc import IfcStore
import bonsai.tool as tool
from typing import TYPE_CHECKING, Union
# allows git import even if git executable isn't found
+7 -7
View File
@@ -17,11 +17,11 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
class Library(blenderbim.core.tool.Library):
class Library(bonsai.core.tool.Library):
@classmethod
def clear_editing_mode(cls):
bpy.context.scene.BIMLibraryProperties.editing_mode = ""
@@ -29,12 +29,12 @@ class Library(blenderbim.core.tool.Library):
@classmethod
def export_library_attributes(cls):
props = bpy.context.scene.BIMLibraryProperties
return blenderbim.bim.helper.export_attributes(props.library_attributes)
return bonsai.bim.helper.export_attributes(props.library_attributes)
@classmethod
def export_reference_attributes(cls):
props = bpy.context.scene.BIMLibraryProperties
return blenderbim.bim.helper.export_attributes(props.reference_attributes)
return bonsai.bim.helper.export_attributes(props.reference_attributes)
@classmethod
def get_active_library(cls):
@@ -48,13 +48,13 @@ class Library(blenderbim.core.tool.Library):
def import_library_attributes(cls, library):
props = bpy.context.scene.BIMLibraryProperties
props.library_attributes.clear()
blenderbim.bim.helper.import_attributes2(library, props.library_attributes)
bonsai.bim.helper.import_attributes2(library, props.library_attributes)
@classmethod
def import_reference_attributes(cls, reference):
props = bpy.context.scene.BIMLibraryProperties
props.reference_attributes.clear()
blenderbim.bim.helper.import_attributes2(reference, props.reference_attributes)
bonsai.bim.helper.import_attributes2(reference, props.reference_attributes)
@classmethod
def import_references(cls, library):
+6 -6
View File
@@ -27,9 +27,9 @@ import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.shape
import ifcopenshell.util.unit
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.import_ifc
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.import_ifc
import numpy as np
import numpy.typing as npt
from mathutils import Vector, Matrix
@@ -46,16 +46,16 @@ from typing import Union
OBJECT_DATA_TYPE = Union[bpy.types.Mesh, bpy.types.Curve]
class Loader(blenderbim.core.tool.Loader):
class Loader(bonsai.core.tool.Loader):
unit_scale: float = 1
settings: blenderbim.bim.import_ifc.IfcImportSettings = None
settings: bonsai.bim.import_ifc.IfcImportSettings = None
@classmethod
def set_unit_scale(cls, unit_scale: float) -> None:
cls.unit_scale = unit_scale
@classmethod
def set_settings(cls, settings: blenderbim.bim.import_ifc.IfcImportSettings) -> None:
def set_settings(cls, settings: bonsai.bim.import_ifc.IfcImportSettings) -> None:
cls.settings = settings
@classmethod
+9 -9
View File
@@ -20,10 +20,10 @@ from __future__ import annotations
import bpy
import ifcopenshell
import ifcopenshell.api.material
import blenderbim.core.tool
import blenderbim.core.material
import blenderbim.tool as tool
import blenderbim.bim.helper
import bonsai.core.tool
import bonsai.core.material
import bonsai.tool as tool
import bonsai.bim.helper
import ifcopenshell.util.unit
import ifcopenshell.util.element
from collections import defaultdict
@@ -31,10 +31,10 @@ from typing import Union, Any, TYPE_CHECKING, Optional
if TYPE_CHECKING:
# Avoid circular imports.
from blenderbim.bim.module.material.prop import Material as MaterialItem
from bonsai.bim.module.material.prop import Material as MaterialItem
class Material(blenderbim.core.tool.Material):
class Material(bonsai.core.tool.Material):
@classmethod
def disable_editing_materials(cls) -> None:
bpy.context.scene.BIMMaterialProperties.is_editing = False
@@ -151,7 +151,7 @@ class Material(blenderbim.core.tool.Material):
def load_material_attributes(cls, material: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMMaterialProperties
props.material_attributes.clear()
blenderbim.bim.helper.import_attributes2(material, props.material_attributes)
bonsai.bim.helper.import_attributes2(material, props.material_attributes)
@classmethod
def enable_editing_material(cls, material: ifcopenshell.entity_instance) -> None:
@@ -161,7 +161,7 @@ class Material(blenderbim.core.tool.Material):
@classmethod
def get_material_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMMaterialProperties.material_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMMaterialProperties.material_attributes)
@classmethod
def disable_editing_material(cls) -> None:
@@ -275,7 +275,7 @@ class Material(blenderbim.core.tool.Material):
if not material:
material = tool.Ifc.get().by_type("IfcMaterial")[0]
else:
blenderbim.core.material.unassign_material(tool.Ifc, tool.Material, objects=[tool.Ifc.get_object(element)])
bonsai.core.material.unassign_material(tool.Ifc, tool.Material, objects=[tool.Ifc.get_object(element)])
tool.Ifc.run("material.assign_material", products=[element], type="IfcMaterialProfileSet", material=material)
assinged_material = cls.get_material(element)
material_profile = tool.Ifc.run("material.add_profile", profile_set=assinged_material, material=material)
+6 -6
View File
@@ -19,14 +19,14 @@
import bpy
import bmesh
import ifcopenshell
import blenderbim.core.tool
import blenderbim.core.root
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.core.root
import bonsai.tool as tool
from mathutils import Vector, Matrix
from blenderbim.bim.ifc import IfcStore
from bonsai.bim.ifc import IfcStore
class Misc(blenderbim.core.tool.Misc):
class Misc(bonsai.core.tool.Misc):
@classmethod
def get_object_storey(cls, obj):
storey = ifcopenshell.util.element.get_container(tool.Ifc.get_entity(obj))
@@ -78,7 +78,7 @@ class Misc(blenderbim.core.tool.Misc):
@classmethod
def run_root_copy_class(cls, obj=None):
return blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
return bonsai.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
@classmethod
def scale_object_to_height(cls, obj, height):
+11 -11
View File
@@ -28,25 +28,25 @@ import ifcopenshell.util.element
import ifcopenshell.util.unit
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import blenderbim.core.geometry
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.core.geometry as geometry
import bonsai.core.geometry
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.core.geometry as geometry
from math import atan, degrees
from mathutils import Matrix, Vector
from copy import deepcopy
from functools import partial
from blenderbim.bim import import_ifc
from blenderbim.bim.module.geometry.helper import Helper
from blenderbim.bim.module.model.data import AuthoringData, RailingData, RoofData, WindowData, DoorData
from blenderbim.bim.module.model.opening import FilledOpeningGenerator
from bonsai.bim import import_ifc
from bonsai.bim.module.geometry.helper import Helper
from bonsai.bim.module.model.data import AuthoringData, RailingData, RoofData, WindowData, DoorData
from bonsai.bim.module.model.opening import FilledOpeningGenerator
from ifcopenshell.util.shape_builder import V, ShapeBuilder
from typing import Optional, Union, TypeVar, Any, Iterable, Literal
T = TypeVar("T")
class Model(blenderbim.core.tool.Model):
class Model(bonsai.core.tool.Model):
@classmethod
def convert_si_to_unit(cls, value: T) -> T:
if isinstance(value, (tuple, list)):
@@ -897,7 +897,7 @@ class Model(blenderbim.core.tool.Model):
def sync_object_ifc_position(cls, obj):
"""make sure IFC position will be in sync with the Blender object position, if object was moved in Blender"""
if tool.Ifc.is_moved(obj):
blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
bonsai.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
@classmethod
def get_element_matrix(cls, element, keep_local=False):
@@ -930,7 +930,7 @@ class Model(blenderbim.core.tool.Model):
continue
element = tool.Ifc.get_entity(obj)
body = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
blenderbim.core.geometry.switch_representation(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
+3 -3
View File
@@ -16,12 +16,12 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import ifcopenshell.util.element
class Nest(blenderbim.core.tool.Nest):
class Nest(bonsai.core.tool.Nest):
@classmethod
def can_nest(cls, relating_obj, related_obj):
relating_object = tool.Ifc.get_entity(relating_obj)
+14 -16
View File
@@ -17,14 +17,14 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.helper
import ifcopenshell
from typing import Union, Any
class Owner(blenderbim.core.tool.Owner):
class Owner(bonsai.core.tool.Owner):
@classmethod
def set_user(cls, user: ifcopenshell.entity_instance) -> None:
bpy.context.scene.BIMOwnerProperties.active_user_id = user.id()
@@ -75,7 +75,7 @@ class Owner(blenderbim.core.tool.Owner):
for line in data[name] or []:
props.messaging_ids.add().name = line
blenderbim.bim.helper.import_attributes(address.is_a(), props.address_attributes, address.get_info(), callback)
bonsai.bim.helper.import_attributes(address.is_a(), props.address_attributes, address.get_info(), callback)
@classmethod
def clear_address(cls) -> None:
@@ -88,7 +88,7 @@ class Owner(blenderbim.core.tool.Owner):
@classmethod
def export_address_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMOwnerProperties
attributes = blenderbim.bim.helper.export_attributes(props.address_attributes)
attributes = bonsai.bim.helper.export_attributes(props.address_attributes)
if cls.get_address().is_a("IfcPostalAddress"):
attributes["AddressLines"] = [l.name for l in props.address_lines] or None
elif cls.get_address().is_a("IfcTelecomAddress"):
@@ -136,9 +136,7 @@ class Owner(blenderbim.core.tool.Owner):
props = bpy.context.scene.BIMOwnerProperties
props.organisation_attributes.clear()
blenderbim.bim.helper.import_attributes(
"IfcOrganization", props.organisation_attributes, organisation.get_info()
)
bonsai.bim.helper.import_attributes("IfcOrganization", props.organisation_attributes, organisation.get_info())
@classmethod
def clear_organisation(cls) -> None:
@@ -147,7 +145,7 @@ class Owner(blenderbim.core.tool.Owner):
@classmethod
def export_organisation_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMOwnerProperties
attributes = blenderbim.bim.helper.export_attributes(props.organisation_attributes)
attributes = bonsai.bim.helper.export_attributes(props.organisation_attributes)
return attributes
@classmethod
@@ -178,7 +176,7 @@ class Owner(blenderbim.core.tool.Owner):
for name in data["SuffixTitles"] or []:
props.suffix_titles.add().name = name or ""
blenderbim.bim.helper.import_attributes("IfcPerson", props.person_attributes, person.get_info(), callback)
bonsai.bim.helper.import_attributes("IfcPerson", props.person_attributes, person.get_info(), callback)
@classmethod
def clear_person(cls) -> None:
@@ -187,7 +185,7 @@ class Owner(blenderbim.core.tool.Owner):
@classmethod
def export_person_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMOwnerProperties
attributes = blenderbim.bim.helper.export_attributes(props.person_attributes)
attributes = bonsai.bim.helper.export_attributes(props.person_attributes)
attributes["MiddleNames"] = [v.name for v in props.middle_names] if props.middle_names else None
attributes["PrefixTitles"] = [v.name for v in props.prefix_titles] if props.prefix_titles else None
attributes["SuffixTitles"] = [v.name for v in props.suffix_titles] if props.suffix_titles else None
@@ -224,7 +222,7 @@ class Owner(blenderbim.core.tool.Owner):
role = cls.get_role()
props = bpy.context.scene.BIMOwnerProperties
props.role_attributes.clear()
blenderbim.bim.helper.import_attributes("IfcActorRole", props.role_attributes, role.get_info())
bonsai.bim.helper.import_attributes("IfcActorRole", props.role_attributes, role.get_info())
@classmethod
def clear_role(cls) -> None:
@@ -236,7 +234,7 @@ class Owner(blenderbim.core.tool.Owner):
@classmethod
def export_role_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMOwnerProperties.role_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMOwnerProperties.role_attributes)
@classmethod
def set_actor(cls, actor: ifcopenshell.entity_instance) -> None:
@@ -246,7 +244,7 @@ class Owner(blenderbim.core.tool.Owner):
def import_actor_attributes(cls, actor: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMOwnerProperties
props.actor_attributes.clear()
blenderbim.bim.helper.import_attributes2(actor, props.actor_attributes)
bonsai.bim.helper.import_attributes2(actor, props.actor_attributes)
@classmethod
def clear_actor(cls) -> None:
@@ -255,7 +253,7 @@ class Owner(blenderbim.core.tool.Owner):
@classmethod
def export_actor_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMOwnerProperties
attributes = blenderbim.bim.helper.export_attributes(props.actor_attributes)
attributes = bonsai.bim.helper.export_attributes(props.actor_attributes)
return attributes
@classmethod
+2 -2
View File
@@ -18,7 +18,7 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import bonsai.core.tool
from typing import TYPE_CHECKING
@@ -31,7 +31,7 @@ if TYPE_CHECKING:
import ifcpatch
class Patch(blenderbim.core.tool.Patch):
class Patch(bonsai.core.tool.Patch):
@classmethod
def run_migrate_patch(cls, infile: str, outfile: str, schema: str) -> None:
output = ifcpatch.execute(
+4 -4
View File
@@ -22,14 +22,14 @@ import ifcopenshell.util.element
import ifcopenshell.util.unit
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import PIL.ImageDraw
from blenderbim.bim.module.model.decorator import ProfileDecorator
from bonsai.bim.module.model.decorator import ProfileDecorator
from typing import Union
class Profile(blenderbim.core.tool.Profile):
class Profile(bonsai.core.tool.Profile):
@classmethod
def draw_image_for_ifc_profile(
cls, draw: PIL.ImageDraw.ImageDraw, profile: ifcopenshell.entity_instance, size: float
+20 -20
View File
@@ -21,20 +21,20 @@ import bpy
import ifcopenshell
import ifcopenshell.util.representation
import ifcopenshell.util.unit
import blenderbim.core.aggregate
import blenderbim.core.context
import blenderbim.core.tool
import blenderbim.core.root
import blenderbim.core.unit
import blenderbim.core.owner
import blenderbim.bim.schema
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
import bonsai.core.aggregate
import bonsai.core.context
import bonsai.core.tool
import bonsai.core.root
import bonsai.core.unit
import bonsai.core.owner
import bonsai.bim.schema
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
from pathlib import Path
from typing import Optional
class Project(blenderbim.core.tool.Project):
class Project(bonsai.core.tool.Project):
@classmethod
def append_all_types_from_template(cls, template: str) -> None:
# TODO refactor
@@ -60,17 +60,17 @@ class Project(blenderbim.core.tool.Project):
pset_dir = tool.Ifc.resolve_uri(bpy.context.scene.BIMProperties.pset_dir)
if os.path.isdir(pset_dir):
for path in Path(pset_dir).glob("*.ifc"):
blenderbim.bim.schema.ifc.psetqto.templates.append(ifcopenshell.open(path))
bonsai.bim.schema.ifc.psetqto.templates.append(ifcopenshell.open(path))
@classmethod
def run_aggregate_assign_object(cls, relating_obj=None, related_obj=None):
return blenderbim.core.aggregate.assign_object(
return bonsai.core.aggregate.assign_object(
tool.Ifc, tool.Aggregate, tool.Collector, relating_obj=relating_obj, related_obj=related_obj
)
@classmethod
def run_context_add_context(cls, context_type=None, context_identifier=None, target_view=None, parent=None):
return blenderbim.core.context.add_context(
return bonsai.core.context.add_context(
tool.Ifc,
context_type=context_type,
context_identifier=context_identifier,
@@ -80,19 +80,19 @@ class Project(blenderbim.core.tool.Project):
@classmethod
def run_owner_add_organisation(cls):
return blenderbim.core.owner.add_organisation(tool.Ifc)
return bonsai.core.owner.add_organisation(tool.Ifc)
@classmethod
def run_owner_add_person(cls):
return blenderbim.core.owner.add_person(tool.Ifc)
return bonsai.core.owner.add_person(tool.Ifc)
@classmethod
def run_owner_add_person_and_organisation(cls, person=None, organisation=None):
return blenderbim.core.owner.add_person_and_organisation(tool.Ifc, person=person, organisation=organisation)
return bonsai.core.owner.add_person_and_organisation(tool.Ifc, person=person, organisation=organisation)
@classmethod
def run_owner_set_user(cls, user=None):
return blenderbim.core.owner.set_user(tool.Owner, user=user)
return bonsai.core.owner.set_user(tool.Owner, user=user)
@classmethod
def run_root_assign_class(
@@ -104,7 +104,7 @@ class Project(blenderbim.core.tool.Project):
context: Optional[ifcopenshell.entity_instance] = None,
ifc_representation_class: Optional[str] = None,
) -> ifcopenshell.entity_instance:
return blenderbim.core.root.assign_class(
return bonsai.core.root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
@@ -118,11 +118,11 @@ class Project(blenderbim.core.tool.Project):
@classmethod
def run_unit_assign_scene_units(cls):
return blenderbim.core.unit.assign_scene_units(tool.Ifc, tool.Unit)
return bonsai.core.unit.assign_scene_units(tool.Ifc, tool.Unit)
@classmethod
def set_context(cls, context):
blenderbim.bim.handler.refresh_ui_data()
bonsai.bim.handler.refresh_ui_data()
bpy.context.scene.BIMRootProperties.contexts = str(context.id())
@classmethod
+7 -7
View File
@@ -20,14 +20,14 @@ import bpy
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.element
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.schema
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.schema
from typing import Union, Literal, Any
from typing_extensions import assert_never
class Pset(blenderbim.core.tool.Pset):
class Pset(bonsai.core.tool.Pset):
PSET_TYPE = Literal["PSET", "QTO"]
@classmethod
@@ -72,7 +72,7 @@ class Pset(blenderbim.core.tool.Pset):
def is_pset_applicable(cls, element: ifcopenshell.entity_instance, pset_name: str) -> bool:
return bool(
pset_name
in blenderbim.bim.schema.ifc.psetqto.get_applicable_names(
in bonsai.bim.schema.ifc.psetqto.get_applicable_names(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), pset_only=True
)
)
@@ -219,7 +219,7 @@ class Pset(blenderbim.core.tool.Pset):
metadata.bool_value = False if metadata.is_null else bool(data[prop_template.Name])
metadata.ifc_class = pset_template.Name
blenderbim.bim.helper.add_attribute_description(metadata, prop_template)
bonsai.bim.helper.add_attribute_description(metadata, prop_template)
@classmethod
def import_pset_from_template(
@@ -273,7 +273,7 @@ class Pset(blenderbim.core.tool.Pset):
@classmethod
def get_pset_template(cls, name: str) -> Union[ifcopenshell.entity_instance, None]:
return blenderbim.bim.schema.ifc.psetqto.get_by_name(name)
return bonsai.bim.schema.ifc.psetqto.get_by_name(name)
@classmethod
def add_proposed_property(cls, name: str, value: Any, props: bpy.types.PropertyGroup) -> None:
+6 -6
View File
@@ -17,9 +17,9 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.bim.schema
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.bim.schema
import bonsai.tool as tool
import ifcopenshell
import ifcopenshell.util.unit
import ifcopenshell.util.element
@@ -29,7 +29,7 @@ from typing import Optional, Union, Literal
QuantityTypes = Literal["Q_LENGTH", "Q_AREA", "Q_VOLUME"]
class Qto(blenderbim.core.tool.Qto):
class Qto(bonsai.core.tool.Qto):
@classmethod
def get_radius_of_selected_vertices(cls, obj: bpy.types.Object) -> float:
selected_verts = [v.co for v in obj.data.vertices if v.select]
@@ -65,7 +65,7 @@ class Qto(blenderbim.core.tool.Qto):
"Q_VOLUME": ("VOLUMEUNIT", "CUBIC_METRE"),
}
if not quantity_type:
qt = blenderbim.bim.schema.ifc.psetqto.get_by_name(qto_name)
qt = bonsai.bim.schema.ifc.psetqto.get_by_name(qto_name)
quantity_type = next(q.TemplateType for q in qt.HasPropertyTemplates if q.Name == quantity_name)
unit_type = quantity_to_unit_types.get(quantity_type, None)
@@ -128,7 +128,7 @@ class Qto(blenderbim.core.tool.Qto):
Example:
.. code::Python
import blenderbim.tool as tool
import bonsai.tool as tool
relating_cost_items = tool.Qto.relating_cost_items(my_beautiful_wall)
for relating_cost_item in relating_cost_items:
+3 -3
View File
@@ -18,14 +18,14 @@
import bpy
from bpy_extras import view3d_utils
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import math
import mathutils
from mathutils import Matrix, Vector
class Raycast(blenderbim.core.tool.Raycast):
class Raycast(bonsai.core.tool.Raycast):
@classmethod
def get_visible_objects(cls, context):
depsgraph = context.evaluated_depsgraph_get()
+13 -15
View File
@@ -19,24 +19,22 @@
# ############################################################################ #
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.helper
import blenderbim.bim.module.sequence.helper as helper
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.helper
import bonsai.bim.module.sequence.helper as helper
import json
import time
import isodate
from datetime import datetime
from dateutil import parser
import ifcopenshell.util.date as ifcdateutils
import ifcopenshell.util.cost
import ifcopenshell.util.resource
import blenderbim.bim.schema
import ifcopenshell.util.constraint
from typing import Any, Union
class Resource(blenderbim.core.tool.Resource):
class Resource(bonsai.core.tool.Resource):
@classmethod
def load_resources(cls) -> None:
def create_new_resource_li(resource, level_index):
@@ -91,7 +89,7 @@ class Resource(blenderbim.core.tool.Resource):
@classmethod
def load_resource_attributes(cls, resource: ifcopenshell.entity_instance) -> None:
blenderbim.bim.helper.import_attributes2(resource, bpy.context.scene.BIMResourceProperties.resource_attributes)
bonsai.bim.helper.import_attributes2(resource, bpy.context.scene.BIMResourceProperties.resource_attributes)
@classmethod
def enable_editing_resource(cls, resource: ifcopenshell.entity_instance) -> None:
@@ -102,7 +100,7 @@ class Resource(blenderbim.core.tool.Resource):
@classmethod
def get_resource_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMResourceProperties.resource_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMResourceProperties.resource_attributes)
@classmethod
def enable_editing_resource_time(cls, resource: ifcopenshell.entity_instance) -> None:
@@ -127,7 +125,7 @@ class Resource(blenderbim.core.tool.Resource):
prop.string_value = "" if prop.is_null else ifcdateutils.datetime2ifc(data[name], "IfcDuration")
return True
blenderbim.bim.helper.import_attributes2(
bonsai.bim.helper.import_attributes2(
resource_time, bpy.context.scene.BIMResourceProperties.resource_time_attributes, callback
)
@@ -148,7 +146,7 @@ class Resource(blenderbim.core.tool.Resource):
return True
props = bpy.context.scene.BIMResourceProperties
return blenderbim.bim.helper.export_attributes(props.resource_time_attributes, callback)
return bonsai.bim.helper.export_attributes(props.resource_time_attributes, callback)
@classmethod
def enable_editing_resource_costs(cls, resource: ifcopenshell.entity_instance) -> None:
@@ -221,7 +219,7 @@ class Resource(blenderbim.core.tool.Resource):
return True
props = bpy.context.scene.BIMResourceProperties
blenderbim.bim.helper.import_attributes2(cost_value, props.cost_value_attributes, callback)
bonsai.bim.helper.import_attributes2(cost_value, props.cost_value_attributes, callback)
@classmethod
def enable_editing_cost_value_attributes(cls, cost_value: ifcopenshell.entity_instance) -> None:
@@ -255,7 +253,7 @@ class Resource(blenderbim.core.tool.Resource):
if prop.name == "UnitBasisUnit":
return True
return blenderbim.bim.helper.export_attributes(
return bonsai.bim.helper.export_attributes(
bpy.context.scene.BIMResourceProperties.cost_value_attributes, callback
)
@@ -271,7 +269,7 @@ class Resource(blenderbim.core.tool.Resource):
props = bpy.context.scene.BIMResourceProperties
props.quantity_attributes.clear()
props.is_editing_quantity = True
blenderbim.bim.helper.import_attributes2(resource_quantity, props.quantity_attributes)
bonsai.bim.helper.import_attributes2(resource_quantity, props.quantity_attributes)
@classmethod
def disable_editing_resource_quantity(cls) -> None:
@@ -279,7 +277,7 @@ class Resource(blenderbim.core.tool.Resource):
@classmethod
def get_resource_quantity_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMResourceProperties.quantity_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMResourceProperties.quantity_attributes)
@classmethod
def expand_resource(cls, resource: ifcopenshell.entity_instance) -> None:
+10 -13
View File
@@ -22,17 +22,14 @@ import ifcopenshell.api
import ifcopenshell.util.representation
import ifcopenshell.util.element
import ifcopenshell.util.placement
import blenderbim.core.tool
import blenderbim.core.root
import blenderbim.core.aggregate
import blenderbim.core.geometry
import blenderbim.core.material
import blenderbim.core.style
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.core.aggregate
import bonsai.core.geometry
import bonsai.tool as tool
from typing import Union, Optional, Any
class Root(blenderbim.core.tool.Root):
class Root(bonsai.core.tool.Root):
@classmethod
def add_tracked_opening(cls, obj: bpy.types.Object) -> None:
new = bpy.context.scene.BIMModelProperties.openings.add()
@@ -244,7 +241,7 @@ class Root(blenderbim.core.tool.Root):
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(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=voided_obj,
@@ -285,7 +282,7 @@ class Root(blenderbim.core.tool.Root):
try:
new_aggregate = old_to_new[old_aggregate]
except:
blenderbim.core.aggregate.unassign_object(
bonsai.core.aggregate.unassign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
@@ -294,7 +291,7 @@ class Root(blenderbim.core.tool.Root):
)
continue
blenderbim.core.aggregate.assign_object(
bonsai.core.aggregate.assign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
@@ -307,7 +304,7 @@ class Root(blenderbim.core.tool.Root):
if pset:
array_children = tool.Blender.Modifier.Array.get_all_children_objects(new[0])
for obj in array_children:
blenderbim.core.aggregate.assign_object(
bonsai.core.aggregate.assign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
@@ -323,7 +320,7 @@ class Root(blenderbim.core.tool.Root):
ifc_representation_class: Optional[str] = None,
profile_set_usage: Optional[ifcopenshell.entity_instance] = None,
) -> ifcopenshell.entity_instance:
return blenderbim.core.geometry.add_representation(
return bonsai.core.geometry.add_representation(
tool.Ifc,
tool.Geometry,
tool.Style,
+3 -3
View File
@@ -1,14 +1,14 @@
import bpy
import json
import lark
import blenderbim.core.tool
import bonsai.core.tool
import ifcopenshell.guid
import ifcopenshell.util.selector
from blenderbim.bim.prop import BIMFacet
from bonsai.bim.prop import BIMFacet
from typing import Union, Literal
class Search(blenderbim.core.tool.Search):
class Search(bonsai.core.tool.Search):
@classmethod
def get_group_query(cls, group: ifcopenshell.entity_instance) -> str:
return json.loads(group.Description)["query"]
+21 -24
View File
@@ -29,17 +29,16 @@ import ifcopenshell.util.sequence
import ifcopenshell.util.date
import ifcopenshell.util.element
import ifcopenshell.util.unit
import blenderbim.core.tool
import blenderbim.core
import blenderbim.tool as tool
import blenderbim.bim.helper
import blenderbim.bim.module.sequence.helper as helper
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.helper
import bonsai.bim.module.sequence.helper as helper
from dateutil import parser
from datetime import datetime
from typing import Optional, Any, Union
class Sequence(blenderbim.core.tool.Sequence):
class Sequence(bonsai.core.tool.Sequence):
@classmethod
def get_work_plan_attributes(cls) -> dict[str, Any]:
def callback(attributes, prop):
@@ -57,7 +56,7 @@ class Sequence(blenderbim.core.tool.Sequence):
return True
props = bpy.context.scene.BIMWorkPlanProperties
return blenderbim.bim.helper.export_attributes(props.work_plan_attributes, callback)
return bonsai.bim.helper.export_attributes(props.work_plan_attributes, callback)
@classmethod
def load_work_plan_attributes(cls, work_plan: ifcopenshell.entity_instance) -> None:
@@ -68,7 +67,7 @@ class Sequence(blenderbim.core.tool.Sequence):
props = bpy.context.scene.BIMWorkPlanProperties
props.work_plan_attributes.clear()
blenderbim.bim.helper.import_attributes2(work_plan, props.work_plan_attributes, callback)
bonsai.bim.helper.import_attributes2(work_plan, props.work_plan_attributes, callback)
@classmethod
def enable_editing_work_plan(cls, work_plan: Union[ifcopenshell.entity_instance, None]) -> None:
@@ -103,7 +102,7 @@ class Sequence(blenderbim.core.tool.Sequence):
return True
props = bpy.context.scene.BIMWorkScheduleProperties
return blenderbim.bim.helper.export_attributes(props.work_schedule_attributes, callback)
return bonsai.bim.helper.export_attributes(props.work_schedule_attributes, callback)
@classmethod
def load_work_schedule_attributes(cls, work_schedule: ifcopenshell.entity_instance) -> None:
@@ -114,7 +113,7 @@ class Sequence(blenderbim.core.tool.Sequence):
props = bpy.context.scene.BIMWorkScheduleProperties
props.work_schedule_attributes.clear()
blenderbim.bim.helper.import_attributes2(work_schedule, props.work_schedule_attributes, callback)
bonsai.bim.helper.import_attributes2(work_schedule, props.work_schedule_attributes, callback)
@classmethod
def enable_editing_work_schedule(cls, work_schedule: ifcopenshell.entity_instance) -> None:
@@ -323,7 +322,7 @@ class Sequence(blenderbim.core.tool.Sequence):
def load_task_attributes(cls, task: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMWorkScheduleProperties
props.task_attributes.clear()
blenderbim.bim.helper.import_attributes2(task, props.task_attributes)
bonsai.bim.helper.import_attributes2(task, props.task_attributes)
@classmethod
def enable_editing_task_attributes(cls, task: ifcopenshell.entity_instance) -> None:
@@ -333,7 +332,7 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod
def get_task_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.task_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.task_attributes)
@classmethod
def load_task_time_attributes(cls, task_time: ifcopenshell.entity_instance) -> None:
@@ -357,7 +356,7 @@ class Sequence(blenderbim.core.tool.Sequence):
props = bpy.context.scene.BIMWorkScheduleProperties
props.task_time_attributes.clear()
props.durations_attributes.clear()
blenderbim.bim.helper.import_attributes2(task_time, props.task_time_attributes, callback)
bonsai.bim.helper.import_attributes2(task_time, props.task_time_attributes, callback)
@classmethod
def enable_editing_task_time(cls, task: ifcopenshell.entity_instance) -> None:
@@ -399,7 +398,7 @@ class Sequence(blenderbim.core.tool.Sequence):
return True
props = bpy.context.scene.BIMWorkScheduleProperties
return blenderbim.bim.helper.export_attributes(props.task_time_attributes, callback)
return bonsai.bim.helper.export_attributes(props.task_time_attributes, callback)
@classmethod
def load_task_resources(cls, task: ifcopenshell.entity_instance) -> None:
@@ -490,7 +489,7 @@ class Sequence(blenderbim.core.tool.Sequence):
def load_work_calendar_attributes(cls, work_calendar: ifcopenshell.entity_instance) -> dict[str, Any]:
props = bpy.context.scene.BIMWorkCalendarProperties
props.work_calendar_attributes.clear()
return blenderbim.bim.helper.import_attributes2(work_calendar, props.work_calendar_attributes)
return bonsai.bim.helper.import_attributes2(work_calendar, props.work_calendar_attributes)
@classmethod
def enable_editing_work_calendar(cls, work_calendar: ifcopenshell.entity_instance) -> None:
@@ -503,9 +502,7 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod
def get_work_calendar_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(
bpy.context.scene.BIMWorkCalendarProperties.work_calendar_attributes
)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMWorkCalendarProperties.work_calendar_attributes)
@classmethod
def load_work_time_attributes(cls, work_time: ifcopenshell.entity_instance) -> None:
@@ -517,7 +514,7 @@ class Sequence(blenderbim.core.tool.Sequence):
props = bpy.context.scene.BIMWorkCalendarProperties
props.work_time_attributes.clear()
blenderbim.bim.helper.import_attributes2(work_time, props.work_time_attributes, callback)
bonsai.bim.helper.import_attributes2(work_time, props.work_time_attributes, callback)
@classmethod
def enable_editing_work_time(cls, work_time: ifcopenshell.entity_instance) -> None:
@@ -577,7 +574,7 @@ class Sequence(blenderbim.core.tool.Sequence):
return True
props = bpy.context.scene.BIMWorkCalendarProperties
return blenderbim.bim.helper.export_attributes(props.work_time_attributes, callback)
return bonsai.bim.helper.export_attributes(props.work_time_attributes, callback)
@classmethod
def get_recurrence_pattern_attributes(cls, recurrence_pattern):
@@ -645,7 +642,7 @@ class Sequence(blenderbim.core.tool.Sequence):
def load_rel_sequence_attributes(cls, rel_sequence: ifcopenshell.entity_instance) -> None:
props = bpy.context.scene.BIMWorkScheduleProperties
props.sequence_attributes.clear()
blenderbim.bim.helper.import_attributes2(rel_sequence, props.sequence_attributes)
bonsai.bim.helper.import_attributes2(rel_sequence, props.sequence_attributes)
@classmethod
def enable_editing_rel_sequence_attributes(cls, rel_sequence: ifcopenshell.entity_instance) -> None:
@@ -669,7 +666,7 @@ class Sequence(blenderbim.core.tool.Sequence):
props = bpy.context.scene.BIMWorkScheduleProperties
props.lag_time_attributes.clear()
blenderbim.bim.helper.import_attributes2(lag_time, props.lag_time_attributes, callback)
bonsai.bim.helper.import_attributes2(lag_time, props.lag_time_attributes, callback)
@classmethod
def enable_editing_sequence_lag_time(cls, rel_sequence: ifcopenshell.entity_instance) -> None:
@@ -679,7 +676,7 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod
def get_rel_sequence_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.sequence_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.sequence_attributes)
@classmethod
def disable_editing_rel_sequence(cls) -> None:
@@ -687,7 +684,7 @@ class Sequence(blenderbim.core.tool.Sequence):
@classmethod
def get_lag_time_attributes(cls) -> dict[str, Any]:
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.lag_time_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMWorkScheduleProperties.lag_time_attributes)
@classmethod
def select_products(cls, products):
+4 -4
View File
@@ -17,15 +17,15 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.bim.module.model.decorator import WallPolylineDecorator
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.module.model.decorator import WallPolylineDecorator
import math
import mathutils
from mathutils import Matrix, Vector
class Snap(blenderbim.core.tool.Snap):
class Snap(bonsai.core.tool.Snap):
@classmethod
def get_snap_points_on_raycasted_obj(cls, obj, face_index):
snap_points = {}
+13 -13
View File
@@ -29,12 +29,12 @@ import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
import ifcopenshell.util.type
import ifcopenshell.util.unit
import blenderbim.core.type
import blenderbim.core.tool
import blenderbim.core.root
import blenderbim.core.spatial
import blenderbim.core.geometry
import blenderbim.tool as tool
import bonsai.core.type
import bonsai.core.tool
import bonsai.core.root
import bonsai.core.spatial
import bonsai.core.geometry
import bonsai.tool as tool
import json
from math import pi
from mathutils import Vector, Matrix
@@ -42,7 +42,7 @@ from shapely import Polygon
from typing import Generator, Optional, Union, Literal, List
class Spatial(blenderbim.core.tool.Spatial):
class Spatial(bonsai.core.tool.Spatial):
@classmethod
def can_contain(cls, container: ifcopenshell.entity_instance, element_obj: Union[bpy.types.Object, None]) -> bool:
element = tool.Ifc.get_entity(element_obj)
@@ -110,19 +110,19 @@ class Spatial(blenderbim.core.tool.Spatial):
@classmethod
def run_root_copy_class(cls, obj: bpy.types.Object) -> ifcopenshell.entity_instance:
return blenderbim.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
return bonsai.core.root.copy_class(tool.Ifc, tool.Collector, tool.Geometry, tool.Root, obj=obj)
@classmethod
def run_spatial_assign_container(
cls, container: ifcopenshell.entity_instance, element_obj: bpy.types.Object
) -> Union[ifcopenshell.entity_instance, None]:
return blenderbim.core.spatial.assign_container(
return bonsai.core.spatial.assign_container(
tool.Ifc, tool.Collector, tool.Spatial, container=container, element_obj=element_obj
)
@classmethod
def run_spatial_import_spatial_decomposition(cls) -> None:
return blenderbim.core.spatial.import_spatial_decomposition(tool.Spatial)
return bonsai.core.spatial.import_spatial_decomposition(tool.Spatial)
@classmethod
def select_object(cls, obj: bpy.types.Object) -> None:
@@ -291,7 +291,7 @@ class Spatial(blenderbim.core.tool.Spatial):
def edit_container_attributes(cls, entity: ifcopenshell.entity_instance) -> None:
# TODO
obj = tool.Ifc.get_object(entity)
blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
bonsai.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
name = bpy.context.scene.BIMSpatialDecompositionProperties.container_name
if name != entity.Name:
cls.edit_container_name(entity, name)
@@ -790,11 +790,11 @@ class Spatial(blenderbim.core.tool.Spatial):
element: ifcopenshell.entity_instance,
relating_type: ifcopenshell.entity_instance,
) -> None:
blenderbim.core.type.assign_type(ifc, type, element=element, type=relating_type)
bonsai.core.type.assign_type(ifc, type, element=element, type=relating_type)
@classmethod
def regen_obj_representation(cls, obj: bpy.types.Object, body: ifcopenshell.entity_instance) -> None:
blenderbim.core.geometry.switch_representation(
bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
+6 -7
View File
@@ -19,15 +19,14 @@
import bpy
import ifcopenshell
import json
import blenderbim.bim.helper
import blenderbim.core.tool
import blenderbim.core.structural
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
from pprint import pprint
class Structural(blenderbim.core.tool.Structural):
class Structural(bonsai.core.tool.Structural):
@classmethod
def disable_editing_structural_analysis_model(cls):
bpy.context.scene.BIMStructuralProperties.active_structural_analysis_model_id = 0
@@ -121,7 +120,7 @@ class Structural(blenderbim.core.tool.Structural):
@classmethod
def get_structural_analysis_model_attributes(cls):
props = bpy.context.scene.BIMStructuralProperties
attributes = blenderbim.bim.helper.export_attributes(props.structural_analysis_model_attributes)
attributes = bonsai.bim.helper.export_attributes(props.structural_analysis_model_attributes)
return attributes
@classmethod
+6 -6
View File
@@ -21,9 +21,9 @@ import numpy as np
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
import blenderbim.core.tool
import blenderbim.tool as tool
import blenderbim.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
import bonsai.bim.helper
from mathutils import Color
from typing import Union, Any, Optional, Literal
@@ -46,7 +46,7 @@ STYLE_PROPS_MAP = {
STYLE_TYPES = Literal["Shading", "External"]
class Style(blenderbim.core.tool.Style):
class Style(bonsai.core.tool.Style):
@classmethod
def can_support_rendering_style(cls, obj: bpy.types.Material) -> bool:
return obj.use_nodes and hasattr(obj.node_tree, "nodes")
@@ -101,7 +101,7 @@ class Style(blenderbim.core.tool.Style):
@classmethod
def export_surface_attributes(cls) -> dict[str, Any]:
props = bpy.context.scene.BIMStylesProperties
return blenderbim.bim.helper.export_attributes(props.attributes)
return bonsai.bim.helper.export_attributes(props.attributes)
@classmethod
def get_active_style_type(cls) -> str:
@@ -529,7 +529,7 @@ class Style(blenderbim.core.tool.Style):
def import_surface_attributes(cls, style: ifcopenshell.entity_instance) -> None:
attributes = bpy.context.scene.BIMStylesProperties.attributes
attributes.clear()
blenderbim.bim.helper.import_attributes2(style, attributes)
bonsai.bim.helper.import_attributes2(style, attributes)
@classmethod
def has_blender_external_style(cls, style_elements: dict[str, ifcopenshell.entity_instance]) -> bool:
+3 -3
View File
@@ -18,13 +18,13 @@
import bpy
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import numpy as np
from mathutils import Matrix
class Surveyor(blenderbim.core.tool.Surveyor):
class Surveyor(bonsai.core.tool.Surveyor):
@classmethod
def get_absolute_matrix(cls, obj: bpy.types.Object) -> Matrix:
matrix = np.array(obj.matrix_world)
+13 -13
View File
@@ -19,21 +19,21 @@
import bpy
import ifcopenshell.util.element
import ifcopenshell.util.system
import blenderbim.bim.helper
import blenderbim.core.geometry
import blenderbim.core.root
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.bim import import_ifc
import bonsai.bim.helper
import bonsai.core.geometry
import bonsai.core.root
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim import import_ifc
import re
from math import pi, cos, sin
from mathutils import Matrix, Vector
from blenderbim.bim.module.system.data import ObjectSystemData, SystemDecorationData
from blenderbim.bim.module.drawing.decoration import profile_consequential
from bonsai.bim.module.system.data import ObjectSystemData, SystemDecorationData
from bonsai.bim.module.drawing.decoration import profile_consequential
from enum import Enum
class System(blenderbim.core.tool.System):
class System(bonsai.core.tool.System):
@classmethod
def add_ports(cls, obj, add_start_port=True, add_end_port=True, end_port_pos=None, offset_end_port=None):
def add_port(mep_element, matrix):
@@ -95,7 +95,7 @@ class System(blenderbim.core.tool.System):
@classmethod
def export_system_attributes(cls):
return blenderbim.bim.helper.export_attributes(bpy.context.scene.BIMSystemProperties.system_attributes)
return bonsai.bim.helper.export_attributes(bpy.context.scene.BIMSystemProperties.system_attributes)
@classmethod
def get_connected_port(cls, port):
@@ -128,7 +128,7 @@ class System(blenderbim.core.tool.System):
def import_system_attributes(cls, system):
props = bpy.context.scene.BIMSystemProperties
props.system_attributes.clear()
blenderbim.bim.helper.import_attributes2(system, props.system_attributes)
bonsai.bim.helper.import_attributes2(system, props.system_attributes)
@classmethod
def get_systems(cls):
@@ -172,7 +172,7 @@ class System(blenderbim.core.tool.System):
@classmethod
def run_geometry_edit_object_placement(cls, obj=None):
return blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
return bonsai.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
@classmethod
def run_root_assign_class(
@@ -184,7 +184,7 @@ class System(blenderbim.core.tool.System):
context=None,
ifc_representation_class=None,
):
return blenderbim.core.root.assign_class(
return bonsai.core.root.assign_class(
tool.Ifc,
tool.Collector,
tool.Root,
+7 -7
View File
@@ -20,14 +20,14 @@ import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
import blenderbim.core.tool
import blenderbim.core.geometry
import blenderbim.tool as tool
import blenderbim.bim.helper
import bonsai.core.tool
import bonsai.core.geometry
import bonsai.tool as tool
import bonsai.bim.helper
from typing import Union
class Type(blenderbim.core.tool.Type):
class Type(bonsai.core.tool.Type):
@classmethod
def change_object_data(cls, obj: bpy.types.Object, data: bpy.types.ID, is_global: bool = False) -> None:
tool.Geometry.change_object_data(obj, data, is_global)
@@ -107,7 +107,7 @@ class Type(blenderbim.core.tool.Type):
ifc_representation_class: Union[str, None] = None,
profile_set_usage: Union[ifcopenshell.entity_instance, None] = None,
) -> ifcopenshell.entity_instance:
return blenderbim.core.geometry.add_representation(
return bonsai.core.geometry.add_representation(
tool.Ifc,
tool.Geometry,
tool.Style,
@@ -126,7 +126,7 @@ class Type(blenderbim.core.tool.Type):
should_reload: bool = False,
is_global: bool = False,
) -> None:
return blenderbim.core.geometry.switch_representation(
return bonsai.core.geometry.switch_representation(
tool.Ifc,
tool.Geometry,
obj=obj,
+6 -5
View File
@@ -19,11 +19,12 @@
import bpy
import json
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
class Unit(blenderbim.core.tool.Unit):
class Unit(bonsai.core.tool.Unit):
@classmethod
def clear_active_unit(cls):
bpy.context.scene.BIMUnitProperties.active_unit_id = 0
@@ -47,7 +48,7 @@ class Unit(blenderbim.core.tool.Unit):
return True
props = bpy.context.scene.BIMUnitProperties
return blenderbim.bim.helper.export_attributes(props.unit_attributes, callback=callback)
return bonsai.bim.helper.export_attributes(props.unit_attributes, callback=callback)
@classmethod
def get_scene_unit_name(cls, unit_type):
@@ -95,7 +96,7 @@ class Unit(blenderbim.core.tool.Unit):
props = bpy.context.scene.BIMUnitProperties
props.unit_attributes.clear()
blenderbim.bim.helper.import_attributes2(unit, props.unit_attributes, callback=callback)
bonsai.bim.helper.import_attributes2(unit, props.unit_attributes, callback=callback)
@classmethod
def import_units(cls):
+5 -5
View File
@@ -17,9 +17,9 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
import bpy
from blenderbim.bim.module.web.data import WebData
import blenderbim.core.tool
import blenderbim.tool as tool
from bonsai.bim.module.web.data import WebData
import bonsai.core.tool
import bonsai.tool as tool
import ifcopenshell.api.sequence
from typing import Any, Dict, Optional
import time
@@ -51,7 +51,7 @@ IFC_TASK_ATTRIBUTE_MAP = {
}
class Web(blenderbim.core.tool.Web):
class Web(bonsai.core.tool.Web):
@classmethod
def generate_port_number(cls) -> int:
"""
@@ -124,7 +124,7 @@ class Web(blenderbim.core.tool.Web):
env = os.environ.copy()
env["BLENDERBIM_LIB_PATH"] = str(blenderbim_lib_path)
env["BLENDERBIM_VERSION"] = tool.Blender.get_blenderbim_version()
env["BLENDERBIM_VERSION"] = tool.Blender.get_bonsai_version()
ws_process = subprocess.Popen(
[sys.executable, ws_path, "--p", str(port), "--host", "127.0.0.1"],
+4 -4
View File
@@ -23,15 +23,15 @@ import ifcopenshell.api.root
import ifcopenshell.api.unit
import ifcopenshell.api.context
import ifcopenshell.util.shape_builder
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.aggregate import Aggregate as subject
from bonsai.tool.aggregate import Aggregate as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Aggregate)
assert isinstance(subject(), bonsai.core.tool.Aggregate)
class TestCanAggregate(NewFile):
+4 -4
View File
@@ -18,16 +18,16 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import pytest
from test.bim.bootstrap import NewFile
from blenderbim.tool.blender import Blender as subject
from bonsai.tool.blender import Blender as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Blender)
assert isinstance(subject(), bonsai.core.tool.Blender)
class TestCopyNodeGraph(NewFile):
+5 -5
View File
@@ -24,18 +24,18 @@ from brickschema.namespaces import REF, A
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.guid
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from rdflib.namespace import RDF
from rdflib import Literal, URIRef, Namespace
from test.bim.bootstrap import NewFile
from blenderbim.tool.brick import Brick as subject
from blenderbim.tool.brick import BrickStore
from bonsai.tool.brick import Brick as subject
from bonsai.tool.brick import BrickStore
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Brick)
assert isinstance(subject(), bonsai.core.tool.Brick)
class TestAddBrick(NewFile):
+1 -1
View File
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
from test.bim.bootstrap import NewFile
from blenderbim.tool.cad import Cad as subject
from bonsai.tool.cad import Cad as subject
from mathutils import Vector
V = lambda *x: Vector([float(i) for i in x])
+4 -4
View File
@@ -20,15 +20,15 @@ import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.element
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool.collector import Collector as subject
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.collector import Collector as subject
from test.bim.bootstrap import NewFile, NewIfc, NewIfc4X3
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Collector)
assert isinstance(subject(), bonsai.core.tool.Collector)
class TestAssign(NewIfc):
+4 -4
View File
@@ -19,14 +19,14 @@
import bpy
import ifcopenshell
import test.bim.bootstrap
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool.context import Context as subject
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.context import Context as subject
class TestImplementsTool(test.bim.bootstrap.NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Context)
assert isinstance(subject(), bonsai.core.tool.Context)
class TestSetContext(test.bim.bootstrap.NewFile):
+5 -5
View File
@@ -19,16 +19,16 @@
import os
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.debug import Debug as subject
from blenderbim.bim.ifc import IfcStore
from bonsai.tool.debug import Debug as subject
from bonsai.bim.ifc import IfcStore
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Debug)
assert isinstance(subject(), bonsai.core.tool.Debug)
class TestAddSchemaIdentifier(NewFile):
+4 -4
View File
@@ -33,10 +33,10 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.demo import Demo as subject
from bonsai.tool.demo import Demo as subject
# Our first test is that our tool implements all the abstract methods defined by
@@ -45,7 +45,7 @@ from blenderbim.tool.demo import Demo as subject
# other languages, but not Python, so we test it explicitly.
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Demo)
assert isinstance(subject(), bonsai.core.tool.Demo)
# These are fairly boring tests. What it does demonstrate is that no matter how
+4 -4
View File
@@ -19,15 +19,15 @@
import bpy
import ifcopenshell
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.document import Document as subject
from bonsai.tool.document import Document as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Document)
assert isinstance(subject(), bonsai.core.tool.Document)
class TestAddBreadcrumb(NewFile):
+6 -6
View File
@@ -22,12 +22,12 @@ import bpy
import mathutils
import ifcopenshell
import ifcopenshell.guid
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.drawing import Drawing as subject
from blenderbim.bim.ifc import IfcStore
from blenderbim.bim.module.drawing.data import DecoratorData
from bonsai.tool.drawing import Drawing as subject
from bonsai.bim.ifc import IfcStore
from bonsai.bim.module.drawing.data import DecoratorData
from mathutils import Vector
import xml.etree.ElementTree as ET
@@ -35,7 +35,7 @@ import xml.etree.ElementTree as ET
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Drawing)
assert isinstance(subject(), bonsai.core.tool.Drawing)
class TestCopyRepresentation(NewFile):
+4 -4
View File
@@ -21,17 +21,17 @@ import math
import numpy as np
import ifcopenshell
import ifcopenshell.api.type
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from mathutils import Vector
from test.bim.bootstrap import NewFile
from blenderbim.tool.geometry import Geometry as subject
from bonsai.tool.geometry import Geometry as subject
from typing import Union
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Geometry)
assert isinstance(subject(), bonsai.core.tool.Geometry)
class TestChangeObjectData(NewFile):
+4 -4
View File
@@ -20,16 +20,16 @@ import bpy
import math
import ifcopenshell
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from mathutils import Vector
from test.bim.bootstrap import NewFile
from blenderbim.tool.georeference import Georeference as subject
from bonsai.tool.georeference import Georeference as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Georeference)
assert isinstance(subject(), bonsai.core.tool.Georeference)
class TestImportProjectedCRS(NewFile):
+4 -4
View File
@@ -19,15 +19,15 @@
import bpy
import ifcopenshell
import test.bim.bootstrap
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import pytest
from blenderbim.tool.ifc import Ifc as subject
from bonsai.tool.ifc import Ifc as subject
class TestImplementsTool(test.bim.bootstrap.NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Ifc)
assert isinstance(subject(), bonsai.core.tool.Ifc)
class TestSet(test.bim.bootstrap.NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.library import Library as subject
from bonsai.tool.library import Library as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Library)
assert isinstance(subject(), bonsai.core.tool.Library)
class TestClearEditingMode(NewFile):
+6 -6
View File
@@ -19,10 +19,10 @@
import bpy
import bmesh
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.loader import Loader as subject
from bonsai.tool.loader import Loader as subject
import numpy as np
from ifcopenshell.util.shape_builder import ShapeBuilder, V
from mathutils import Vector
@@ -31,7 +31,7 @@ from pathlib import Path
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Loader)
assert isinstance(subject(), bonsai.core.tool.Loader)
class TestCreatingStyles(NewFile):
@@ -58,7 +58,7 @@ class TestCreatingStyles(NewFile):
texture_data = [
{
"Mode": "DIFFUSE",
"URLReference": "blenderbim/test/files/image.jpg",
"URLReference": "bonsai/test/files/image.jpg",
"type": "IfcImageTexture",
"uv_mode": "Generated",
},
@@ -113,7 +113,7 @@ class TestCreatingStyles(NewFile):
textures = [
{
"URLReference": "blenderbim/test/files/image.jpg",
"URLReference": "bonsai/test/files/image.jpg",
"Mode": "DIFFUSE",
"RepeatS": True,
"RepeatT": True,
+4 -4
View File
@@ -19,15 +19,15 @@
import bpy
import ifcopenshell
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.material import Material as subject
from bonsai.tool.material import Material as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Material)
assert isinstance(subject(), bonsai.core.tool.Material)
class TestDisableEditingMaterials(NewFile):
+5 -5
View File
@@ -21,15 +21,15 @@ import math
import numpy
import ifcopenshell
import test.bim.bootstrap
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool.misc import Misc as subject
from blenderbim.bim.ifc import IfcStore
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.misc import Misc as subject
from bonsai.bim.ifc import IfcStore
class TestImplementsTool(test.bim.bootstrap.NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Misc)
assert isinstance(subject(), bonsai.core.tool.Misc)
class TestGetObjectStorey(test.bim.bootstrap.NewFile):
+4 -4
View File
@@ -23,18 +23,18 @@ import ifcopenshell.api.style
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.unit
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import numpy as np
import json
from test.bim.bootstrap import NewFile
from blenderbim.tool.model import Model as subject
from bonsai.tool.model import Model as subject
from ifcopenshell.util.shape_builder import V, ShapeBuilder
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Model)
assert isinstance(subject(), bonsai.core.tool.Model)
class TestGenerateOccurrenceName(NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.nest import Nest as subject
from bonsai.tool.nest import Nest as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Nest)
assert isinstance(subject(), bonsai.core.tool.Nest)
class TestCanNest(NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.owner import Owner as subject
from bonsai.tool.owner import Owner as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Owner)
assert isinstance(subject(), bonsai.core.tool.Owner)
class TestAddAddressAttribute(NewFile):
+4 -4
View File
@@ -19,15 +19,15 @@
import os
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.patch import Patch as subject
from bonsai.tool.patch import Patch as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Patch)
assert isinstance(subject(), bonsai.core.tool.Patch)
class TestRunMigratePatch(NewFile):
+4 -4
View File
@@ -18,17 +18,17 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import tempfile
from test.bim.bootstrap import NewFile
from blenderbim.tool.project import Project as subject
from bonsai.tool.project import Project as subject
from pathlib import Path
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Project)
assert isinstance(subject(), bonsai.core.tool.Project)
class TestAppendAllTypesFromTemplate(NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool.pset import Pset as subject
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.pset import Pset as subject
from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Pset)
assert isinstance(subject(), bonsai.core.tool.Pset)
class TestGetElementPset(NewFile):
+3 -3
View File
@@ -21,12 +21,12 @@ import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.pset
import test.bim.bootstrap
import blenderbim.core.tool
import bonsai.core.tool
import blenderbim.core.root
import blenderbim.tool as tool
import bonsai.tool as tool
import blenderbim.bim.import_ifc as import_ifc
import blenderbim.bim.module.qto.calculator as calculator
from blenderbim.tool.qto import Qto as subject
from bonsai.tool.qto import Qto as subject
class TestImplementsTool(test.bim.bootstrap.NewFile):
+4 -4
View File
@@ -19,15 +19,15 @@
import bpy
import ifcopenshell
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.root import Root as subject
from bonsai.tool.root import Root as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Root)
assert isinstance(subject(), bonsai.core.tool.Root)
class TestAddTrackedOpening(NewFile):
+4 -4
View File
@@ -18,16 +18,16 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool.spatial import Spatial as subject
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.spatial import Spatial as subject
from test.bim.bootstrap import NewFile
from mathutils import Matrix
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Spatial)
assert isinstance(subject(), bonsai.core.tool.Spatial)
class TestCanContain(NewFile):
+4 -4
View File
@@ -21,16 +21,16 @@ import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.representation
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.style import Style as subject
from bonsai.tool.style import Style as subject
from ifcopenshell.util.shape_builder import ShapeBuilder
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Style)
assert isinstance(subject(), bonsai.core.tool.Style)
class TestCanSupportRenderingStyle(NewFile):
+4 -4
View File
@@ -22,14 +22,14 @@ import ifcopenshell
import ifcopenshell.api
import test.bim.bootstrap
import blenderbim.core.tool
import blenderbim.tool as tool
from blenderbim.tool import Surveyor as subject
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool import Surveyor as subject
class TestImplementsTool(test.bim.bootstrap.NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Surveyor)
assert isinstance(subject(), bonsai.core.tool.Surveyor)
class TestGetGlobalMatrix(test.bim.bootstrap.NewFile):
+4 -4
View File
@@ -19,18 +19,18 @@
import bpy
import ifcopenshell
import ifcopenshell.api
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
import numpy as np
from test.bim.bootstrap import NewFile
from blenderbim.tool.system import System as subject
from bonsai.tool.system import System as subject
from mathutils import Euler, Vector, Matrix
from math import pi
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.System)
assert isinstance(subject(), bonsai.core.tool.System)
class TestAddPorts(NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.type import Type as subject
from bonsai.tool.type import Type as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Type)
assert isinstance(subject(), bonsai.core.tool.Type)
class TestChangeObjectData(NewFile):
+4 -4
View File
@@ -18,15 +18,15 @@
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
import bonsai.core.tool
import bonsai.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.unit import Unit as subject
from bonsai.tool.unit import Unit as subject
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Unit)
assert isinstance(subject(), bonsai.core.tool.Unit)
class TestClearActiveUnit(NewFile):