如何在BricsCad或AutoCad中通过.NET实现实体垂直镜像
实现方法
你原有代码调用的是Mirroring方法的Point3d参数重载,实现的是基于原点的中心对称效果,和沿直线镜像的需求不符,按以下步骤修改即可:
常规场景(WCS正视图下屏幕竖直向上=Y轴正方向)
直接构造过原点、沿Y轴正方向的直线作为镜像轴,传入Mirroring方法即可:
// 构造镜像轴:过原点,方向为Y轴正方向(常规正视图下对应屏幕竖直向上) _AcGe.Line3d mirrorAxis = new _AcGe.Line3d(_AcGe.Point3d.Origin, _AcGe.Vector3d.YAxis); // 生成目标镜像矩阵 _AcGe.Matrix3d acMatrix3dMirror = _AcGe.Matrix3d.Mirroring(mirrorAxis);
动态适配当前视图场景
如果需要无论当前视图如何旋转,都取当前屏幕的竖直向上方向作为镜像轴方向,可以先获取当前视图的向上向量再构造直线:
// 获取当前视图的屏幕竖直向上方向向量 _AcGe.Vector3d screenUpVec = (dynamic)Application.GetSystemVariable("VIEWUPY"); // 构造过原点的镜像轴 _AcGe.Line3d mirrorAxis = new _AcGe.Line3d(_AcGe.Point3d.Origin, screenUpVec); _AcGe.Matrix3d acMatrix3dMirror = _AcGe.Matrix3d.Mirroring(mirrorAxis);
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

