AutoCAD .Net二次开发历程2

本文详细介绍了在AutoCAD中如何对实体(Entity)对象进行提权操作,并使用Matrix3D进行平移、旋转等变换。同时,文章还讨论了在AutoCAD插件开发过程中,如何正确地设置命令类与扩展应用,以确保CAD能够正常加载并执行插件中的命令。

一、操作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中的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值