一、操作AutoCAD的Entity对象时,必须要对Entity对象进行提权操作,代码如下
Vector3d vector = targetPt.GetVectorTo(sourcePt);//首先构建一个矢量
Matrix3d mt = Matrix3d.Displacement(vector);//将矢量提交为一个矩阵事件
Entity ent = id.GetObject(OpenMode.ForWrite) as Entity;//对Entity提权,以读写的方式打开
ent.TransformBy(mt);//提交事件
ent.DowngradeOpen();//提交事件后对Entity降权,改为只读方式
最近发现一个很奇怪的事情,上次说每次添加实体后,需要添加至数据库,但是在Entity中有一个属性"IsNewObject",表示新生成对象,貌似此对象未添加至数据库。
Matrix3D是一个矩阵对象。它包含了
1.Translation 移动
2.Rotation 旋转
3.Scaling 缩放
4.Mirroring 镜像 四个方法,分别对应CAD中的TR(偏移)、Ro(旋转)、Sc(缩放)、Mi(镜像)。
二、发现了一个很不得了的事情:
[assembly: CommandClass(typeof(AutoCAD_Command.commandClass))]
这个代码必须放在AutoCAD_Command中,之前为了方便,把这句代码放在了AutoCAD_Lanuch中,与
[assembly: ExtensionApplication(typeof(AutoCAD_Lanuch.MyPlugin))]
放在了一起,这样会导致调试时 CAD执行NetLoad命令后,无法加载AutoCAD_Command中的命令