ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于C#的AutoCad二次开发--第一章--环境搭建及几种二开模式

2021-08-02 19:31:23  阅读:196  来源: 互联网

标签:类库 AutoCad 对话框 -- xxx 二次开发 编写 cad


Autocad的开发形式包括visual lisp、objectarx、vba、.Net等等,其中基于.Net平台的C#语言学习曲线较为平缓,使用该语言进行AutoCad的二次开发效率较高。

本文主要记录了使用C#进行AutoCad二次开发的环境搭建和几种二次开发的模式。

学习资料:1. Autocad .Net开发指南(中文版),此为欧特克公司提供的官方文档;

                  2. AutoCad官网,在开发人员板块可以查阅官方提供的各种类库;

                  3. b站的AutoCad_C#二开视屏,链接如下:

                      https://www.bilibili.com/video/BV1x4411y79M?from=search&seid=11773567052653254338;

                  4. 百度,google......

 

软件配置:Autocad2014 + objectarx2014 + AutoCAD_2014_dotnet_wizards + vs2013;

                 注:此配置不是唯一的,因为.NET框架可向下兼容;

 

第一节:搭建环境

1.1 创建项目

在vs中创建一个类库项目,适用于.dll和对话框应用程序的开发。

 

1.2  引用类库

从objectarx2014中引入下图所示类库,并且对于所有类库,右击->属性->复制到本地->false;

 

 1.3 框架及目标平台

做完上述操作,建议先不要动项目的框架及目标平台(右击->项目->应用程序or生成),如果编译出问题,再调整这两项,即注意:平台要与Autocad相匹配:是x64 or x32;框架也要相匹配,看是否和当前Autocad版本相兼容。

 

第二节:代码编写

在正式写代码之前,需要了解你想做哪种形式的Cad二次开发,如:.dll; Ribbon; 对话框应用程序等等。不同形式的开发,其代码编写也有所不同。

 

2.1  载入动态链接库(.dll)

这应该是较为常用的,且比较简单快捷的一种开发形式。可以用其来编写一些小的功能,类似于在Cad下方的编辑框中输入一些命令(Command)。

具体开发如下:

在public class xxx下方编写:

[Command("xxx")]                     //可以理解为:当写完代码并加载至cad后,在编译框键入命令xxx,从而执行操作。至于具体执行什么操作,这要根据下面的xxx方法具体的算法逻辑了。

public void xxx()                  //编写期望cad具体执行的操作。

{

xxxxxx;

}

注:以上只是一个模板,具体可参照《Autocad .Net开发指南》上的例子。

 

2.2 对话框应用程序

本质上,这也是一个类库项目,与2.1节类似,也是先编译生成一个.dll格式的动态链接库,然后再通过NETLOAD命令加载入Cad中,随后键入xxx命令,执行操作。但是,与上述开发形式相比,其与用户之间的交互模式更为友好。

一般地,当键入xxx命令后,cad会弹出一个对话框,通过点选按钮的方式,让cad执行具体操作。

具体开发如下:(注:仅为模板)

1. 创建一个类库项目;

2. 添加窗体文件,并在类库中编写类似如下的代码:

public class Class1
    {
        [CommandMethod("DialogDemo")]
        public void DialogDemo()
        {
            Form1 f1 = new Form1();   //创建窗体实例
            f1.ShowDialog();    //弹出对话框,注意与show的区别
        }
    }

3. 为了实现:当点击按钮,从而触发事件这一操作,

需要编写事件中命令cad所做的具体操作逻辑,这就需要单独编写一个或多个类,可以添加一个类文件,将他们放在其中。

4.最后,为了点击按钮后能够触发相应的事件,在事件处理器中需要添加类似如下的代码:

private void btnDrawToCad_Click(object sender, EventArgs e)
        {
            MyEntites m1 = new MyEntites((double)numericUpDown1.Value, (double)numericUpDown2.Value, (double)numericUpDown3.Value); //创建一个实例;
            datatool.AddEntity(m1.Ents); //将list作参数载入,将创建的图形添加进模型空间块表记录中。
        }

5. 综合起来,在cad键入命令xxx后,弹出一个对话框,点击按钮后,在cad中自动画出了一个图形。

 

ps: 随着继续学习深入,其他的一些开发模式也会陆续更新~ to be continue~

 

标签:类库,AutoCad,对话框,--,xxx,二次开发,编写,cad
来源: https://www.cnblogs.com/Dajuwang-dj/p/15090571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有