Hello, I just noticed a possible bug that goes back to Elefront 4 and now. Whenever I reference a mirrored Block, it’s reference plane seems to have a flipped Z direction (as shown by my spotlight directions). If I check the block in rhino everything seems fine and the Z direction is ok. Note that the mirrored block is on the left
Hi - unfortunately this is the nature of mirroring. Basically, once you have a mirror operation, the mirrored object now has a “left handed” orientation. That is, the relationship between X, Y, and Z axis changes.
So, I believe what you are asking for is what is on the Left in the image above. However, Planes in Rhino always follow the Right Hand Rule, which means it can’t really be “mirrored”. You can see in the image above that while the Curves representing the axis system can be mirrored, the Planes cannot (as indicated by the direction of the green arrows).
If it helps: block instances do not really have a Reference Plane, in terms of how they are defined - otherwise they could never be mirrored (since you can’t have a mirrored / “left handed” plane) - what defines an Instance is the block Definition, and a Transformation. So when eleFront provides a reference plane, it is simply taking the World XY plane and then applying the Block’s transformation to it, as a visual aid. But if you wanted to insert an object or another block with the same transformation (that is, with the mirroring), you would need to apply the transformation rather than using the plane to Orient it. For convenience, eleFront also makes the block transformation available.
Thank you for the response, Keyan. I understand, however, my goal is to use the Z vector to orient my spotlight. Is there a way to always orient my spotlight according to the natural Z vector of the block? I can’t really think of anyway other than maybe trying to identify mirrored blocks in grasshopper then flipping those planes to the appropriate orientation.
In that case, one approach would be to create a line representing the Unit Z vector and apply the block transformation to it - you should be able to just get the Transformation for all blocks and use that without having to differentiate between whether they are mirrored or not: