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