mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 22:50:21 +00:00
Create empty at object placement from debug panel
Small feature for debugging - https://i.imgur.com/OSOCIqG.png
This commit is contained in:
@@ -378,10 +378,30 @@ class InspectFromObject(bpy.types.Operator):
|
|||||||
class PrintObjectPlacement(bpy.types.Operator):
|
class PrintObjectPlacement(bpy.types.Operator):
|
||||||
bl_idname = "bim.print_object_placement"
|
bl_idname = "bim.print_object_placement"
|
||||||
bl_label = "Print Object Placement"
|
bl_label = "Print Object Placement"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
bl_description = (
|
||||||
|
"Print object placement to the system console.\n\n" + "ALT+CLICK create an empty object at that position"
|
||||||
|
)
|
||||||
step_id: bpy.props.IntProperty()
|
step_id: bpy.props.IntProperty()
|
||||||
|
create_empty_object: bpy.props.BoolProperty(name="Create Empty Object", default=False, options={"SKIP_SAVE"})
|
||||||
|
arrow_size: bpy.props.FloatProperty(name="Arrow Size", default=0.2, subtype="DISTANCE")
|
||||||
|
|
||||||
|
def invoke(self, context, event):
|
||||||
|
# keep the viewport position on alt+click
|
||||||
|
# make sure to use SKIP_SAVE on property, otherwise it might get stuck
|
||||||
|
if event.type == "LEFTMOUSE" and event.alt:
|
||||||
|
self.create_empty_object = True
|
||||||
|
return self.execute(context)
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
print(ifcopenshell.util.placement.get_local_placement(IfcStore.get_file().by_id(self.step_id)))
|
placement = ifcopenshell.util.placement.get_local_placement(IfcStore.get_file().by_id(self.step_id))
|
||||||
|
if self.create_empty_object:
|
||||||
|
bpy.ops.object.empty_add(type="ARROWS")
|
||||||
|
si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())
|
||||||
|
context.active_object.matrix_world = placement.transpose()
|
||||||
|
context.active_object.matrix_world.translation *= si_conversion
|
||||||
|
context.active_object.empty_display_size = self.arrow_size
|
||||||
|
print(placement)
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user