Separated BimToolUI, added Draw wall icon
Separated BimToolUI into AddElementUI and ModifySelectedUI classes, added Draw wall icon
|
After Width: | Height: | Size: 597 B |
|
After Width: | Height: | Size: 357 B |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 508 B |
|
After Width: | Height: | Size: 398 B |
|
After Width: | Height: | Size: 414 B |
|
After Width: | Height: | Size: 880 B |
|
After Width: | Height: | Size: 319 B |
|
After Width: | Height: | Size: 797 B |
|
After Width: | Height: | Size: 392 B |
|
After Width: | Height: | Size: 486 B |
|
After Width: | Height: | Size: 413 B |
|
After Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 184 B |
|
After Width: | Height: | Size: 211 B |
|
After Width: | Height: | Size: 435 B |
|
After Width: | Height: | Size: 821 B |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 381 B |
|
After Width: | Height: | Size: 506 B |
|
After Width: | Height: | Size: 399 B |
|
After Width: | Height: | Size: 415 B |
|
After Width: | Height: | Size: 889 B |
|
After Width: | Height: | Size: 378 B |
|
After Width: | Height: | Size: 874 B |
|
After Width: | Height: | Size: 386 B |
|
After Width: | Height: | Size: 534 B |
|
After Width: | Height: | Size: 415 B |
|
After Width: | Height: | Size: 217 B |
|
After Width: | Height: | Size: 190 B |
|
After Width: | Height: | Size: 212 B |
|
After Width: | Height: | Size: 444 B |
|
After Width: | Height: | Size: 829 B |
@@ -107,7 +107,7 @@ class BimTool(WorkSpaceTool):
|
||||
|
||||
def draw_settings(context, layout, ws_tool):
|
||||
# Unlike operators, Blender doesn't treat workspace tools as a class, so we'll create our own.
|
||||
BimToolUI.draw(context, layout, ifc_element_type="all")
|
||||
AddElementUI.draw(context, layout, ifc_element_type="all")
|
||||
|
||||
|
||||
class WallTool(BimTool):
|
||||
@@ -122,7 +122,9 @@ class WallTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class SlabTool(BimTool):
|
||||
@@ -137,7 +139,9 @@ class SlabTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class DoorTool(BimTool):
|
||||
@@ -152,7 +156,9 @@ class DoorTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class WindowTool(BimTool):
|
||||
@@ -167,7 +173,9 @@ class WindowTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class ColumnTool(BimTool):
|
||||
@@ -182,7 +190,9 @@ class ColumnTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class BeamTool(BimTool):
|
||||
@@ -197,7 +207,9 @@ class BeamTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class DuctTool(BimTool):
|
||||
@@ -212,7 +224,9 @@ class DuctTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class CableCarrierTool(BimTool):
|
||||
@@ -227,7 +241,9 @@ class CableCarrierTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class PipeTool(BimTool):
|
||||
@@ -242,7 +258,9 @@ class PipeTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
class CableTool(BimTool):
|
||||
@@ -257,7 +275,9 @@ class CableTool(BimTool):
|
||||
|
||||
@classmethod
|
||||
def draw_settings(cls, context, layout, ws_tool):
|
||||
BimToolUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
AddElementUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
if context.active_object and context.selected_objects:
|
||||
ModifySelectedUI.draw(context, layout, ifc_element_type=cls.ifc_element_type)
|
||||
|
||||
|
||||
def add_layout_hotkey_operator(layout, text, hotkey, description, ui_context=""):
|
||||
@@ -292,7 +312,7 @@ def add_layout_hotkey_operator(layout, text, hotkey, description, ui_context="")
|
||||
## - Apply void button is showing when any two objects are selected - should only appear when a voidable object and a void are selected
|
||||
## - Type Class and Relating Type fields seem to be crossed between selected and new
|
||||
|
||||
class BimToolUI:
|
||||
class AddElementUI:
|
||||
@classmethod
|
||||
def draw(cls, context, layout, ifc_element_type=None):
|
||||
cls.layout = layout
|
||||
@@ -313,21 +333,10 @@ class BimToolUI:
|
||||
elif AuthoringData.data["ifc_element_type"] != ifc_element_type:
|
||||
AuthoringData.load(ifc_element_type)
|
||||
|
||||
cls.draw_container_info(context) if context.region.type == "TOOL_HEADER" else cls
|
||||
cls.draw_type_manager_launcher(context)
|
||||
cls.draw_thumbnail() if context.region.type != "TOOL_HEADER" else cls
|
||||
cls.draw_add_object(context)
|
||||
if context.active_object and context.selected_objects:
|
||||
cls.draw_modes(context)
|
||||
cls.draw_parameter_adjustments(context)
|
||||
cls.draw_operations(context)
|
||||
# cls.draw_void(context)
|
||||
cls.draw_regen_operations(context)
|
||||
cls.draw_align(context)
|
||||
cls.draw_aggregation(context)
|
||||
cls.draw_qto(context)
|
||||
# cls.draw_side_panel_tool_interface(context) if context.region.type != "TOOL_HEADER" else cls
|
||||
|
||||
|
||||
@classmethod
|
||||
def draw_container_info(cls, context):
|
||||
text = AuthoringData.data["default_container"]
|
||||
@@ -343,6 +352,13 @@ class BimToolUI:
|
||||
if not AuthoringData.data["ifc_classes"]:
|
||||
if AuthoringData.data["ifc_element_type"]:
|
||||
row.label(text=f"No {AuthoringData.data['ifc_element_type']} Found", icon="ERROR")
|
||||
row = cls.layout.row(align=True)
|
||||
op = row.operator(
|
||||
"bim.add_default_type",
|
||||
icon_value=custom_icon_previews["ADD_TYPE"].icon_id,
|
||||
text=f"Create default {AuthoringData.data['ifc_element_type']}",
|
||||
)
|
||||
op.ifc_element_type = AuthoringData.data["ifc_element_type"]
|
||||
else:
|
||||
row.label(text="No Element Types Found", icon="ERROR")
|
||||
row = cls.layout.row(align=True)
|
||||
@@ -392,17 +408,15 @@ class BimToolUI:
|
||||
|
||||
### this neeeds to move
|
||||
elif cls.props.ifc_class in ("IfcSpaceType"):
|
||||
add_layout_hotkey_operator(cls.layout, "Generate", "S_G", bpy.ops.bim.generate_space.__doc__)
|
||||
add_layout_hotkey_operator(cls.layout, "Generate", "S_G", bpy.ops.bim.generate_space.__doc__, ui_context)
|
||||
###
|
||||
|
||||
else:
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="rl_mode", text="RL Mode" if ui_context != "TOOL_HEADER" else "RL")
|
||||
|
||||
|
||||
# Add button
|
||||
if AuthoringData.data["ifc_classes"]:
|
||||
if not AuthoringData.data["ifc_element_type"]: ### for BIM Tool
|
||||
if not AuthoringData.data["ifc_element_type"]:
|
||||
row = cls.layout.row(align=True) if ui_context != "TOOL_HEADER" else row
|
||||
prop_with_search(row, cls.props, "ifc_class", text="Type Class" if ui_context != "TOOL_HEADER" else "")
|
||||
if AuthoringData.data["relating_type_id"]:
|
||||
@@ -410,10 +424,63 @@ class BimToolUI:
|
||||
prop_with_search(row, cls.props, "relating_type_id", text="Relating Type" if ui_context != "TOOL_HEADER" else "")
|
||||
row.operator("bim.launch_type_manager", icon=tool.Blender.TYPE_MANAGER_ICON, text="")
|
||||
row = cls.layout.row(align=True) if ui_context != "TOOL_HEADER" else row
|
||||
row.operator("bim.add_constr_type_instance", text="Add", icon_value=custom_icon_previews[f"ADD"].icon_id)
|
||||
add_layout_hotkey_operator(row, "Add", "S_A", bpy.ops.bim.add_constr_type_instance.__doc__, ui_context)
|
||||
row = cls.layout.row(align=True) if ui_context != "TOOL_HEADER" else row
|
||||
add_layout_hotkey_operator(row, "Draw", "S_P", bpy.ops.bim.draw_polyline_wall.__doc__, ui_context) if cls.props.ifc_class == "IfcWallType" else row
|
||||
else:
|
||||
row.label(text="No Construction Type", icon="FILE_3D")
|
||||
|
||||
@classmethod
|
||||
def draw_thumbnail(cls):
|
||||
if AuthoringData.data["ifc_classes"]:
|
||||
if cls.props.ifc_class:
|
||||
box = cls.layout.box()
|
||||
if AuthoringData.data["type_thumbnail"]:
|
||||
box.template_icon(icon_value=AuthoringData.data["type_thumbnail"], scale=5)
|
||||
else:
|
||||
op = box.operator("bim.load_type_thumbnails", text="Load Thumbnails", icon="FILE_REFRESH")
|
||||
op.ifc_class = cls.props.ifc_class
|
||||
|
||||
|
||||
class ModifySelectedUI:
|
||||
@classmethod
|
||||
def draw(cls, context, layout, ifc_element_type=None):
|
||||
cls.layout = layout
|
||||
cls.props = context.scene.BIMModelProperties
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
if not tool.Ifc.get():
|
||||
row.label(text="No IFC Project", icon="ERROR")
|
||||
return
|
||||
|
||||
if not PortData.is_loaded:
|
||||
PortData.load()
|
||||
|
||||
if not AuthoringData.is_loaded:
|
||||
AuthoringData.load(ifc_element_type)
|
||||
elif ifc_element_type == "all" and AuthoringData.data["ifc_element_type"] is not None:
|
||||
AuthoringData.load("all")
|
||||
elif AuthoringData.data["ifc_element_type"] != ifc_element_type:
|
||||
AuthoringData.load(ifc_element_type)
|
||||
|
||||
|
||||
cls.draw_parameter_adjustments(context)
|
||||
cls.draw_operations(context)
|
||||
cls.draw_void(context)
|
||||
cls.draw_regen_operations(context)
|
||||
cls.draw_align(context)
|
||||
cls.draw_aggregation(context)
|
||||
cls.draw_qto(context)
|
||||
cls.draw_modes(context)
|
||||
|
||||
@classmethod
|
||||
def draw_container_info(cls, context):
|
||||
text = AuthoringData.data["default_container"]
|
||||
if context.region.type == "UI":
|
||||
text = f"Container: {text}"
|
||||
|
||||
cls.layout.row(align=True).label(text=text, icon="OUTLINER_COLLECTION")
|
||||
|
||||
@classmethod
|
||||
def draw_modes(cls, context):
|
||||
ui_context = str(context.region.type)
|
||||
@@ -437,17 +504,6 @@ class BimToolUI:
|
||||
row = cls.layout.row(align=True) if ui_context != "TOOL_HEADER" else row
|
||||
add_layout_hotkey_operator(row, "Decomposition", "A_D", "Select decomposition", ui_context)
|
||||
|
||||
@classmethod
|
||||
def draw_thumbnail(cls):
|
||||
if AuthoringData.data["ifc_classes"]:
|
||||
if cls.props.ifc_class:
|
||||
box = cls.layout.box()
|
||||
if AuthoringData.data["type_thumbnail"]:
|
||||
box.template_icon(icon_value=AuthoringData.data["type_thumbnail"], scale=5)
|
||||
else:
|
||||
op = box.operator("bim.load_type_thumbnails", text="Load Thumbnails", icon="FILE_REFRESH")
|
||||
op.ifc_class = cls.props.ifc_class
|
||||
|
||||
@classmethod
|
||||
def draw_parameter_adjustments(cls, context):
|
||||
ui_context = str(context.region.type)
|
||||
@@ -560,7 +616,7 @@ class BimToolUI:
|
||||
add_layout_hotkey_operator(row, "Regen", "S_G", bpy.ops.bim.regenerate_distribution_element.__doc__, ui_context)
|
||||
|
||||
@classmethod
|
||||
def draw_void(cls, context,row):
|
||||
def draw_void(cls, context):
|
||||
ui_context = str(context.region.type)
|
||||
row = cls.layout.row(align=True) if ui_context != "TOOL_HEADER" else row
|
||||
if len(context.selected_objects) > 1:
|
||||
@@ -631,415 +687,6 @@ class BimToolUI:
|
||||
row.label(text="Quantity Take-off")
|
||||
add_layout_hotkey_operator(cls.layout, "Perform Quantity Take-off", "S_Q", bpy.ops.bim.perform_quantity_take_off.__doc__, ui_context)
|
||||
|
||||
@classmethod
|
||||
def draw_tool_header_icons(cls, context): ### this function is no longer in use
|
||||
ui_context = str(context.region.type)
|
||||
if AuthoringData.data["active_material_usage"] == "LAYER2":
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="extrusion_depth", text="H")
|
||||
op = row.operator("bim.change_extrusion_depth", icon="FILE_REFRESH", text="")
|
||||
op.depth = cls.props.extrusion_depth
|
||||
row.prop(data=cls.props, property="length", text="L")
|
||||
op = row.operator("bim.change_layer_length", icon="FILE_REFRESH", text="")
|
||||
op.length = cls.props.length
|
||||
row.prop(data=cls.props, property="x_angle", text="A")
|
||||
op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
|
||||
op.x_angle = cls.props.x_angle
|
||||
|
||||
# row = cls.layout.row(align=True)
|
||||
# row.prop(data=cls.props, property="extrusion_depth", text="Height:")
|
||||
# op = row.operator("bim.change_extrusion_depth", icon="FILE_REFRESH", text="")
|
||||
# op.depth = cls.props.extrusion_depth
|
||||
|
||||
# row = cls.layout.row(align=True)
|
||||
# row.prop(data=cls.props, property="length", text="Length:")
|
||||
# op = row.operator("bim.change_layer_length", icon="FILE_REFRESH", text="")
|
||||
# op.length = cls.props.length
|
||||
|
||||
# row = cls.layout.row(align=True)
|
||||
# row.prop(data=cls.props, property="x_angle", text="Angle:")
|
||||
# op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
|
||||
# op.x_angle = cls.props.x_angle
|
||||
|
||||
row = cls.layout.row()
|
||||
add_layout_hotkey_operator(row, "Regen", "S_G", bpy.ops.bim.recalculate_wall.__doc__, ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Extend", "S_E", "Extends/reduces element to 3D cursor", ui_context)
|
||||
add_layout_hotkey_operator(row, "Butt", "S_T", "Intersects two non-parallel elements to a butt corner junction", ui_context)
|
||||
add_layout_hotkey_operator(row, "Mitre", "S_Y", "Intersects two non-parallel elements to a mitred corner junction", ui_context)
|
||||
row.operator("bim.unjoin_walls", text="", icon_value=custom_icon_previews["UNJOIN_WALLS"].icon_id)
|
||||
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Merge", "S_M", bpy.ops.bim.merge_wall.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(row, "Split", "S_K", bpy.ops.bim.split_wall.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(row, "Rotate 90", "S_R", bpy.ops.bim.rotate_90.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(row, "Flip", "S_F", bpy.ops.bim.flip_wall.__doc__, ui_context)
|
||||
|
||||
elif AuthoringData.data["active_material_usage"] == "LAYER3":
|
||||
if len(context.selected_objects) == 1:
|
||||
add_layout_hotkey_operator(cls.layout, "Edit Profile", "S_E", "", ui_context)
|
||||
elif "LAYER2" in AuthoringData.data["selected_material_usages"]:
|
||||
add_layout_hotkey_operator(cls.layout, "Extend Wall To Slab", "S_E", "", ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="x_angle", text="Angle")
|
||||
op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
|
||||
op.x_angle = cls.props.x_angle
|
||||
|
||||
elif AuthoringData.data["active_material_usage"] == "PROFILE":
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="cardinal_point", text="Axis")
|
||||
op = row.operator("bim.change_cardinal_point", icon="FILE_REFRESH", text="")
|
||||
op.cardinal_point = int(cls.props.cardinal_point)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
label = (
|
||||
"Height" if AuthoringData.data["active_class"] in ("IfcColumn", "IfcColumnStandardCase") else "Length"
|
||||
)
|
||||
row.prop(data=cls.props, property="extrusion_depth", text=label)
|
||||
op = row.operator("bim.change_profile_depth", icon="FILE_REFRESH", text="")
|
||||
op.depth = cls.props.extrusion_depth
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Extend", "S_E", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Flip", "S_F", bpy.ops.bim.flip_object.__doc__, ui_context)
|
||||
|
||||
if AuthoringData.data["active_class"] in (
|
||||
"IfcCableCarrierSegment",
|
||||
"IfcCableSegment",
|
||||
"IfcDuctSegment",
|
||||
"IfcPipeSegment",
|
||||
):
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Add Fitting", "S_Y", "", ui_context)
|
||||
if context.region.type != "TOOL_HEADER":
|
||||
cls.layout.operator("bim.mep_add_bend")
|
||||
cls.layout.operator("bim.mep_add_transition")
|
||||
cls.layout.operator("bim.mep_add_obstruction")
|
||||
|
||||
else:
|
||||
add_layout_hotkey_operator(row, "Butt", "S_T", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Mitre", "S_Y", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Rotate 90", "S_R", bpy.ops.bim.rotate_90.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(row, "Regen", "S_G", bpy.ops.bim.recalculate_profile.__doc__, ui_context)
|
||||
# row.operator("bim.extend_profile", icon="X", text="").join_type = ""
|
||||
|
||||
elif (
|
||||
tool.Model.is_parametric_railing_active() and not context.active_object.BIMRailingProperties.is_editing_path
|
||||
):
|
||||
# NOTE: should be above "active_representation_type" = "SweptSolid" check
|
||||
# because it could be a SweptSolid too
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.enable_editing_railing_path", text="", icon_value=custom_icon_previews["EDIT_RAILING_PATH"].icon_id)
|
||||
|
||||
elif AuthoringData.data["active_class"] in (
|
||||
"IfcWindow",
|
||||
"IfcWindowStandardCase",
|
||||
"IfcDoor",
|
||||
"IfcDoorStandardCase",
|
||||
):
|
||||
if AuthoringData.data["active_class"] in ("IfcWindow", "IfcWindowStandardCase"):
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="rl2", text="RL")
|
||||
elif AuthoringData.data["active_class"] in ("IfcDoor", "IfcDoorStandardCase"):
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="rl1", text="RL")
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.recalculate_fill.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Flip", "S_F", "", ui_context)
|
||||
|
||||
elif AuthoringData.data["active_representation_type"] == "SweptSolid":
|
||||
if not tool.Model.is_parametric_window_active() and not tool.Model.is_parametric_door_active():
|
||||
add_layout_hotkey_operator(cls.layout, "Edit Profile", "T_E", "", ui_context)
|
||||
|
||||
elif AuthoringData.data["active_class"] in ("IfcSpace",):
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.generate_space.__doc__, ui_context)
|
||||
|
||||
elif tool.Model.is_parametric_roof_active() and not context.active_object.BIMRoofProperties.is_editing_path:
|
||||
row = cls.layout.row(align=True)
|
||||
row.label(text="", icon="EVENT_TAB")
|
||||
row.operator("bim.enable_editing_roof_path", text="Edit Roof Path")
|
||||
|
||||
if context.region.type != "TOOL_HEADER" and PortData.data["total_ports"] > 0:
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.regenerate_distribution_element.__doc__, ui_context)
|
||||
cls.layout.operator("bim.mep_connect_elements")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
if len(context.selected_objects) > 1:
|
||||
row.operator("bim.add_opening", text="", icon_value=custom_icon_previews["VOID"].icon_id)
|
||||
else:
|
||||
row.operator("bim.add_potential_opening", text="", icon_value=custom_icon_previews["ADD_VOID"].icon_id)
|
||||
|
||||
if AuthoringData.data["is_voidable_element"]:
|
||||
if AuthoringData.data["has_visible_openings"]:
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.edit_openings", icon="CHECKMARK", text="")
|
||||
row.operator("bim.hide_openings", icon="CANCEL", text="")
|
||||
|
||||
if AuthoringData.data["active_class"] in ("IfcOpeningElement",):
|
||||
row.operator("bim.edit_openings", icon="CHECKMARK", text="")
|
||||
row.operator("bim.hide_openings", icon="CANCEL", text="")
|
||||
if len(context.selected_objects) == 2:
|
||||
row = cls.layout.row(align=True)
|
||||
row.label(text="", icon="EVENT_SHIFT")
|
||||
row.label(text="", icon="EVENT_L")
|
||||
row.operator("bim.clone_opening", text="Clone Opening")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Exterior", "S_X", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Centreline", "S_C", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Interior", "S_V", "", ui_context)
|
||||
add_layout_hotkey_operator(row, "Mirror", "S_M", bpy.ops.bim.mirror_elements.__doc__, ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Void", "A_O", "Toggle openings", ui_context)
|
||||
add_layout_hotkey_operator(row, "Decomposition", "A_D", "Select decomposition", ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
add_layout_hotkey_operator(row, "Assign", "C_P", bpy.ops.bim.aggregate_assign_object.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(row, "Unassign", "A_P", bpy.ops.bim.aggregate_unassign_object.__doc__, ui_context)
|
||||
|
||||
row = cls.layout.row()
|
||||
add_layout_hotkey_operator(
|
||||
row, "Perform Quantity Take-off", "S_Q", bpy.ops.bim.perform_quantity_take_off.__doc__, ui_context
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def draw_side_panel_tool_interface(cls, context): ### this function is no longer in use
|
||||
ui_context = str(context.region.type)
|
||||
row = cls.layout.row(align=True)
|
||||
|
||||
if AuthoringData.data["active_material_usage"] == "LAYER2":
|
||||
row.label(text="LAYER2")
|
||||
row.prop(data=cls.props, property="extrusion_depth", text="Height")
|
||||
op = row.operator("bim.change_extrusion_depth", icon="FILE_REFRESH", text="")
|
||||
op.depth = cls.props.extrusion_depth
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="length", text="Length")
|
||||
op = row.operator("bim.change_layer_length", icon="FILE_REFRESH", text="")
|
||||
op.length = cls.props.length
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="x_angle", text="Angle")
|
||||
op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
|
||||
op.x_angle = cls.props.x_angle
|
||||
|
||||
cls.layout.separator()
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.recalculate_wall.__doc__, ui_context)
|
||||
|
||||
cls.layout.separator()
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Extend", "S_E", "Extends/reduces element to 3D cursor", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Butt", "S_T", "Intersects two non-parallel elements to a butt corner junction", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Mitre", "S_Y", "Intersects two non-parallel elements to a mitred corner junction", ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.unjoin_walls", text="Unjoin Walls", icon_value=custom_icon_previews["UNJOIN_WALLS"].icon_id)
|
||||
|
||||
cls.layout.separator()
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Merge", "S_M", bpy.ops.bim.merge_wall.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Split", "S_K", bpy.ops.bim.split_wall.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Rotate 90", "S_R", bpy.ops.bim.rotate_90.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Flip", "S_F", bpy.ops.bim.flip_wall.__doc__, ui_context)
|
||||
|
||||
# row.operator("bim.unjoin_walls", icon="X", text="")
|
||||
|
||||
elif AuthoringData.data["active_material_usage"] == "LAYER3":
|
||||
row.label(text="LAYER3")
|
||||
if len(context.selected_objects) == 1:
|
||||
add_layout_hotkey_operator(cls.layout, "Edit Profile", "S_E", "", ui_context)
|
||||
elif "LAYER2" in AuthoringData.data["selected_material_usages"]:
|
||||
add_layout_hotkey_operator(cls.layout, "Extend Wall To Slab", "S_E", "", ui_context)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="x_angle", text="Angle")
|
||||
op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
|
||||
op.x_angle = cls.props.x_angle
|
||||
|
||||
elif AuthoringData.data["active_material_usage"] == "PROFILE":
|
||||
row.label(text="PROFILE")
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="cardinal_point", text="Axis")
|
||||
op = row.operator("bim.change_cardinal_point", icon="FILE_REFRESH", text="")
|
||||
op.cardinal_point = int(cls.props.cardinal_point)
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
label = (
|
||||
"Height" if AuthoringData.data["active_class"] in ("IfcColumn", "IfcColumnStandardCase") else "Length"
|
||||
)
|
||||
row.prop(data=cls.props, property="extrusion_depth", text=label)
|
||||
op = row.operator("bim.change_profile_depth", icon="FILE_REFRESH", text="")
|
||||
op.depth = cls.props.extrusion_depth
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Extend", "S_E", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Flip", "S_F", bpy.ops.bim.flip_object.__doc__, ui_context)
|
||||
|
||||
if AuthoringData.data["active_class"] in (
|
||||
"IfcCableCarrierSegment",
|
||||
"IfcCableSegment",
|
||||
"IfcDuctSegment",
|
||||
"IfcPipeSegment",
|
||||
):
|
||||
|
||||
cls.layout.row(align=True).label(text="Connections")
|
||||
add_layout_hotkey_operator(cls.layout, "Add Fitting", "S_Y", "", ui_context)
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.mep_add_bend")
|
||||
row.label(text="", icon="BLANK1")
|
||||
row.label(text="", icon="BLANK1")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.mep_add_transition")
|
||||
row.label(text="", icon="BLANK1")
|
||||
row.label(text="", icon="BLANK1")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.mep_add_obstruction")
|
||||
row.label(text="", icon="BLANK1")
|
||||
row.label(text="", icon="BLANK1")
|
||||
|
||||
else:
|
||||
|
||||
add_layout_hotkey_operator( cls.layout, "Edit Axis", "A_E", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Butt", "S_T", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Mitre", "S_Y", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Rotate 90", "S_R", bpy.ops.bim.rotate_90.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.recalculate_profile.__doc__, ui_context)
|
||||
# row.operator("bim.extend_profile", icon="X", text="").join_type = ""
|
||||
|
||||
elif (tool.Model.is_parametric_railing_active() and not context.active_object.BIMRailingProperties.is_editing_path):
|
||||
# NOTE: should be above "active_representation_type" = "SweptSolid" check
|
||||
# because it could be a SweptSolid too
|
||||
row.label(text="Railing")
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.enable_editing_railing_path", text="Edit Railing Path", icon_value=custom_icon_previews["EDIT_RAILING_PATH"].icon_id)
|
||||
row.scale_x = 2
|
||||
row.label(text="", icon="EVENT_TAB")
|
||||
|
||||
elif AuthoringData.data["active_class"] in (
|
||||
"IfcWindow",
|
||||
"IfcWindowStandardCase",
|
||||
"IfcDoor",
|
||||
"IfcDoorStandardCase",
|
||||
):
|
||||
row.label(text="WinDoor")
|
||||
if AuthoringData.data["active_class"] in ("IfcWindow", "IfcWindowStandardCase"):
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="rl2", text="RL")
|
||||
elif AuthoringData.data["active_class"] in ("IfcDoor", "IfcDoorStandardCase"):
|
||||
row = cls.layout.row(align=True)
|
||||
row.prop(data=cls.props, property="rl1", text="RL")
|
||||
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.recalculate_fill.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Flip", "S_F", "", ui_context)
|
||||
|
||||
elif AuthoringData.data["active_representation_type"] == "SweptSolid":
|
||||
row.label(text="SweptSolid")
|
||||
if not tool.Model.is_parametric_window_active() and not tool.Model.is_parametric_door_active():
|
||||
add_layout_hotkey_operator(cls.layout, "Edit Profile", "S_E", "", ui_context)
|
||||
|
||||
elif AuthoringData.data["active_class"] in ("IfcSpace",):
|
||||
row.label(text="IfcSpace")
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.generate_space.__doc__, ui_context)
|
||||
|
||||
elif tool.Model.is_parametric_roof_active() and not context.active_object.BIMRoofProperties.is_editing_path:
|
||||
row.label(text="Roof")
|
||||
row = cls.layout.row(align=True)
|
||||
row.label(text="", icon="EVENT_TAB")
|
||||
row.operator("bim.enable_editing_roof_path", text="Edit Roof Path")
|
||||
|
||||
if context.region.type != "TOOL_HEADER" and PortData.data["total_ports"] > 0:
|
||||
add_layout_hotkey_operator(cls.layout, "Regen", "S_G", bpy.ops.bim.regenerate_distribution_element.__doc__, ui_context)
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.mep_connect_elements")
|
||||
row.label(text="", icon="BLANK1")
|
||||
row.label(text="", icon="BLANK1")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
if len(context.selected_objects) > 1:
|
||||
row.operator("bim.add_opening", text="Apply Void", icon_value=custom_icon_previews["VOID"].icon_id)
|
||||
else:
|
||||
row.operator(
|
||||
"bim.add_potential_opening", text="Add Void", icon_value=custom_icon_previews["ADD_VOID"].icon_id
|
||||
)
|
||||
row.label(text="", icon="EVENT_SHIFT")
|
||||
row.label(text="", icon="EVENT_O")
|
||||
|
||||
if AuthoringData.data["is_voidable_element"]:
|
||||
row.label(text="Voidable Element")
|
||||
if AuthoringData.data["has_visible_openings"]:
|
||||
row = cls.layout.row(align=True)
|
||||
row.operator("bim.edit_openings", icon="CHECKMARK", text="")
|
||||
row.operator("bim.hide_openings", icon="CANCEL", text="")
|
||||
|
||||
if AuthoringData.data["active_class"] in ("IfcOpeningElement",):
|
||||
row.label(text="Opening")
|
||||
row.operator("bim.edit_openings", icon="CHECKMARK", text="")
|
||||
row.operator("bim.hide_openings", icon="CANCEL", text="")
|
||||
if len(context.selected_objects) == 2:
|
||||
row = cls.layout.row(align=True)
|
||||
row.label(text="", icon="EVENT_SHIFT")
|
||||
row.label(text="", icon="EVENT_L")
|
||||
row.operator("bim.clone_opening", text="Clone Opening")
|
||||
|
||||
cls.layout.row(align=True).label(text="Align")
|
||||
add_layout_hotkey_operator(cls.layout, "Exterior", "S_X", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Centreline", "S_C", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Interior", "S_V", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Mirror", "S_M", bpy.ops.bim.mirror_elements.__doc__, ui_context)
|
||||
|
||||
cls.layout.row(align=True).label(text="Mode")
|
||||
add_layout_hotkey_operator(cls.layout, "Edit Axis", "A_E", "", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Void", "A_O", "Toggle openings", ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Decomposition", "A_D", "Select decomposition", ui_context)
|
||||
|
||||
cls.layout.row(align=True).label(text="Aggregation")
|
||||
add_layout_hotkey_operator(cls.layout, "Assign", "C_P", bpy.ops.bim.aggregate_assign_object.__doc__, ui_context)
|
||||
add_layout_hotkey_operator(cls.layout, "Unassign", "A_P", bpy.ops.bim.aggregate_unassign_object.__doc__, ui_context)
|
||||
|
||||
cls.layout.row(align=True).label(text="Qto")
|
||||
add_layout_hotkey_operator(cls.layout, "Perform Quantity Take-off", "S_Q", bpy.ops.bim.perform_quantity_take_off.__doc__, ui_context)
|
||||
|
||||
@classmethod
|
||||
def draw_add_type_instance(cls, context): ### this function is no longer in use
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
if AuthoringData.data["ifc_classes"]:
|
||||
|
||||
if not AuthoringData.data["ifc_element_type"]:
|
||||
prop_with_search(row, cls.props, "ifc_class", text="")
|
||||
|
||||
row = cls.layout.row(align=True)
|
||||
if AuthoringData.data["relating_type_id"]:
|
||||
prop_with_search(row, cls.props, "relating_type_id", text="")
|
||||
row.operator("bim.add_constr_type_instance", text="Add", icon_value=custom_icon_previews[f"ADD"].icon_id)
|
||||
|
||||
else:
|
||||
row.label(text="No Construction Type", icon="FILE_3D")
|
||||
row.operator("bim.launch_type_manager", icon=tool.Blender.TYPE_MANAGER_ICON, text="")
|
||||
else:
|
||||
if AuthoringData.data["ifc_element_type"]:
|
||||
row.label(text=f"No {AuthoringData.data['ifc_element_type']} Found", icon="ERROR")
|
||||
row = cls.layout.row()
|
||||
row.prop(cls.props, "type_name")
|
||||
row = cls.layout.row(align=True)
|
||||
op = row.operator(
|
||||
"bim.add_default_type",
|
||||
icon_value=custom_icon_previews["ADD_TYPE"].icon_id,
|
||||
text=f"Create {AuthoringData.data['ifc_element_type']}",
|
||||
)
|
||||
op.ifc_element_type = AuthoringData.data["ifc_element_type"]
|
||||
row.operator("bim.launch_type_manager", icon=tool.Blender.TYPE_MANAGER_ICON, text="")
|
||||
else:
|
||||
row.label(text="No Element Types Found", icon="ERROR")
|
||||
row.operator("bim.launch_type_manager", icon=tool.Blender.TYPE_MANAGER_ICON, text="Launch Type Manager")
|
||||
|
||||
|
||||
class Hotkey(bpy.types.Operator, tool.Ifc.Operator):
|
||||
bl_idname = "bim.hotkey"
|
||||
|
||||
@@ -27,15 +27,15 @@
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
inkscape:zoom="9.6666668"
|
||||
inkscape:cx="29.224137"
|
||||
inkscape:cy="15.517241"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1620"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:zoom="13.670731"
|
||||
inkscape:cx="5.4861732"
|
||||
inkscape:cy="7.2051741"
|
||||
inkscape:window-width="1839"
|
||||
inkscape:window-height="1421"
|
||||
inkscape:window-x="1064"
|
||||
inkscape:window-y="106"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g34785"
|
||||
inkscape:current-layer="g37355"
|
||||
showguides="true"><inkscape:grid
|
||||
type="axonomgrid"
|
||||
id="grid5114"
|
||||
@@ -1289,7 +1289,7 @@
|
||||
inkscape:groupmode="layer"
|
||||
id="g34785"
|
||||
inkscape:label="set_gable_roof_angle"
|
||||
style="display:inline"><path
|
||||
style="display:none"><path
|
||||
id="rect1259-2-1-1-9-18-8-4"
|
||||
style="display:inline;fill:none;stroke:#00d27b;stroke-width:1.05833;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 6.5999941e-7,1.0583328 4.2333333,1.0583333 7.9374999,3.3739587 V 4.2333333 H 5e-7"
|
||||
@@ -1333,6 +1333,20 @@
|
||||
inkscape:label="green-right"
|
||||
transform="rotate(-90)" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="g37355"
|
||||
inkscape:label="draw"
|
||||
style="display:inline"><path
|
||||
id="path37347"
|
||||
style="display:inline;fill:#00d27b;fill-opacity:1;stroke:#00d27b;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
inkscape:label="pencil"
|
||||
d="M 5.8570068,0.52916666 5.0317342,1.3472046 7.119462,3.4349324 7.9374999,2.6096598 V 1.7166911 L 6.7499755,0.52916666 Z M 4.5619954,1.8128092 0.87074788,5.4704671 0.52916664,7.6729169 l 2e-8,0.264583 0.26458273,1e-7 L 2.9961995,7.5959187 6.6538574,3.9046712 Z"
|
||||
sodipodi:nodetypes="ccccccccccccccc" /><path
|
||||
id="path37351"
|
||||
style="color:#000000;display:inline;fill:#ffffff;stroke-width:0.563779;stroke-miterlimit:0;stroke-dasharray:none;-inkscape-stroke:none;paint-order:stroke fill markers"
|
||||
d="m 6.2106881,5.005932 0.00193,1.070418 -1.0731715,-2e-7 v 0.5659811 l 1.0731715,1e-7 -0.00193,1.0709689 h 0.5659812 l -0.00193,-1.0709689 1.0731752,-1e-7 V 6.0763498 l -1.0731752,2e-7 0.00193,-1.070418 z"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:label="plus" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="g27074"
|
||||
inkscape:label="circle"
|
||||
style="display:none"><ellipse
|
||||
@@ -1430,35 +1444,6 @@
|
||||
inkscape:label="tick-path"
|
||||
sodipodi:nodetypes="ccc" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="g16110"
|
||||
inkscape:label="add"
|
||||
style="display:none"><path
|
||||
style="display:inline;fill:#009a5f;fill-opacity:1;stroke:#00d27b;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 0.76091855,2.4310578 4.0934898,4.3552832 V 8.2020824 L 0.76091855,6.2767558"
|
||||
id="path16090"
|
||||
inkscape:label="side-left"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
id="path16088"
|
||||
style="display:inline;fill:#00d27b;fill-opacity:1;stroke:#00d27b;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
inkscape:label="side-right"
|
||||
d="M 7.7079504,2.4299567 4.3753791,4.3547327 V 8.2009813 L 5.9307258,7.3030093 V 6.9275239 L 4.8570079,6.9245621 V 5.7939105 l 1.0737179,-4e-7 -0.00835,-1.0640864 h 1.1303995 l 10e-8,1.0640864 0.6551778,-0.00165 z"
|
||||
sodipodi:nodetypes="ccccccccccccc" /><path
|
||||
style="display:inline;fill:#75ffaf;fill-opacity:1;stroke:#75ffaf;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 7.5642528,2.187708 4.2344344,4.1113829 0.90461606,2.187708 4.2333333,0.26458379"
|
||||
id="path16092"
|
||||
inkscape:label="top"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
id="path16100"
|
||||
style="color:#000000;display:inline;fill:#ffffff;stroke-width:0.563779;stroke-miterlimit:0;stroke-dasharray:none;-inkscape-stroke:none;paint-order:stroke fill markers"
|
||||
d="m 6.2106881,5.005932 0.00193,1.070418 -1.0731715,-2e-7 v 0.5659811 l 1.0731715,1e-7 -0.00193,1.0709689 h 0.5659812 l -0.00193,-1.0709689 1.0731752,-1e-7 V 6.0763498 l -1.0731752,2e-7 0.00193,-1.070418 z"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:label="plus" /><path
|
||||
id="path22995"
|
||||
style="color:#000000;display:none;fill:#00d27b;stroke-linejoin:round;stroke-miterlimit:0;-inkscape-stroke:none;paint-order:stroke fill markers"
|
||||
d="m 4.2233784,-0.052978 a 0.14085458,0.14085458 0 0 0 -0.013826,0.0016419 0.14085458,0.14085458 0 0 0 -0.04535,0.01641845 L 0.53343037,2.0370913 a 0.14085458,0.14085458 0 0 0 -0.009402,0.00821 0.14084052,0.14084052 0 0 0 -0.011614,0.0093 0.14085458,0.14085458 0 0 0 -0.0270994,0.031742 0.14084052,0.14084052 0 0 0 -0.002765,0.00328 0.14084052,0.14084052 0 0 0 -0.001106,0.00383 0.14085458,0.14085458 0 0 0 -0.0149323,0.042688 0.14084052,0.14084052 0 0 0 -0.001106,0.0093 0.14085458,0.14085458 0 0 0 -0.002765,0.014777 V 6.3064255 A 0.14085458,0.14085458 0 0 0 0.53343107,6.429564 L 4.1642021,8.5021316 a 0.14085458,0.14085458 0 0 0 0.00387,0.00164 0.14084052,0.14084052 0 0 0 0.032077,0.010946 0.14085458,0.14085458 0 0 0 0.016039,0.00328 0.14084052,0.14084052 0 0 0 0.016038,0.00328 0.14084052,0.14084052 0 0 0 0.017145,-0.00328 0.14085458,0.14085458 0 0 0 0.018251,-0.00328 0.14084052,0.14084052 0 0 0 0.029312,-0.010398 0.14085458,0.14085458 0 0 0 0.00553,-0.00219 L 5.9372798,7.5690161 V 7.2444779 L 4.3749141,8.1370946 V 4.3137837 L 7.7225246,2.4004864 V 5.7427366 H 8.0040269 V 2.1602297 A 0.14085458,0.14085458 0 0 0 7.9315774,2.0370913 L 4.3024645,-0.0349177 A 0.14085458,0.14085458 0 0 0 4.2233784,-0.052978 Z M 4.2322272,0.24802701 7.5781786,2.1596824 4.2333333,4.0718852 0.88848805,2.1596824 Z M 0.74414205,2.401581 4.0917526,4.314331 V 8.1381892 L 0.74414205,6.2243446 Z"
|
||||
transform="matrix(0.9343902,0,0,0.94423804,0.27774818,0.236059)"
|
||||
inkscape:label="edges" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="g23076"
|
||||
inkscape:label="add_void"
|
||||
style="display:none"><path
|
||||
@@ -1541,6 +1526,35 @@
|
||||
style="display:inline;fill:#ffffff;stroke:#ffffff;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:0;paint-order:stroke fill markers"
|
||||
d="M 8.4666674,7.4083326 H 5.8208347 V 1.0583338 h 2.6458321 z"
|
||||
sodipodi:nodetypes="ccccc" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="g16110"
|
||||
inkscape:label="add"
|
||||
style="display:none"><path
|
||||
style="display:inline;fill:#009a5f;fill-opacity:1;stroke:#00d27b;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 0.76091855,2.4310578 4.0934898,4.3552832 V 8.2020824 L 0.76091855,6.2767558"
|
||||
id="path16090"
|
||||
inkscape:label="side-left"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
id="path16088"
|
||||
style="display:inline;fill:#00d27b;fill-opacity:1;stroke:#00d27b;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
inkscape:label="side-right"
|
||||
d="M 7.7079504,2.4299567 4.3753791,4.3547327 V 8.2009813 L 5.9307258,7.3030093 V 6.9275239 L 4.8570079,6.9245621 V 5.7939105 l 1.0737179,-4e-7 -0.00835,-1.0640864 h 1.1303995 l 10e-8,1.0640864 0.6551778,-0.00165 z"
|
||||
sodipodi:nodetypes="ccccccccccccc" /><path
|
||||
style="display:inline;fill:#75ffaf;fill-opacity:1;stroke:#75ffaf;stroke-width:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 7.5642528,2.187708 4.2344344,4.1113829 0.90461606,2.187708 4.2333333,0.26458379"
|
||||
id="path16092"
|
||||
inkscape:label="top"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
id="path16100"
|
||||
style="color:#000000;display:inline;fill:#ffffff;stroke-width:0.563779;stroke-miterlimit:0;stroke-dasharray:none;-inkscape-stroke:none;paint-order:stroke fill markers"
|
||||
d="m 6.2106881,5.005932 0.00193,1.070418 -1.0731715,-2e-7 v 0.5659811 l 1.0731715,1e-7 -0.00193,1.0709689 h 0.5659812 l -0.00193,-1.0709689 1.0731752,-1e-7 V 6.0763498 l -1.0731752,2e-7 0.00193,-1.070418 z"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:label="plus" /><path
|
||||
id="path22995"
|
||||
style="color:#000000;display:none;fill:#00d27b;stroke-linejoin:round;stroke-miterlimit:0;-inkscape-stroke:none;paint-order:stroke fill markers"
|
||||
d="m 4.2233784,-0.052978 a 0.14085458,0.14085458 0 0 0 -0.013826,0.0016419 0.14085458,0.14085458 0 0 0 -0.04535,0.01641845 L 0.53343037,2.0370913 a 0.14085458,0.14085458 0 0 0 -0.009402,0.00821 0.14084052,0.14084052 0 0 0 -0.011614,0.0093 0.14085458,0.14085458 0 0 0 -0.0270994,0.031742 0.14084052,0.14084052 0 0 0 -0.002765,0.00328 0.14084052,0.14084052 0 0 0 -0.001106,0.00383 0.14085458,0.14085458 0 0 0 -0.0149323,0.042688 0.14084052,0.14084052 0 0 0 -0.001106,0.0093 0.14085458,0.14085458 0 0 0 -0.002765,0.014777 V 6.3064255 A 0.14085458,0.14085458 0 0 0 0.53343107,6.429564 L 4.1642021,8.5021316 a 0.14085458,0.14085458 0 0 0 0.00387,0.00164 0.14084052,0.14084052 0 0 0 0.032077,0.010946 0.14085458,0.14085458 0 0 0 0.016039,0.00328 0.14084052,0.14084052 0 0 0 0.016038,0.00328 0.14084052,0.14084052 0 0 0 0.017145,-0.00328 0.14085458,0.14085458 0 0 0 0.018251,-0.00328 0.14084052,0.14084052 0 0 0 0.029312,-0.010398 0.14085458,0.14085458 0 0 0 0.00553,-0.00219 L 5.9372798,7.5690161 V 7.2444779 L 4.3749141,8.1370946 V 4.3137837 L 7.7225246,2.4004864 V 5.7427366 H 8.0040269 V 2.1602297 A 0.14085458,0.14085458 0 0 0 7.9315774,2.0370913 L 4.3024645,-0.0349177 A 0.14085458,0.14085458 0 0 0 4.2233784,-0.052978 Z M 4.2322272,0.24802701 7.5781786,2.1596824 4.2333333,4.0718852 0.88848805,2.1596824 Z M 0.74414205,2.401581 4.0917526,4.314331 V 8.1381892 L 0.74414205,6.2243446 Z"
|
||||
transform="matrix(0.9343902,0,0,0.94423804,0.27774818,0.236059)"
|
||||
inkscape:label="edges" /></g><g
|
||||
id="g1377"
|
||||
inkscape:label="ifc"
|
||||
style="display:none"><path
|
||||
|
||||
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 120 KiB |