基于COM Interop的AutoCAD二次开发如何在程序内部加载dll文件

基于COM Interop的AutoCAD二次开发如何在程序内部加载dll文件


前言

我的上一篇文章已经介绍了如何通过COM Interop创建一个独立的AuoCAD二次开发应用程序。但是在开发过程感觉有些吃力,一方面是对这种开发方式运用还不熟练,另一方面是这种方法网上的资料真的很少。而基于.net api来开发AutoCAD的资料却很多,但是这种方式只能编译出一个dll文件,用起来不是很方便。于是我灵机一动,能否用COM Interop方式做主界面,然后在程序内部调用.net api方式生成的dll文件呢?嘿嘿,好一个围魏救赵,曲线救国…


一、开发工具

我使用的是 Visual Studio 2017 + AutoCAD 2019 + .NET Framework 4.7.2。版本不是重点,可根据自己实际来选择。

二、通过.net api创建类库项目

(一)新建项目

打开Visual Studio,新建一个类库(.Net Framework)项目。
在这里插入图片描述

(二)添加引用

  1. 选择创建的项目然后右键→添加→引用→浏览,在弹出的窗口中找到AutoCAD安装目录,依次添加accoremgd、AcCui、acdbmgd、acmgd这4个dll文件。注意:我用的是 AutoCAD 2019对应这4个类库文件,其它低版本可能只有其中3个,可自行去网上查询。
    在这里插入图片描述
  2. 选中这4个引用,在属性栏中将复制本地属性改为false。
    在这里插入图片描述
  3. 选择创建的项目然后右键→属性→调试,启动操作一栏选择启动外部程序,点击浏览并定位到AutoCAD安装目录,选择AutoCAD主程序“acad.exe”文件。
    在这里插入图片描述

(三)代码编写

回到Class1.cs代码编辑界面,添加如下代码:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;

namespace DrawCircle
{
   
    public class Class1
    {
   
        [CommandMethod("Drawcircle")]//注册一个CAD命令
        public void drawcircle()
        {
   
            Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();
            BlockTable bt = (BlockTable)trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead);
            BlockTableRecord btr = (BlockTableRecord)trans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值