AUTO CAD二次开发
- 格式:pdf
- 大小:131.54 KB
- 文档页数:5
实验一 ObjectARX .NET托管开发包的使用一、主要内容1、下载安装ObjectARX .NET托管开发包2、创建AutoCAD命令3、创建自定义用户菜单4、创建自定义用户工具条5、创建用户自定义窗体二、学时安排三、预习内容及要求回顾ObjectARX API和其托管API之间的对应关系;掌握不同API版本对应的开发版本;熟悉创建用户需求所要引用命名空间。
开发语言使用C#,AutoCAD版本2010,objectARX2010。
四、下载安装ObjectARX4.1下载ObjectARX不同的ACAD版本用不同的开发包及开发环境ACAD2000~ACAD2002 : VC++ 6.0ACAD2004~ACAD2006 : 2002ACAD2007~ACAD2009 : 2005ACAD2010~ACAD2011 : 2008ACAD2012~ : 2010下载ObjectARX在打开打开默认网页浏览器并浏览网站.的网页上,点击License & Download(许可&下载).填写必填字段并选择ObjectARX for AutoCAD 2010. 点击Submit(提交)按扭.在下载页, 点击Download Now(现在下载)使用下载管理器或点击Standard Download Method(标准下载方法)使用你的网页浏览器的默认下载方法下载.点击Save(保存)或用于保存文件到你的本地驱动器的选项。
指定下载ObjectARX SDK安装包文件存放的位置。
一旦安装包文件下载完成,就浏览你保存在本地的安装并双击它,安装向导将显示在ObjectARX <释放>对话框中, 指定一个新的安装位置或接受默认的安装位置。
点击Install(安装)按扭. 如果没有遇到问题,安装向导完成后关闭它安装ObjectARX向导和托管项目模板一旦ObjectARX SDK被安装,请使用默认目录c:\ObjectARX <Release>浏览它的安装文件夹。
基于C#的AutoCAD二次开发在建筑工程中的应用凌咏红,黄小微武汉理工大学计算机学院 (430070)E-mail:attachment@摘要:本文以C#为开发平台,介绍了AutoCAD二次开发技术AutoCAD ActiveX Automation,结合C#开发实例说明了运用AutoCAD ActiveX Automation进行开发的过程和方法。
关键词:ActiveX Automation; AutoCAD; C#; 二次开发1. 引言随着计算机技术的发展,计算机辅助设计已经广泛应用于各个专业的设计和研究领域。
在工程设计逐步实现自动化的今天, 通过AutoCAD二次开发技术,可以自动生成复杂的图形,从而减少了设计人员的手工操作,快速创建出符合用户要求的程序,提高设计人员的工作效率[1]。
在.NET平台中,通过在C#使用AutoCAD ActiveX技术进行AutoCAD二次开发,不但能有效地利用.NET平台的优点,也能节省开发人员的时间,以便他们能把更多的时间投入到工程设计中去。
2. AutoCAD ActiveX2.1 AutoCAD ActiveX 简介AutoCAD 通过 Automation 显示 AutoCAD 对象模型描述的可编程对象。
这些可编程对象可由其他应用程序创建、编辑和操作。
可以访问 AutoCAD 对象模型的应用程序是Automation 控制程序,任何类型的应用程序都可以访问 AutoCAD 中显示的 Automation 对象。
这些应用程序可以是独立的可执行文件、动态链接库 (DLL) 文件或某个应用程序[2]。
C#是微软公司在21世纪发展的新型编程语言,因其完全的面向对象、强大的类库支持等特性而深受广大程序员的喜爱[3]。
通过使用C#进行AutoCAD二次开发,不但能充分利用.NET平台的强大功能,进行良好的数据封装,以更好的方式进行面向对象的程序设计,同时也能更好的和其他应用程序进行数据交换。
AutoCAD 二次开发线型的定义与开发线型的定义格式在一个线型文件(.Lin)中科定义多种线型,每种线型的定义在线型文件中占两行,其格式为:* 线型名 [,线型描述]A ,定义线型的一组数据例:ACD.LIN 中的名为CENTER(中心线)的线型,其定义格式(如图)为:* CENTER ,Center ____ _ ____ _ ____ _ ____ _ ____ _ ____A , 1.25 , -.25 , .25 , -.25注:A 表示两端对齐方式1.25 表示绘制1.25个绘图单位-0.25 表示空白0.25个绘图单位0.25 表示绘制0.25个绘图单位-0.25 表示空白0.25个绘图单位0 表示绘制一个点第一行是线型名及注释,注意,线型名前“ * ”不能省略,方括号中的内容是可选项。
第二行中A表示对齐方式代码,是AutoCAD所支持的唯一线型对准方式,这种对齐方式能确保线型由长划开始,也由长划结束,定义线型的数据表示每段的长度,其中正值表示实线长度,负值表示空白长度,0表示一个点,每行总长不超过80字符。
图例中,CENTER 是该线型的名字,后面为 LATER、LTYPE 命令所显示的线型描述。
描述可以省略,但此时线型后不能再有逗号。
描述内容可以是点、空格和短线所组成的序列,也可以是对线型所实现的功能的说明,如“Use the linetype for center lines”(此线型表示中心线),用户对线型的描述(方括号中的内容),即“线型描述”,字段不能超过47个字符。
标准线型文件AutoCAD的标准线型文件在\AutoCAD\SUPPORT 目录下有两个:ACAD.LIN 和ACADISO.LIN。
(AutoCAD2008该目录为\AutoCAD 2008\UserDataCache\Support)这两个线型文件的内容完全相同,分三个部分:(1) AutoCAD 的线型定义文件(2) ISO 128 (ISO/DIS 12011)线型(3) 复合线型但两个文件中的AutoCAD线型文件和复合线型的单位不同,ACAD.以英寸为单位,而ACADISO.LIN以毫米为单位。
CAD二次开发教程汇总选择AutoLISP还是VBA?我听到许多关于这样的问题。
AutoLISP与VBA有什么不同呢?我要学习怎样二次开发AutoCAD,但我不能确定先学哪一个工具。
哪一个工具更好呢?简洁的回答是他们都好,你应当两者都学。
分析我的回答,你可以知道这不是最快的解决办法,但在你做出一个完整的决定前,一个完整的回答需要时间和更多的问题。
举个例子:你懂BASIC吗?如果你懂,那么VBA学起来会更快一些;如不懂BASIC,那么你学过其它的编程语言吗?如果你学的正好是FORTRAN或PASCAL的话,那也很好。
因为如果你已掌握了这两种语言,则VBA的学习将十分简单。
如果你一点儿也不懂程序设计语言,那么AutoLISP将会是适合你学习的语言。
如果你正好没有程序设计的知识和经验,那么在AutoCAD里你应当学习什么语言?这个问题很难回答。
这取决于你希望完成什么样的工作?每种语言都有其优点和缺点,AutoLISP擅长建立新命令和产生已有命令的连接。
VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。
AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方,除非你已真正懂得这些工具的好处,否则,很难回答你应该选择哪一个,但你应当知道你想完成什么和允许完成什么,因为它将引导你向正确的解决方法前进。
稍后,你会发现这一简洁的回答是恰当的,你将会学习两种语言,你要做的一些事,可以在AutoLISP中用十分简单的几行代码来解决。
另一方面,你会发现VBA提供了一些最简捷的应用程序解决方案。
例如,建立一个复杂的包括许多对话框的应用,AutoLISP支持对话框,但是不如VBA支持的程度强,同时,在AutoCAD中一个任务的情况下,VBA提供在对象级别上访问AutoCAD系统,但它对AutoCAD的一些基本命令的支持性并不是很好,而AutoLISP在这一点上却做的很好。
常用的CAD二次开发语言:1 AutoLISP 全名是LIST Processing Language,LISP是List Processor(表处理程序)的缩写,cad系统的第一代开发工具,是一种嵌入在AutoCAD内部的编程语言,是低版本AutoCAD的首选编程语言。
它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行。
其缺点是继承了LISP语言的编程规则而导致繁多的括号。
2 ADS 全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,丰富和保留了autolisp语言的功能,是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,不包含于cad内部,包含c语言的全部功能。
ADS速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理。
3 ObjectARX 崭新面向对象的开发AutoCAD应用程序的工具,以为编程语言,提供可与AutoCAD直接交互的开发环境。
可以与autolisp和ADS应用程序协同工作。
ObjectARX也没有包含在AutoCAD中,可在AutoDESK公司网站中去下载。
二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。
ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有一些重要组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展。
ObjectARX还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。
基于C#的AutoCad⼆次开发--第⼀章--环境搭建及⼏种⼆开模式Autocad的开发形式包括visual lisp、objectarx、vba、.Net等等,其中基于.Net平台的C#语⾔学习曲线较为平缓,使⽤该语⾔进⾏AutoCad 的⼆次开发效率较⾼。
本⽂主要记录了使⽤C#进⾏AutoCad⼆次开发的环境搭建和⼏种⼆次开发的模式。
学习资料:1. Autocad .Net开发指南(中⽂版),此为欧特克公司提供的官⽅⽂档;2. AutoCad官⽹,在开发⼈员板块可以查阅官⽅提供的各种类库;3. b站的AutoCad_C#⼆开视屏,链接如下: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,从⽽执⾏操作。
第二讲AUTOCAD及其二次开发第一节AutoCAD二次开发特性2.1.1 AutoCAD开发系统概述AutoCAD系统是美国Auto desk公司研制开发的通用绘图系统,自1982年问世以来,到目前为止已经发展到第15版(后更名为AutoCAD2000版)。
该系统不仅具有丰富的图形编辑功能和良好的用户界面,而且性能价格比合理,深受广大工程技术人员的普遍欢迎,目前已经在全世界广泛使用。
AutoCAD系统之所以受到广泛的欢迎,不仅是因为它功能强大、支持平台多、用户界面良好,更主要的是它具有开放的体系结构和完善的开发系统,能够提供各种编程工具和接口,满足不同层次用户的需要。
用户利用AutoCAD的开发系统,结合应用实际进行二次开发,就可以开发用户自己的专用软件。
Auto desk公司一开始就十分注重AutoCAD开发工具的开发研究,早在AutoCAD 2.17版中就开始引入LISP语言,形成具有AutoCAD系统特色的Auto LISP语言,这就是AutoCAD 系统的第一代开发工具。
Auto LISP是一个嵌人AutoCAD内部的LISP编程语言,具有人工智能性,是LISP语言和AutoCAD有机结合的产物,是一种适合于进行CAD项目开发的非结构化设计语言。
Auto LISP针对AutoCAD增加了许多功能,例如将Auto LISP程序和AutoCAD的命令透明地结合起来,使程序和绘图完全融为一体,直接访问AutoCAD的图形数据库,为实时修改图形、实现交互式绘图提供了极大的方便。
Auto LISP是开发AutoCAD 图形软件的强有力工具。
在随后的几个版本中,Auto LISP语言不断进行扩充和完善。
由于Auto LISP语言是一种解释性语言.在装入运行的过程中不能进行编译和连接,降低程序的运行速度,所以在一定程度上制约了AutoCAD系统开发性能的提高。
20世纪80年代末期,AutoCAD系统在R11版中,除丰富和保留Auto LISP语言的功能外,又引入了C语言开发工具ADS。
名称注释与操作方法图层管理孤立物体所在层AS 输入命令按空格选择要显示的图层,未选择的图层将会关闭关闭非当前层FA 先选择好所要显示的图层,输入命令按空格冻结物体所在层FV 选择需要关闭的图层,输入命令按空格解冻物体所在层TA 解开所有已经关闭的图层,输入命令按空格&清理无用图层图块EA 没有被使用过的图层会被清理出图层管理器,输入命令按空格&恢复所有层RS 恢复被清理出图层管理器的图层,输入命令按空格绘图命令画直线 A 输入命令按空格画圆 C 输入命令按空格椭圆EL 输入命令按空格矩形REC 输入命令按空格多线ML 输入命令按空格,输入S可以修改线之间的距离填充H 输入命令按空格文本MT 输入命令按空格偏移R 输入命令按空格射线RA 输入命令按空格构造线XF 输入命令按空格,输入V或H画竖直线或水平线画剖视符号SS 输入命令按空格,输入字母(A,B,C……)再按空格选择剖视面技术要求注解ZT 输入命令按空格,选择合适位置点击鼠标左键DXF输出DXF 将图元层选择为0层,关闭非当前图层,输入DXF命令选择要转换的图层按空格,输入零件名称保存修改命令移动FD 输入命令按空格或先选择图形再输入命令空格复制CC 输入命令按空格或先选择图形再输入命令空格镜像FG 输入命令按空格或先选择图形再输入命令空格修剪TR阵列AR旋转RT删除 E分解X延伸EX拉伸S缩放SC修改文本ED填写图框AD格式刷G复制成块CV原地造块XV参考式旋转RR单点剪断BF多重复制AA快速倒圆角FR删除式偏移ES批量修改孔径BD删除式镜像ER拷贝式旋转CR修改多义线宽度EW断线连接WW检查标注尺寸是否修改DMC 输入命令按空格后框选图形后按空格,括号内显示的值为实际值尺寸标注角度标注DA直线标注DF斜线标注DG直径标注DD圆弧标注DR测量命令LI圆孔自动标注CF 输入命令按空格两次框选图形后按空格,在图框上选择放置点圆孔自动直径尺寸标注QC标识相同孔径的图孔BT带箭头引出线LE功能命令插入A3图框A3插入A4图框A4插入明细栏TT计算器CM设定捕捉模式DS/SE自动填写图框WF恢复上一个视图V后退U(打印文件)CTRL+P攻芽孔TAP自动标注CAD剖视图标注SCT写块W常用图层的命令线形颜色代号1.零件图元放在Q层;颜色白色02.折弯线放在BE层;颜色洋红色bend3.标注线放在DI层;颜色青色dim4.文本层放在TE层;颜色绿色text5.中心线CE 颜色红色center6.工艺孔/螺柱孔NC 颜色青色NCT。
使用开发AutoCAD 2010 ,动态拖动类的封装代码Imports SystemImports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.DatabaseServicesImports Autodesk.AutoCAD.EditorInputImports Autodesk.AutoCAD.GeometryImports Autodesk.AutoCAD.GraphicsInterfaceImports Autodesk.AutoCAD.RuntimeImports System.DrawingImports System.Windows.Forms''' <summary>''' 封装简化Jig操作,函数式实现DrawJig''' </summary>''' <remarks></remarks>Public Class DragInherits DrawJigPrivate Delegate Function AcquireMod(prompts As JigPrompts) As SamplerStatus Private Shared _rstAsPromptResultPrivate Shared _point3d As Point3dPrivate Shared _PointOptionsAsJigPromptPointOptionsPrivate Shared _double As DoublePrivate Shared _DistanceOptionsAsJigPromptDistanceOptionsPrivate Shared _AngleOptionsAsJigPromptAngleOptionsPrivate Shared _cur As PointPrivate Shared _StringOptionsAsJigPromptStringOptionsPrivate Shared _callBack As Action(Of Drag.Result)Private Shared _acquireModAsDrag.AcquireModProtected Sub New()End SubProtected Overrides Function WorldDraw(draw As WorldDraw) As BooleanDrag._callBack(New Drag.Result(Drag._rst, draw))Return TrueEnd FunctionProtected Overrides Function Sampler(prompts As JigPrompts) As SamplerStatus Return Drag._acquireMod(prompts)End Function#Region "定义各种Jig模式"Private Shared Function GetPoint(prompts As JigPrompts) As SamplerStatus Dim rst As PromptPointResult = prompts.AcquirePoint(Drag._PointOptions) Drag._rst = rstIf rst.Value<> Drag._point3d ThenDrag._point3d = rst.ValueReturn SamplerStatus.OKElseReturn SamplerStatus.NoChangeEnd IfEnd FunctionPrivate Shared Function GetDistance(prompts As JigPrompts) As SamplerStatusDim rst As PromptDoubleResult = prompts.AcquireDistance(Drag._DistanceOptions)Drag._rst = rstIf rst.Value<>Drag._double ThenDrag._double = rst.ValueReturn SamplerStatus.OKElseReturn SamplerStatus.NoChangeEnd IfEnd FunctionPrivate Shared Function GetAngle(prompts As JigPrompts) As SamplerStatus Dim rst As PromptDoubleResult = prompts.AcquireAngle(Drag._AngleOptions) Drag._rst = rstIf rst.Value<>Drag._double ThenDrag._double = rst.ValueReturn SamplerStatus.OKElseReturn SamplerStatus.NoChangeEnd IfEnd FunctionPrivate Shared Function GetString(prompts As JigPrompts) As SamplerStatus Dim rst As PromptResult = prompts.AcquireString(Drag._StringOptions) Drag._rst = rstDim cur As Point = Control.MousePositionIf Control.MousePosition<>Drag._cur ThenDrag._cur = curReturn SamplerStatus.OKElseReturn SamplerStatus.NoChangeEnd IfEnd Function#End Region''' <summary>''' 执行Jig拖动''' </summary>''' <param name="options">选项</param>''' <param name="callFun">回调函数</param>''' <returns></returns>''' <remarks></remarks>Public Shared Function StartDrag(options As JigPromptOptions, callFun As Action(Of Drag.Result)) As PromptResultIf TypeOf options Is JigPromptPointOptions Then_PointOptions = (TryCast(options, JigPromptPointOptions))_acquireMod = New AcquireMod(AddressOfGetPoint)ElseIfTypeOf options Is JigPromptDistanceOptions Then_DistanceOptions = (TryCast(options, JigPromptDistanceOptions))_acquireMod = New Drag.AcquireMod(AddressOfGetDistance) ElseIfTypeOf options Is JigPromptAngleOptions Then_AngleOptions = (TryCast(options, JigPromptAngleOptions))_acquireMod = New AcquireMod(AddressOfGetAngle)ElseIfTypeOf options Is JigPromptStringOptions Then_StringOptions = (TryCast(options, JigPromptStringOptions))_acquireMod = New AcquireMod(AddressOfGetString)End If_callBack = callFunAutodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.Drag(New Drag())_callBack(New Result(_rst, Nothing))Return _rstEnd Function''' <summary>''' 执行Jig拖动[Point模式]''' </summary>''' <param name="msg">提示信息</param>''' <param name="kwd">关键字</param>''' <param name="callFun">回调函数</param>''' <returns></returns>''' <remarks></remarks>Public Shared Function StartDrag(msg As String, kwd As String, callFun As Action(Of Drag.Result)) As PromptResultReturn StartDrag(New JigPromptPointOptions(msg, kwd), callFun)End Function''' <summary>''' 执行Jig拖动[Point模式]''' </summary>''' <param name="msg">提示信息</param>''' <param name="callFun">回调函数</param>''' <returns></returns>''' <remarks></remarks>Public Shared Function StartDrag(msg As String, callFun As Action(Of Drag.Result)) As PromptResultReturn Drag.StartDrag(New JigPromptPointOptions(msg), callFun)End Function''' <summary>''' 回调函数的参数''' </summary>''' <remarks></remarks>Public Class ResultPrivate rstAsPromptResultPrivate draw AsWorldDrawPublic ReadOnly Property PromptResult() As PromptResult GetReturn rstEnd GetEnd PropertyPublic ReadOnly Property Geometry() As Geometry GetReturn Me.draw.GeometryEnd GetEnd PropertyPublic ReadOnly Property Point() As Point3dGetReturn Drag._point3dEnd GetEnd PropertyPublic ReadOnly Property Dist() As Double GetReturn Drag._doubleEnd GetEnd PropertyPublic ReadOnly Property Angle() As Double GetReturn Drag._doubleEnd GetEnd PropertyPublic ReadOnly Property Status() As PromptStatus GetReturn rst.StatusEnd GetEnd PropertyPublic ReadOnly Property [String]() As String GetReturn rst.StringResultEnd GetEnd PropertyFriend Sub New(promptResult As PromptResult, worldDraw As WorldDraw) rst = promptResultdraw = worldDrawEnd SubPublic Sub DrawEnt(entity As Drawable)If draw IsNotNothing Thendraw.Geometry.Draw(entity)End IfEnd SubEnd ClassEnd Class测试代码:Imports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.DatabaseServicesImports Autodesk.AutoCAD.EditorInputImports Autodesk.AutoCAD.GeometryImports Autodesk.AutoCAD.GraphicsInterfaceImports Autodesk.AutoCAD.RuntimeImports YJSCADPublic Class Class1<CommandMethod("t")> _Public Sub tt()Dim cir As New Circle(New Point3d(), Vector3d.ZAxis, 10.0)If Drag.StartDrag(vbCrLf& "指定圆中心点", Sub(rst As Drag.Result)cir.Center = rst.Pointrst.DrawEnt(cir)End Sub).Status = PromptStatus.OK ThenDim result As PromptResult = Drag.StartDrag(New JigPromptDistanceOptions(vbCrLf& "指定圆半径"), _Sub(rst As Drag.Result)cir.Radius = If((rst.Dist = 0), 0.000001, rst.Dist)rst.DrawEnt(cir)End Sub) If result.Status = PromptStatus.OK ThenShareTool.AddToModelSpace(cir)End IfEnd IfEnd SubEnd Class。
目录实验一 ObjectARX .NET托管开发包的使用 (2)一、主要内容 (2)二、学时安排 (2)三、预习内容及要求 (2)四、下载安装ObjectARX (2)4.1下载ObjectARX (2)4.2 安装ObjectARX向导和托管项目模板 (2)4.3 Hello World程序创建 (3)4.4 创建上下文菜单 (6)4.5 创建弹出式下拉菜单 (7)4.6 创建工具条 (10)4.7 创建有模态和无模态对话框 (13)4.8 修改状态栏 (17)4.9 创建进度条 (18)实验二 AutoCAD基本图形对象创建与编辑 (20)一、主要内容 (20)二、学时安排 (20)三、预习内容 (20)四、基本图形对象创建与编辑 (20)基本图形对象创建:添加引用 (20)4.1 创建直线对象 (21)4.2 创建圆 (22)4.3 创建圆弧 (23)4.4 创建多段线 (24)4.5 创建椭圆 (27)4.6 样条曲线 (28)4.7 创建面域 (29)4.8 创建文字 (32)4.9 创建填充 (34)4.10 创建尺寸标注 (35)实验三 ObjectARX .NET托管开发包的使用 (42)一、主要内容 (42)二、学时安排 (42)三、预习内容 (42)四、ObjectARX .NET托管开发包的使用过程 (42)4.1创建块定义及插入块参照 (42)4.1.1 创建块定义 (43)4.1.2 插入块参照 (44)4.2创建带有属性的块定义及插入带有属性的块参照 (45)4.2.1 创建带有属性的块定义 (45)4.2.2 插入带有属性的块参照 (47)实验四用户交互、选择集及扩展属性 (49)一、主要内容 (49)二、学时安排 (49)三、预习内容 (49)四、实验步骤 (49)引用: (49)4.1 用户交互 (49)4.1.1 读入字符串 (50)4.1.2读入Double型数据 (50)4.1.3 读入Point (51)4.1.4 拾取实体 (51)4.1.5 打开dwg文件 (52)4.2 选择集 (54)4.2.1 获得PickFirst选择集 (54)4.2.2 在图形区域中选择对象 (55)4.2.3 添加或合并多个选择集 (56)4.2.4 定义选择集过滤规则 (57)4.2.5 从选择集中移除对象 (58)4.3 扩展属性 (59)实验一 ObjectARX .NET托管开发包的使用一、主要内容1、下载安装ObjectARX .NET托管开发包2、创建AutoCAD命令3、创建自定义用户菜单4、创建自定义用户工具条5、创建用户自定义窗体二、学时安排:2学时三、预习内容及要求回顾ObjectARX API和其托管API之间的对应关系;掌握不同API版本对应的 开发版本;熟悉创建用户需求所要引用命名空间。
一、什么是AutoCAD二次开发:针对自己使用要求,优化,改善
软件使用功能、方式,用编程语言在CAD基础上写的程序二、应用背景:设计中一般都采用AutoCAD等设计软件,在复
杂CAD问题或特殊用途的设计设计中,依据原有软件的功能往往难以解决问题,在此情况下,只是会适用软件的基本功能是不够的,根据客户的特殊用途进行软件的客户化定制和二次开发,往往能够大大提高企业的生产效率和技术水平。
VBA即Mcrosoft office中的Visual Basic for Applications,它被集成到AutoCAD2000中。
VBA为开发者提供了一种新的选择,也为用户访问AutoCAD2000中丰富的技术框架打开一条新的通道。
VBA和AutoCAD2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。
通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。
(4)通过系统对话框设置某些路径。
这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率
(5)面向对象,让用户能够根据自己的需要编写相关程序,进行二次开发。
五、AUTOCAD的历史:
六、AUTOCAD二次开发技术的应用领域:AUTOCAD二次开发技术广泛应用于机械、电子、建筑等领域、为标准件、常用件的参数化设计提供了强有力的支持。