I having problems mirroring blockreferences when the active coordinate system is not the WCS. We are mirroring through the base point of the blockreference. On the WCS I am doing this:
Pt = Blk.Position.Add(New Vector3d(0, 50, 0)) lin = New Line3d(Blk.Position, Pt) Blk.TransformBy(Matrix3d.Mirroring(lin))
For the WCS it works very well, however when the current coordinate system is a UCS then it does not work. I have tried this:
mtrx = Ed.CurrentUserCoordinateSystem Dim vt As New Vector3d(0, 50, 0) 'vt.TransformBy(mtrx) Pt = Blk.Position.Add(vt) lin = New Line3d(InsPt, Pt) lin.TransformBy(mtrx) Blk.TransformBy(Matrix3d.Mirroring(lin))
I think my problem is the end point of the line, pt. I tried to transform the vt but that does not work either. Can someone please help me here. Thanks in advance.
Solved! Go to Solution.
If I don't misunderstand, you want to mirror a block about a line parallel to the current UCS Y axis which containd the block position.
Vector3d vt = Vector3d.YAxis.TransformBy(ed.CurrentUserCoordinat
eSystem) Blk.TransformBy(Matrix3d.Mirroring(new Line3d(Blk.Position, Blk.Position + vt)))
Thank you very much _gile this is exactly what I was trying to do. I was going to use the Matrix3d.Mirroring(Plane) method. How do I get the Yaxis Plane of the current coordinate system?
Plane plane = new Plane(br.Position, Vector3d.XAxis.TransformBy(ed.CurrentUserCoordinat
Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register
Start with some of our most frequented solutions to get help installing your software.