mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
Use clever Blender length props for editing representation item extrusion depth
Example - https://imgchest.com/p/ljyqzpmwoy2
This commit is contained in:
@@ -2528,6 +2528,7 @@ class ImportRepresentationItems(bpy.types.Operator, tool.Ifc.Operator):
|
||||
class UpdateItemAttributes(bpy.types.Operator, tool.Ifc.Operator):
|
||||
bl_idname = "bim.update_item_attributes"
|
||||
bl_label = "Update Item Attributes"
|
||||
bl_description = "Update item attributes in IFC and reload mesh for representation item"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def _execute(self, context):
|
||||
|
||||
@@ -274,7 +274,7 @@ class EditItemUI:
|
||||
return
|
||||
for item_attribute in obj.data.BIMMeshProperties.item_attributes:
|
||||
row = cls.layout.row()
|
||||
row.prop(item_attribute, "float_value", text=item_attribute.name)
|
||||
row.prop(item_attribute, item_attribute.get_value_name(display_only=True), text=item_attribute.name)
|
||||
if len(obj.data.BIMMeshProperties.item_attributes):
|
||||
row = cls.layout.row()
|
||||
row.operator("bim.update_item_attributes", icon="FILE_REFRESH", text="")
|
||||
|
||||
@@ -328,6 +328,11 @@ class Attribute(PropertyGroup):
|
||||
assert_never(data_type)
|
||||
|
||||
def get_value_name(self, display_only: bool = False) -> str:
|
||||
"""Get name of the value attribute.
|
||||
|
||||
:param display_only: Should be `True` if the value won't be accessed directly
|
||||
by this name, only through UI (e.g. with `layout.prop`).
|
||||
"""
|
||||
data_type = self.data_type
|
||||
if data_type == "string":
|
||||
return "string_value"
|
||||
|
||||
@@ -48,9 +48,12 @@ from collections import defaultdict
|
||||
from math import radians, pi
|
||||
from mathutils import Vector, Matrix
|
||||
from bonsai.bim.ifc import IfcStore
|
||||
from typing import Union, Iterable, Optional, Literal, Iterator, List
|
||||
from typing import Union, Iterable, Optional, Literal, Iterator, List, TYPE_CHECKING
|
||||
from typing_extensions import TypeIs
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bonsai.bim.prop import Attribute
|
||||
|
||||
|
||||
class Geometry(bonsai.core.tool.Geometry):
|
||||
@classmethod
|
||||
@@ -1500,8 +1503,10 @@ class Geometry(bonsai.core.tool.Geometry):
|
||||
props.item_attributes.clear()
|
||||
item = tool.Ifc.get().by_id(props.ifc_definition_id)
|
||||
if item.is_a("IfcExtrudedAreaSolid"):
|
||||
new = props.item_attributes.add()
|
||||
new: Attribute = props.item_attributes.add()
|
||||
new.name = "Depth"
|
||||
new.data_type = "float"
|
||||
new.special_type = "LENGTH"
|
||||
new.float_value = item.Depth
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user