1、开发环境配置:

(1)安装AutoCAD2018;

(2)安装VS2015;

(3)安装ObjectARX 2018类库;

(4)安装ObjectARX 2018 .NET开发向导(ObjectARXWizards.msi)。

2、利用向导新建一个ObjectARX项目:File>NEW>project,在项目名称输入yunyou.ke.qq.com,确定。

3、确定后弹出如下对话框:

4、确定后生成项目:

5 、向导自动添加两个类,一个继承IExtensionApplication接口,这个是dll的入口,cad会从这个类加载程序做一些初始化的操作;另外一个可以写自定义的一些cad命令。

6、添加COM库的应用。

7、在“myplugin”中补充如下的命名空间引用。

using Autodesk.AutoCAD.Windows;

using AutoCAD;//com库

8、myplugin.cs代码修改如下:

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Windows;
using AutoCAD;//com库

// This line is not mandatory, but improves loading performances
[assembly: ExtensionApplication(typeof(yunyou.ke.qq.com_1.MyPlugin))]

namespace yunyou.ke.qq.com
{

    // This class is instantiated by AutoCAD once and kept alive for the
    // duration of the session. If you don't do any one time initialization
    // then you should remove this class.
    public class MyPlugin : IExtensionApplication
    {

        void IExtensionApplication.Initialize()
        {
            //加载dll的时候执行相关加载操作
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("\n加载 云幽学院 yunyou.ke.qq.com\n");
            load();
        }

        void IExtensionApplication.Terminate()
        {
            //这个是推出时执行
            Document doc = Application.DocumentManager.MdiActiveDocument;
            doc.LockDocument(DocumentLockMode.NotLocked, "", "", false);
        }

        private void load()
        {
            //这里添加一个工具条,添加一个按钮绑定下面的MyCommand命令
            //这个是通过com组件实现需要引用cad的两个com组件.
            AcadMenuGroups menugroups = (AcadMenuGroups)Application.MenuGroups;
            AcadToolbar toolbar = menugroups.Item().Toolbars.Add("云幽学院 yunyou.ke.qq.com");
            AcadToolbarItem item = toolbar.AddToolbarButton(toolbar.Count, "MyCommand", "云幽学院MyCommand", "MyCommand\n");
            item.SetBitmaps("16x16.bmp", "32x32.bmp");
            toolbar.Dock(AcToolbarDockStatus.acToolbarDockTop);
        }
    }
}

7、Mycommand.cs

using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;

// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(yunyou.ke.qq.com_1.MyCommands))]

namespace yunyou.ke.qq.com_1
{

    // This class is instantiated by AutoCAD for each document when
    // a command is called by the user the first time in the context
    // of a given document. In other words, non static data in this class
    // is implicitly per-document!
    public class MyCommands
    {
        // Modal Command with localized name
        [CommandMethod("MyGroup", "MyCommand", "MyCommandLocal", CommandFlags.Modal)]//特性标识,标识这个是cad命令
        public void Init()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("云幽学院 yunyou.ke.qq.com\n");

        }
      }
}

10、调试,在项目属性中,设置调试->启动外部程序,指定cad的启动路径,指定工作目录为当前程序的生成目录,既可调试。这里每次调试后,都要在启动cad后,通过netload命令加载dll,避免复杂调试、用自己的程序启动AutoCAD 并加载自己开发应用程序等高级方法请见云幽学院的视频课程 yunyou.ke.qq.com 。

使用.NET开发AutoCAD——C#/AutoCAD 2018/ObjectArx/二次开发入门(二)的更多相关文章

  1. VC++开发AutoCAD 2018/objectARX 用向导新建项目无法新建的问题

    话说笔者最近想用新机子上装的AutoCAD ObjectARX 2018来进行二次开发,兴致勃勃安装了ARX API和向导, 然后打开VS2015,新建项目,无法新建. 折腾了一下,还是没有解决,后面 ...

  2. C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五)

    C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完 ...

  3. C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)

    1.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCr ...

  4. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

    1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...

  5. AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)

    AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...

  6. AutoCad 二次开发 .net 之创建Table

    我使用了COM对象来在cad2018中创建table表格,需要的ObjectArx开发包可以在官网上下载,并且需要使用.netframework4.6的库才行. 项目里除了引用常规的Cad开发dll, ...

  7. 利用C#进行AUTOCAD的二次开发

    众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp.但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++, ...

  8. AutoCAD二次开发——AutoCAD.NET API开发环境搭建

    AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...

  9. 1,下载和部署开发环境--AutoCAD二次开发

    环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...

  10. AutoCad 二次开发 文字镜像

    AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...

随机推荐

  1. Linux显示一行显示列总计

    Linux显示一行显示列总计 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -t total used free shared buffers ca ...

  2. 已在Terminal安装了包,PyCharm却提示无法找到

    想使用python的dpkt包解析pcap文件进行分析,已经按照提示在终端输入sudo apt install python-dpkt,并且显示安装成功. 但是回到PyCharm中依然报错,如图所示: ...

  3. Gearman研习笔记(1) ------ 官网介绍要点摘录

    之前的项目里使用过消息中间件(公司提供的MQ服务)来做分发,因为MQ是基于消息的,并不是专业的任务分发器,在一些复杂场景上使用起来并不恰当. 后来听组长说了下Gearman(听名字还以为是Ironma ...

  4. 配置Tomcat线程参数maxThreads、acceptCount

    一.配置Tomcat/conf/server.xml修改配置 <Connector port="8080" protocol="org.apache.coyote. ...

  5. 【BZOJ2599】Race(点分治)

    [BZOJ2599]Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了... 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一 ...

  6. Luogu4137:Rmq Problem/mex

    题面 传送门 Sol 这题可能是假的 离线莫队搞一搞,把数字再分块搞一搞,就行了 # include <bits/stdc++.h> # define IL inline # define ...

  7. 关于Flex的DataGridColumn 的editorDataField属性

    本人Flex菜鸟,纯纯的小白 最近在项目中提了一个需求,其实这个需求就是在原有的列表中接一列数据,只不过这一列数据是下拉列表选择的 最关键的是貌似以前的某一位大神已经添加过,我的工作就是调通,可是就是 ...

  8. Android KeyCode 列表

    基本按键 KEYCODE_0 按键'0' 7 KEYCODE_1 按键'1' 8 KEYCODE_2 按键'2' 9 KEYCODE_3 按键'3' 10 KEYCODE_4 按键'4' 11 KEY ...

  9. linux下debug工具

    在linux下开发难免会遇到bug,但是由于没有图形IDE,导致debug也变得困难,其实只要掌握一些常用的debug工具,一些错误就能很快解决,本文就介绍一些常用的工具用以调试: log 输出log ...

  10. 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)

    构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...