云顶娱乐手机官网-云顶娱乐网址

热门关键词: 云顶娱乐手机官网,云顶娱乐网址

.NET开发CAD入门之Hello,.netcadhello

2019-11-07 作者:云顶娱乐网址   |   浏览(82)

.NET开发CAD入门之Hello,.netcadhello

1、开辟意况介绍

使用.NET开荒CAD,在CAD贰零零柒以前的本子其实用的是ActiveX的议程支付的,并非真正含义上的.Net开辟。从CAD二〇〇五从头援助了.NET对其的成本,在装置CAD二零零六后头的本猴时都不得不安装.NET Framework,评释CAD本身也可以有风流倜傥部分成效是用.NET开采出来的。

2、开垦条件搭建

2.1:安装CAD的二零零七或越来越高版本。

2.2:安装.NET开荒工具(举个例子VS卡塔 尔(阿拉伯语:قطر‎。

2.3:开垦语言能够用归于.NET的C#、VB.NET、托管C++等。

3、使用VB.NET创建CAD开发的Hello项目

3.1:VS二零零七新建项目,选用VB-类库,钦命名称及路线,勾选“创造施工方案的目录”。

3.2:项目增加援引,acdbmgd.dll和acmgd.dll,dll文件路线(C:Program Files (x86)AutoCAD 2007)

 

3.3:视图-对象浏览器,浏览引用的次序集所提供的的类

3.4:添加Hello命令

'要添加命令必须导入AutoCAD .NET托管封装类
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Public Class Class1
    '添加CAD命令,必须用 Runtime提供的CommandMethod属性
    <CommandMethod("Hello")> _
    Public Sub Hello() '当Hello命令在CAD中被执行,Hello()函数就会被调用
        '获取当前活动文档的Editor对象,也就是命令行
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
        '调用Editor对象的WriteMessage函数在命令行上显示文本
        ed.WriteMessage("欢迎进入.NET开发AutoCAD的世界!")
        'CAD当前活动文档的Editor对象可以使用Application类来访问,创建Editor实例后,可以调用它的WriteMessage函数在命令行显示文本内容
    End Sub
End Class

3.5:调试

3.5.1:项目属性-调节和测验-运维外界程序,找到呼应的CAD版本

3.5.2:CAD装载托管程序,用NetLoad命令。在CAD命令行实施NetLoad命令,弹出【选取.NET程序集】的对话框,选拔编写翻译生成的Hello.dll文件。

3.5.3:在CAD命令行输入Hello并回车试行命令,会现身“未知命令”的唤醒。

因为啥之后切磋,消除那么些题指标不二法门是:截至调节和测验,项目属性-引用查看acdbmgd.dll和acmgd.dll的“复制本地”属性,将True改正为False。

再也调节和测量检验就可以。

 在这非常感激《Auto CAD VBA & VB.NET开采根底与实例教程》那本书对小编的帮助。 

作品内容纯属个人的一点主张和体会,由于水平有限,难免会有荒唐和疏漏,迎接商酌指正(邮箱:[email protected])。
查看商酌

1、开辟情形介绍 使用.NET开垦CAD,在CAD二零零七事先的版本其实用的是ActiveX的艺术支付的,并不是真的含义上的...

AutoCAD三遍开荒工具:一九八八年AutoLisp,1987年ADS,一九八八年DCL,一九九三年ADS-WranglerX,壹玖玖壹年ObjectA凯雷德X,1997年Active X Automation(COM卡塔 尔(英语:State of Qatar),一九九七年VBA,一九九八年Visual Lisp,贰零零陆年.net API(DLL卡塔尔.

动向和趋向:AutoCAD.net API(AutoCAD二零零五涌出,情势是用netload调用DLL插件卡塔 尔(英语:State of Qatar)

ACAD、AEnclaveX、VS、.NetFramework版本对应提到。

AutoCAD        VS      .NetFramework

2015        2012         4.5

2012-2014     2010/2012    4.0     也有用vs10开发在08cad运行        .net4.0有DLR

2010-2011     2008        3.5   cad10-12用户28%第二多 推荐 也有用vs08在cad08运行   .net3.0之后有LINQ,wpf,wf,wcf

上面未有wpf,LINQ,WCF,WF,所以不提议使用。

二零零六-二零零六     二〇〇七         2    cad客户37%最多    61位的有07和15,这些版本是能相称最多的,这是最低的渴求版本了。 VC从vs二零零五才有vc8

二零零一-二零零六     二〇〇四                客商27%  06年才开采出.netAPI,所以不能用低于06

是因为A福特ExplorerX和AutoCAD都是Autodesk集团出品的,所以版本号相近。

筛选版本对应最根本的是VS援引的DLL一定要和对象情状AutoCAD豆蔻年华致。其次是FrameWork版本。下面只是最好组合,但不是硬性供给。

 

 CAD官方:

VS CAD ARX Wiz
08 12
10 12/13
12 14/15/16
13 16

 office
vs2010    office 07 10
vs2012    office 10 13 
vs2015    office 10 13 16     

综合:
vs2010    cad12/13          office 07/10
vs2012    cad 14/15/16    office 10/13 
首选:vs10(C#,C++,VSTO)   cad13 office 10 
VS2015(C#)    office 10 

最低标准:  vs二零一零  framework3.5 cad二〇〇七  arx二零零五  sql 二〇一〇Highlander2 

经文景况:  win7   vs2008  cad二零一二/2  arx2012       

前卫情形:  win10  vs贰零壹叁   cad2016  
摩登版本:  framework 二〇一四  cad二零一六  sql 2015

因寻思到CAD一回开辟是为周边顾客选择,何况必需依照一定的CAD版本和framework版本,为尽量确认保证支付的软件能在超过50%平台利用,何况付出情状还相比较人性化,且有着大很多功能,选取杰出碰着开垦。倘诺个人或钦赐遭遇使用,则提议利用洋气情状,能够在win10如此通用平台下运营,仍可以够进入应用公司。

搭建际遇步骤:

1、 安装 ObjectARX SDK (Arx_All_2005卡塔 尔(阿拉伯语:قطر‎(里面有Interop的多少个lib,因为CAD私下认可地方不分明不好找。卡塔 尔(英语:State of Qatar)

2、 安装 autocad_2010-2012_dotnet_wizards  (开垦向导,免去手动操作的麻烦卡塔 尔(英语:State of Qatar)

措施有二种:①手动创立类公事dll,②用dotNet Wizard向导自动完结。提出向导方便急迅

办法生龙活虎:手动创立类库

1、 vs中新建类库。

2、 增添援引:

D:Program Files (x86)AutoCAD 2007     (经比较与ObjectAEscortX 贰零零陆里头的平等,所以用cad目录的)

AcCui.dll AcDbMgd.dll   AcMgd.dll     完结之后显得:AcCui  acdbmgd acmgd    

D:Program Files (x86)AutoCAD2007ObjectARX 2007inc

acax17ENU.tlb    axdb17enu.tlb        

姣好之后显得:  AutoCAD,       AXDBLib 

(注:AutoCAD 2016拆出一个AcCoreMgd.dll,当管理编辑器、发表与打字与印刷、定义AutoLISP命令和函数时引用。卡塔 尔(阿拉伯语:قطر‎

3、 把援用的文件属性,复制本地改为False

4、 在类型文件上右键属性—应用程序——指标框架.NETFramework3.5   输出类型:类库,

变化————目的平台:Any CPU

调治将养————运维外部程序:D:Program Files (x86)AutoCAD 2007acad.exe

5、 添加using,写代码。

//************** using的始末如下 **************//

//             Visula Studio2010             //

//*******************************************//

using System;

using System.Collections.Generic;

using System.Text;

//*******************************************//

//               Type Library               //

//*******************************************//

using Autodesk.AutoCAD.Interop; // AutoCAD 2008 TypeLibrary

using Autodesk.AutoCAD.Interop.Common; //AutoCAD/ObjectDBXCommon 17.0 Type Library

using Autodesk.AutoCAD.Customization;  //accui.dll

//*******************************************//

//               acdbmgd.dll               //

//*******************************************//

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.LayerManager;

using Autodesk.AutoCAD.GraphicsSystem;

using Autodesk.AutoCAD.GraphicsInterface;

using Autodesk.AutoCAD.Geometry;

using Autodesk.AutoCAD.DatabaseServices.Filters;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Colors;

//******************************************//

//--------------------------------------------//

//                 acmgd.dll               //

//------------------------------------------*//

using Autodesk.AutoCAD.Windows.ToolPalette;

using Autodesk.AutoCAD.Windows;

using Autodesk.AutoCAD.Publishing;

using Autodesk.AutoCAD.PlottingServices;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.ApplicationServices;

形式二:用wizards直接创建,能自动援引钦定dll,设置调节和测量试验cad路线,还是能够写八个cs文件,叁个下令的,叁个开发银行关闭的。

1、安装autocad_2010-2012_dotnet_wizards。

2、运行vs2010——新建c#--Autodesk—AutoCADplug-in,选择.NET Framework 3.5

3、ObjectARX路径:D:ProgramFiles (x86)AutoCAD 2007

CAD路径:D:Program Files(x86)AutoCAD 2007

选择 Interop Common ,  Interop ,   AcCui

姣好之后显得:AcCui  acdbmgd  acmgd      

Interop  Interop.common  (应该与acax17ENU.tlb,axdb17enu.tlb一样,与其他一次开拓格局彼那时候用,如VBA、LISP、AOdysseyX卡塔尔国

Autodesk.AutoCAD.Interop: C:windowsassemblyGAC_MSILAutodesk.AutoCAD.Interop17.0.54.0__eed84259d7cbf30bAutodesk.AutoCAD.Interop.dll

Autodesk.AutoCAD.Interop.Common:C:windowsassemblyGAC_MSILAutodesk.AutoCAD.Interop.Common17.0.54.0__eed84259d7cbf30bAutodesk.AutoCAD.Interop.Common.dll 

4、调试路线,援用复制本地false,Framework3.5, x86,64选Any CPU都早已暗中认可设置好,using必备的也写了,不需操作。

5、暗中认可七个类,叁个myCommands.cs   myPlugin.cs

myCommands.cs:用于命令方式

myPlugin.cs:软件张开或关闭时实行

helloworld操作代码:

[CommandMethod("hello")]

public static void hello()

{

            Editor ed =Application.DocumentManager.MdiActiveDocument.Editor;

           ed.WriteMessage("Hello World");

      }

以下是helloworld示例代码:

using System;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Geometry;

using Autodesk.AutoCAD.EditorInput;

//加快加载,加载程序时向来注册类中命令,不然搜索每种类中命令。

[assembly: CommandClass(typeof(WizardDotNetAPI.MyCommands))]

namespace WizardDotNetAPI

{

public class MyCommands

{

[CommandMethod("hello",CommandFlags.Session)]

public void hello()

          {

//****在这里地写大家的插件功用***//

Editor ed =Application.DocumentManager.MdiActiveDocument.Editor;

ed.WriteMessage("HelloWorld");

//这里大家写的效能就要用到各命名空间里的类、接口、方法,那是学习的首要//

  }

    }

}

自动运营代码:

using System;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Geometry;

using Autodesk.AutoCAD.EditorInput;

[assembly:ExtensionApplication(typeof(WizardDotNetAPI.MyPlugin))]

namespace WizardDotNetAPI

{

    publicclass MyPlugin : IExtensionApplication

{

        voidIExtensionApplication.Initialize()

        {

            //Initialize your plug-in application here

        }

        voidIExtensionApplication.Terminate()

        {

            //Do plug-in application clean up here

        }

    }

}

第二有的:编写翻译和调节和测量检验

(1卡塔尔国手动加载

点击生成>生成施工方案,或然 调节和测量检验——运转调节和测量试验。

启动AutoCAD——netload——选择D:DocumentsVisualStudio 2010ProjectsFirstCADdllFirstCADdll下的类文件.dll

Netload加载的次序不能够卸载,要想再调节和测量试验只能退出Autocad,然后再一次编写翻译、加载。

(2卡塔尔自动加载

美食做法 项目>属性>调节和测量检验>运转操作,选拔运行外界程序, AutoCAD.exe 。

命令行参数设置:/nologo /b"D:DocumentsVisual Studio 2010Projects自个儿的三个向导生成程序dotnet_wizards_helloworlddotnet_wizards_helloworlddotnet_wizards_helloworldbinDebugstart.scr"

start.scr 文件是温馨编辑的autocad运营脚本文件,该文件是文件文件,加多意气风发行文本:netload "D:DocumentsVisual Studio2010ProjectsFirstCADdllFirstCADdllbinDebugFirstCADdll.dll"

这么大家就足以直接运转调度了。

(3)调试

依照上述步骤运营后,不援助断点调节和测量试验,大家还应校勘acad.exe.config文件,该文件在D:Program Files (x86)AutoCAD 二零零五下,增添豆蔻梢头行<supportedRuntime version="v2.0.50727"/>内容。改正后的acad.exe.config.xml的内容如下:

<configuration>

   <startup>

<supportedRuntime version="v2.0.50727"/>

   </startup>

<!--All assemblies in AutoCAD are fully trusted so there's nopoint generating publisher evidence-->

   <runtime>       

<generatePublisherEvidence enabled="false"/>   

   </runtime>

</configuration>

小技巧:不关闭CAD调试。

Netload加载的主次不可能卸载,要想再调节和测量试验只可以退出Autocad,每一趟编写翻译都需重启AutoCAD,很麻烦,到英特网搜遍了,但未曾缓慢解决方式,都实属微软没支付这些职能,(看来就等着自己正太君斟酌施工方案吧,O(∩_∩)O~卡塔 尔(英语:State of Qatar)。经过自家不仅仅尝试找到风流倜傥种能够大约和Edit and Continue相配的取代方法如下:

1、按上边步骤实行调试,任性写叁个命令如Hello,在这里个命令里设上断点,然后在AutoCAD运维时调用这么些命令,就能够跻身VS的调节和测量试验页面,在此就足以进行改过了。每一趟须要纠正时用那一个hello命令。

其三部分:程序布署

AutoCAD二零一二事先,用注册表计划,之后用插件自动加载器。

①注册表计划:在注册表相应运维加载程序,能够用reg文件,也得以在先后里写(要引用Microsoft.Win32卡塔 尔(阿拉伯语:قطر‎,如2008的岗位为

[HKEY_LOCAL_MACHINESoftwareAutodeskAutoCADR18.0ACAD-8001:804Applicationsxxx]

description(描述卡塔 尔(阿拉伯语:قطر‎、loadctrls(加载调控加载格局卡塔尔国、loader(程序路线卡塔 尔(英语:State of Qatar)、managed(程序方式Ox01托管程序)

loadctrls:0x02:CAD运行时加载,0x04发令加载,0x10从不加载,0x20:显式加载

(CAD2007_六11个人在注册表中并未有牢固地点,像Interop同样难找,用搜到F3不停搜,结果要么没找到,所以以下代码未测量试验成功。卡塔 尔(阿拉伯语:قطر‎

reg文件内容如下:

[HKEY_LOCAL_MACHINE/SOFTWARE/Autodesk/AutoCAD/R17.0/ACAD-5001:804/Applications/yds]

"DESC本田UR-VIPTION"="加载自定义dll文件"

"LOADCTRLS"=dword:0000000c

"MANAGED"=dword:00000001

"LOADER"=" D:\Documents\testdll\hello.dll"

[HKEY_LOCAL_MACHINE/SOFTWARE/Autodesk/AutoCAD/R17.0/ACAD-5001:804/Applications/yds/Commands]

"ShowPalette"="ShowPalette"

5001表示autocad二零零五;LOADCT大切诺基LS表示描述装载的点子,值为12象征除非当发出指令时dll才被加载,当为2时启时就被加载(但是本人改成2,运转时依旧不曾自行加载卡塔尔;MANAGED的值只可以为1,表示它是个托管程序。

再统生龙活虎此注册表,后一次运维autocad二〇〇七就可机关加载相关的dll了,并且试行哪那件事命令了。

②:配置文件布署:插件自动加载器,ApplicationPlugins里放软件包xxx.bundle(包括contentsdll和PackageContents.xml卡塔尔国,CAD运维时,自动将PackageContents.xml中多少登记加载。

CAD目录地方:C:ProgramFilesAutodeskApplicationPlugins

XP笔者的文书档案地方:C:Documentsand SettingsAdministorApplication DataAutodeskApplicationPlugins

Win7笔者的文书档案地方:c:UsersAdministratorAppDataRoamingAutodeskApplicationPlugins

③用lisp语言调用“Netload”命令,自动加载dll。

① lsp文书内容如下:

(COMMAND "netload" " D:\Documents\testdll\hello.dll ")

(Command "hello")

首先句表示让autocad加载钦命的dll,用\,表示转义,幸免现身t等特殊符号。

其次句表示推行名称叫"hello"的一声令下。如此dll中有hello这一个命令,就可以立刻推行。

开行autocad二零零五 ,工具->Autocadlisp->加载应用程序 在弹出的窗体的起步组中丰硕上述lsp文件路经。

②此外能够定义二个下令调用,不直接开发银行。

(defun c:hello()

(COMMAND "netload" "D:\Documents\testdll\hello.dll")

(Command "hello")

(princ)

)

上边的hello是概念的函数名,上边的是dll里面包车型客车命令,第一遍试行hello,施行上面包车型客车lsp内容,同时中间有个hello是dll的通令,第2回施行就径直推行dll的授命了。

③另黄金年代种调用lsp方法(经测量检验失利,没找到原因):在AutoCAD安装目录找到D:Program Files (x86)AutoCAD 2007Supportacad2007.lsp

用记事本张开,在终极步向(下段代码第二行就能够,注意路线)

(command "netload" "D:Documentstestdllhello.dll")

完全代码是:

(arxload"vel.arx")

(if (not (=  (substr(ver) 1 11) "Visual LISP")) (load "acad2007doc.lsp"))

(command "netload" "D:Documentstestdllhello.dll")

;; Silent load.

(princ)

2. AutoCAD设置(首要,必须设置):工具-选项-文件-支持文件找寻路线-加多-浏览到hello.dll路线

④、用.NET程序加载.NET程序集,用到了微软的着力类库mscorlib中的System.Reflection命令空间。加载时黄金年代旦叁个函数Assembly.LoadFrom()能够了,速度非常的慢。此法可每一日后台加载.NET程序集,但托管的前后相继集不能卸载,直到关闭AutoCAD为至。方法源自Kean (C#),未测试:

源自:

usingAutodesk.AutoCAD.ApplicationServices;

usingAutodesk.AutoCAD.EditorInput;

usingAutodesk.AutoCAD.Runtime;

usingSystem.Reflection;

namespaceLoadModule

{

    public class Commands

    {

        [CommandMethod("MNL")]

         static public void MyNetLoad()

         {

             Document doc =

              Application.DocumentManager.MdiActiveDocument;

             Editor ed = doc.Editor;

             PromptStringOptions pso =

               new PromptStringOptions(

                 "n输入要加载的顺序集全路径: "

               );

             pso.AllowSpaces = true;

             PromptResult pr =ed.GetString(pso);

             if (pr.Status != PromptStatus.OK)

                 return;

             try

             {

                 Assembly.LoadFrom(pr.StringResult);

             }

             catch (System.Exception ex)

             {

                 ed.WriteMessage(

                   "n比非常小概加载程序集{0}: {1}",

                   pr.StringResult,

                   ex.Message

                 );

             }

         }

     }

}

提出:算法是骨干,什么语言,碰到,计划,都是外表,关键是学思维和算法。

参谋资料:

objectarx.net论坛:

波兰语手册:

合法地址:

官方教程二〇一四成本向导:

明经通道:

鲁班人[Ben'sBlog] 土木工程知识:
明经通道    
晓东CAD    
本子难题:

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100420;

书本:截至二〇一四.1.19,搜遍全数互连网,匈牙利(Hungary卡塔尔国语材质超级多,但掌握困难,汉语就以下四本书最切合.net API学习,别的全都看过,不行。只要学好以下四本书就够用了!
C#  AutoCAD.Net API

1.  AutoCAD VBA &VB.NET开垦幼功与实例教程(第2版)(C#版) 2012-6 88.00元 中夏族民共和国电力出版社 曾洪飞,卢择临,张帆先生 页 数621 AutoCAD 2011Visual Studio 2008  C#

2.  [深入显出AutoCAD.NET叁遍开荒].李冠亿 中夏族民共和国工业出版社 2013.2 定价78 带光盘  P485   以.net为主,结合各类三回开采情势。

3.  基于Visual C#的AutoCAD 开辟及其在工程中的应用 肖泽云 三峡大学  2009.4 P218网络版无书 用的ActiveX,但剧情是土木CAD贰回开辟,首要学习算法思路。

4.  AutoCAD .NET 开辟指南二〇一三 版 官方网址翻译互联网版,P629 孙成波贰零壹陆.2.8  AutoCAD .NET Developer's Guide2011 版翻译 ,官方权威手册,内容太全,太多,不合乎学习,境遇难点查找时用。
C++ ObjectARX
AutoCAD ObjectARX 支付幼功与实例教程 张帆、朱文俊 2014-06-01 VC++ 6.0和VS 2005 arx2002 cad2002
AutoCAD二〇一〇二次开辟实例教程(ObjectALX570X卡塔尔国  王文波 2012年7月 机械专门的学业用
公路工程CAD:

  1. 土木CAD技能 北大高校 任爱珠 张建平  二〇〇六.5 带光盘     P450    综合介绍CAD,A瑞鹰X为主,根基知识,首要学习图形学基本算法。
    2.公路Computer帮助理工科程师程 2002 朱照宏
    :理论,相比综合归纳。
    《道路勘探设计软件开荒与运用指南》 朱照宏 2004 数模部分好
    3.公路Computer协理设计 符锌砂
    4.道路路径CAD 朱照宏
    5.道路工程CAD 杨宏志 于娇 许金良 周艳
    6.道路与桥梁工程Computer绘图 许金良 黄安(英文名:huáng ān卡塔尔录
    道路CAD及其应用教程、工程实例
    公路工程CAD底蕴教程 郑益民
    微电脑协助工程 张叔辉
    公路CAD  张郃生

本文由正态分布X~N(μ,σ2 ) QQ2052702900写于二〇一六年一月二十八日,为近几天所学知识总括。

【注】全体文字,均为民用学习总括,仅当私家留存。若君不幸踏访,切勿嘲讽,确有可取之处,不妨随心借取,确有错漏的地方,还望多多指教。

vs二〇〇八低配版2.5G,优良,装完10G,实地度量安装c#,C++和VSTO共4.59G
二零一二 Ultimate精英型1.5G ,少了msdn文书档案 和 SQLEXPRESS,有在线安装部分。安装完不带文书档案3G,带文书档案13G
vs贰零壹陆大概要占30G。
假诺系统带.net framework这就能够少占点。不带会自动装上
开源CAD:
pudn下载: http://www.pudn.com/sourcecode/graph/CAD/download210_2.html          ;
书下载: 

本文由云顶娱乐手机官网发布于云顶娱乐网址,转载请注明出处:.NET开发CAD入门之Hello,.netcadhello

关键词: