How to Mirror an element
Hi,
How do I mirror an element, Tried with Shift+M.
That didnt work though and got an error message
Python: Traceback (most recent call last):
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\module\model\workspace.py", line 449, in invoke
return self.execute(context)
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\tool\ifc.py", line 130, in execute
IfcStore.execute_ifc_operator(self, context)
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\ifc.py", line 428, in execute_ifc_operator
result = getattr(operator, "_execute")(context)
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\module\model\workspace.py", line 441, in _execute
getattr(self, f"hotkey_{self.hotkey}")()
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\module\model\workspace.py", line 585, in hotkey_S_M
bpy.ops.bim.mirror_elements()
File "D:\ARUN\blender-3.4.1-windows-x64\3.4\scripts\modules\bpy\ops.py", line 113, in __call__
ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: Python: Traceback (most recent call last):
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\tool\ifc.py", line 130, in execute
IfcStore.execute_ifc_operator(self, context)
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\ifc.py", line 428, in execute_ifc_operator
result = getattr(operator, "_execute")(context)
File "C:\Users\shifali\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\blenderbim\bim\module\model\product.py", line 432, in _execute
bpy.ops.bim.override_object_duplicate_move(is_interactive=False)
File "D:\ARUN\blender-3.4.1-windows-x64\3.4\scripts\modules\bpy\ops.py", line 113, in __call__
ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Operator bpy.ops.bim.override_object_duplicate_move.poll() failed, context is incorrect
Location: D:\ARUN\blender-3.4.1-windows-x64\3.4\scripts\modules\bpy\ops.py:113
Tagged:
Comments
Just taking a wild guess here, did you try it in object or in edit mode?
I was trying with the Mirror command from the BIM Tool
I've improved the error catching. The intended usage is that you must have 2 or more objects selected. The active object will be the "mirror axis object" It will be mirrored along the YZ plane.
@Moult How to mirror wrt to plane other than YZ
@Arv there isn't yet a way to change it from YZ in the UI, but you can just rotate your mirroring object (typically you'd use an empty).
@Moult I am trying to mirror this door element across the x-axis. I have tried the blender way of mirroring (which is same as scaling by -1). However, after saving and reopening the ifc file, this gets changed as 180degree rotation along z-axis and the scaling gets reset to 1. Is mirror supported in blenderbim or ifc? Do you recommend any method to mirror this element (didn't want rotation)



Hi @Arv could you just move the door to where you want it and use the door modifier to change the hinge position/opening direction
Thanks @Nigel. Will try this out
Unfortunately I don't think the IFC schema allows mirroring
Thanks for the link @theoryshaw and I guess it makes sense not to mirror as like mentioned in the comments by jwouellette
But i also agree with the Dion, the utility is too great to ignore. :)
Would like to avoid future excuses like... "I would love to use BlenderBIM, but they don't support mirroring... when ever other BIM program does."
:)
This is one of those classic cases, as mentioned, here... that this shortcoming is because of IFC, not BB, and as such, if users really want it, to put pressure on BuildingSmart to incorporate it.
This is the beautiful feedback loop.
As a way to manage mirroring, I wondering if a system or an approach could be used where if a non-material based type was mirrored, that BB would automatically create a new mirrored type.
IfcDoorType/DT01_Mirror
, for example.And it was 'hardwired' to
IfcDoorType/DT01
. That is, any change done toIfcDoorType/DT01
would changeIfcDoorType/DT01_Mirror
automatically, and vice versa.This is a good idea. I've been manually created handed elements when needed, this would be a good improvement. Perhaps a LH/RH suffix would be more appropriate if mirroring isn't supported by the schema?
And, if the product was perfectly symmetrical, that it could be tagged with some type of pset to NOT create a mirrored type.
Put in feature request:
If a non-material based type was mirrored, that BB would automatically create a new mirrored type.
https://github.com/IfcOpenShell/IfcOpenShell/issues/4432