AutoCAD二次开发培训_讲义

合集下载

AutoCAD官方二次开发教程

AutoCAD官方二次开发教程

第 1章 Hello World: 工程的创建在这一章中,我们将不使用ObjectARX向导来创建一个新的工程。

我们将使用Visual Studio .NET来创建一个新的类库工程。

通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。

这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。

当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。

1) 启动Visual ,选择”文件>新建>工程”(File> New> Project)。

在新建工程对话框中选择工程类型为”Visual Basic 工程”,然后选择”类库”模板,在工程名字框中输入”Lab1”,然后选择工程存放的位置。

点击确定按钮来创建工程。

2) 在工程的Class1.vb文件中,一个公有类“Class1”已经被系统自动创建了。

接下来向这个类加入命令。

要加入命令,你必须使用AutoCAD .NET托管封装类。

这些托管封装类包含在两个托管模块中。

要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择”添加引用”。

在弹出的”添加引用”对话框中选择”浏览”。

在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为C:\Program Files\AutoCAD 2006\),在这个目录下找到“acdbmgd.dll”然后选择并打开它。

再一次选择”浏览”,在AutoCAD 2006的安装目录下找到“acmgd.dll”并打开它。

当这两个组件被加入后,请单击”添加引用” 对话框中的”确定”按钮。

正如它们的名字所表示的,acdbmgd.dll包含ObjectDBX 托管类,而acmgd.dll包含AutoCAD托管类。

3) 使用对象浏览器(Visual 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。

AutoCAD软件的二次开发

AutoCAD软件的二次开发
例:_$(ssget “X”) 说明:返回一个包含图形文件中所有对象的选择集。
6. 实体名:为图形对象指定的16进制的数字标识。通过该标识,可找到实体在 图形数据库中的位置,并可进一步对其进行编辑。
例:_$(entlast) 说明:返回最后一个加入图形文件的对象的实体名
第110页/共54页
7. 2 AutoLISP程序设计语言
表的长度:表中的元素个数。
例:(1.0 1.0 0.0) (“this” “that” “the other”) (1 “ONE”) ((a b) c (c d))
长度: 3
3
2
3
长度:(+ 142 3)
(sin (*20.5 pi))
用表可以方便地构造出复杂的数据结构。
5. 选择集:一个或多个图形对象的集合,用户可通过AutoLISP程序向选择集添 加或者从选择集中删除图形对象。
第65页/共54页
7. 1 VisualLISP简介
五、VisualLISP: Autodesk公司为增强AutoLISP程序开发能力而设 计的软件工具。
Visual LISP集成开发环境的组成部分:
语法检查器:可识别错误的AutoLISP结构和内部函数调用中不合适的参数。 文件编译器:可改善程序的执行速度并提供一个有效的开发平台。
Heap:25000 bytes Stack(栈区域):存储函数的变量和局部结构。标准表中嵌套的表越多,函数执行的 递归次数越多,该区域所占的空间越大。
Stack:20000 byets
注意:AutoCAD平台上运行AutoLISP时,用户不能扩展系统的堆或栈空间
2. 内存出错提示信息
堆空间用光:Insufficient node space。 没有足够的内存装载AutoLISP:Insufficient memory-AutoLISP disabled。

第4章 AutoCAD的二次开发

第4章  AutoCAD的二次开发

第1节 AutoLisp编程
一、工厂使用AutoLisp开发的优点
二、 AutoLisp的主要的基础 1。表 表是用“()”括起来的一组数,是AutoLisp的基本 语法单元。 2。符号 代表函数名、常量或变量 如(Setq Pt (list 2 6))
3。加载AutoLisp程序 步骤: 打开记事本,书写AutoLisp程序 保存文件,注意文件类型一定要选为所有 文件,保存文件名,文件后缀为.lsp 运行AutoCAD 在命令栏里加载Lisp文件,格式为 (Load”C:/lisp/ibox.lsp”) 执行命令
Autolisp是一种在Auto CAD内使用的语言,
是LISP语言的一个子集。用AutoLisp编辑 的程序可以定义变量,对数据进行处理和 作图,并可自定义函数。 Autolisp是目前研 究和开发的主要工具。它的主要特点是实 现参数化绘图 ADS的编程界面可以使用户用C语言来实现 Auto CAD的用户化,可以编制下拉菜单、 对话框等。
(Command "RECTANG" "f" ir ip (List (+ ix iw)(+ iy ih)))
(PrinC ”\n”) )
2。三角形 (Defun c:TRIANG() (Setq p1 (Getpoint "\nEnter first point of triangles:")) (Setq p2 (Getpoint "\nEnter second point of triangles:")) (Setq p3 (Getpoint "\nEnter third point of triangles:")) (Command "LINE" P1 P2 P3 "C") )

AutoCAD高级绘图员培训——二次开发基础

AutoCAD高级绘图员培训——二次开发基础

图 2-3
“user.lin”文件
5
AutoCAD 高级绘图员培训——二次开发基础
2012 年 5 月
*Arrow,Arrow -->-->--> A,.25,-.05,[">",STANDARD,S=.1,R=0.0,X=-.1,Y=-.05],-.1 (3) 进入 AutoCAD, 载入线型文件 “user.lin” , 即可使用该文件中定义的 “INTERVAL” 和“ARROW”线型,图 2-4 显示了使用这两种线型的例子。
3
AutoCAD 高级绘图员培训——二次开发基础
2012 年 5 月
2.2.2 简单线型的定义
简单线型是由短划线(Dash) 、点(Dot)和空格(Space)组合而成。在简单线型的规 格说明中,正数表示其值为长度的短划线,负数表示其绝对值为长度的空格,0 表示点。例 如在 BORDER 的规格说明“A,.5,-.25,.5,-.25,0,-.25”中,.5 表示 0.5 个单位长的短 划线,-.25 表示 0.25 个单位长的空格,0 表示一个点。
图 2-4
两种自定义线型
说明 使用“-linetype”命令,如果该线型己在库文件中存在,则系统会提示用户该线 型已经在库文件中定义, 并询问用户是否重新定义。 用户可对其重新定义来实现对已有线型 的修改。
2.3 2.3.1
填 充 图 案 简介
使用“bhatch”命令绘制填充图案,同线型一样,AutoCAD 中的填充图案也是以图案文 件(也称为图案库)的形式保存的,其类型是以“.pat”为扩展名的 ASCII 文件。可以在 AutoCAD 中加载已有的图案文件,并从中选择所需的填充图案;也可以修改图案文件或创 建一个新的图案文件。 同线型文件一样,在 AutoCAD 版本中也提供了两个图案文件,即 AutoCAD 主文件夹 的“SUPPORT”子文件夹中的“acad.pat”和“acadiso.pat” ,这两个文件分别包含有 69 种 填充图案(包括 8 种 ANSI 图案,14 种 ISO 图案和 47 种其它预定义图案) 。以“acad.pat” 文件为例来介绍填充图案的定义和定制。

5AutoCAD高级培训第五讲——AutoCAD二次开发基础

5AutoCAD高级培训第五讲——AutoCAD二次开发基础

AutoCAD高级培训第五讲——AutoCAD二次开发基础(AutoLISP 语言编程概述)二次开发:采用编程的方法扩充AutoCAD的功能,如增加新的绘图命令、新的修改命令等。

例如,AutoCAD中本来没有绘制正弦曲线(函数形式为Y=Asin(X+ω))命令,通过编程开发一个AutoCAD的新命令,使用户可以使用该命令实现绘制正弦曲线,在命令的交互过程中,系统提示用户依次输入所需要的参数:坐标原点、振幅、周期数、初相角等。

常用二次开发工具:AutoLISP语言(运行于VisualLISP集成开发环境)、ActiveX、VBA、JAVA、C、ObjectARX等需要掌握:AutoLISP语言(高级证书所必需)一、AutoLISP 语言简介1.LISP——List Processing Language2.AutoLISP:嵌套于AutoCAD内部,将LISP与AutoCAD有机结合,是AutoCAD开发的重要工具。

3.AutoLISP的功能:♦可直接调用AutoCAD的几乎全部命令♦具备一般高级语言的结构和功能:顺序、条件分支、循环等结构;I/O、数值计算、逻辑判断、数据类型转换等功能♦具备一般高级语言所没有的强大的图形处理功能4.AutoLISP的特点♦仅能以解释方式运行于AutoCAD内部(解释性程序设计语言)♦程序的全部内容均以函数形式给出,没有语句的概念,也没有其他语法结构,执行程序就是执行一系列的函数调用,也称“函数语言”♦把数据和程序统一表达为表结构,程序即数据,数据即程序,故也称为“表语言”♦运行程序就是对函数求值的过程,在此过程中实现函数的功能例如,下面的内容就是一个完整的AutoLISP程序:(defun math()(setq x 10)(setq y 20)(+ x y)(* x y))该程序运行的结果是:200二、AutoLISP的数据类型♦整型数♦实型数♦符号(SYM)♦字符串(STR)♦表(LIST)♦文件描述符(FILE)♦AutoLISP的内部函数(SUBR)♦AutoCAD的选择集(PICKSET)♦AutoCAD的实体名(ENAME)♦函数分页表(PAGETB)基本应用:涉及用蓝色显示的6种,前4种称为“原子”。

第三章 AutoCAD二次开发

第三章 AutoCAD二次开发

第三章 创建和编辑二维图形对象 一、VBA
Hale Waihona Puke 3.1 直线 Public Sub MacroDemo() Dim doc As AcadDocument Set doc = ThisDrawing.Application.Documents.Add() MsgBox "Hello,Welcome to Autocad VBA" Set doc = ThisDrawing.Application.Documents.Add() Dim ptstart(0 To 2) As Double Dim ptend(0 To 2) As Double ptstart(0) = 1: ptstart(1) = 1: ptstart(2) = 0 ptend(0) = 100: ptend(1) = 100: ptend(2) = 0 ThisDrawing.ModelSpace.AddLine ptstart, ptend End Sub
数据库程序
• Private Sub CommandButton1_Click() • Dim cn As ADODB.Connection • Dim Constr As String • Set cn = New ADODB.Connection • • cn.CursorLocation = adUseClient • cn.Provider = "Microdoft.Jet.OLEDB.4.0;" • Constr = "Data source=c:\db1.mdb" • • cn.Open • End Sub
3.2 圆 Dim ptCen(0 To 2) As Double ptCen(0) = 50: ptCen(1) = 50: ptCen(2) = 0 Set acaddoc = acadapp.ActiveDocument.ModelSpace.Ad dCircle(ptCen, 32)

AutoCAD二次开发_官方PPT文档

AutoCAD二次开发_官方PPT文档

梁晓冬
培训目标
AutoCAD
培训内容主要是

Raptor
ObjectARX基础知识 如何使用 ObjectARX 如何在以后的实际工作中独立的获取相关资源和帮助
不是

如何使用 C++ 对所有的ObjectARX API做完整的讲述
© 2008 Autodesk
4
Autodesk 系列产品开发培训教程
如何得到ObjectARX
AutoCAD
Raptor
SDK(
Software Development Kits)
免费下载

Autodesk 网站

/objectarx

ADN 网站,检索ObjectARX


13
AutoCAD 的API和IDE
AutoCAD

API
ObjectARX
COM
Raptor
Automation (VB, Java, Delphi, etc.)
AutoLISP
.NET
托管 API

IDE
Visual
Visual
LISP
Basic, Applications Edition (VBA)
16
AutoCAD API 性能比较
S.0.58 API Performance
100.00 90.00 80.00 70.00
Seconds
60.00 50.00 40.00 30.00 20.00 10.00 0.00
Total Create 1000 2dPolylines Add XData to 1000 Entities Update 1000 Circles Create 1000 lines

二次开发培训大纲

二次开发培训大纲

AUTOCAD二次开发培训大纲一、熟悉Visual C++编程。

(该项不进行培训)。

二、简单学习AutoCAD环境、绘图。

如熟悉AutoCAD可跳过此环节。

三、学习AutoLispAutoLisp 表达式AutoLisp 数据类型AutoLisp 词法结构及函数规则AutoLisp 程序文件AutoLisp 变量AutoLisp 字符串处理AutoLisp 表处理AutoLisp 函数处理AutoLisp 出错处理AutoLisp 选择集处理AutoLisp 实体处理四、学习ObjectArxObjectArx基础知识1. ObjectArx定义的数据类型2. 结果缓冲区和结果类型码3. ObjectArx公共函数(全局函数)的返回值4. ObjectArx定义的其它代码(一些宏定义)5. 定义外部函数,acedDefun、addCommand6. 调用AutoCAD命令7. 如何调用外部函数(命令) acedInvoke acedCommond()8. 向外部函数传递参数9. 链表的使用与管理10. 在程序中加载其它应用程序11. 程序运行出错时的处理使用AutoCAD资源1. 全局函数2. 使用AutoCAD系统变量3. 查询或改变AutoLisp变量的值4. 查找文件5. 使用对象捕捉6. 使用图形几何信息7. 确定文本外框尺寸8. 数据类型转换与单位转换9. 使用字符管理函数10. 坐标系变换11. 使用通配符对实体、选择集和符号表的操作。

(用全局函数)1. 实体名称与实体表示2. 获取实体的定义数据3. 修改实体4. 创建实体5. 扩展数据的处理6. 构造选择集的方法7. 使用过滤器构造选择集8. 操作选择集如何创建一个ARX应用程序1. AutoCAD接口函数介绍2. 注册AutoCAD新命令数据库和数据库对象1. 数据库初始化2. 创建和组织数据库3. 保存数据库4. 插入一个数据库5. 设置当前数据库值6. 打开和关闭数据库对象实体对象1. 实体简介2. 实体的共同属性3. 实体的共同函数4. 简单复杂实体容器对象1. 符号表2. 字典3. 扩展记录从AcDbObject 派生新类《高级》从AcDbEntity 派生新类《高级》反应器《高级》使用AcGi 库《高级》使用AcGe库1. AcGe层简介2. 基本几何类。

6AutoCAD高级培训第六讲——AutoCAD二次开发示例讲解

6AutoCAD高级培训第六讲——AutoCAD二次开发示例讲解

AutoCAD高级培训第六讲——AutoCAD二次开发示例(Visual LISP集成开发环境简介)一、Visual LISP概述Visual LISP简称VLISP,是为加速AutoLISP程序开发而设计的软件工具,它提供了一个完整的集成开发环境,包括编译器、调试器和其他工具,它可以显著地提高自定义AutoCAD的效率。

VLISP提供的主要工具有:文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文件编译器、工程管理系统、上下文相关帮助与自动匹配功能和智能化控制台等。

二、启动和退出Visual LISP集成开发环境1.启动步骤:(菜单方式)(1)启动AutoCAD(2)工具——AutoLisp——Visual LISP编辑器若使用键盘命令,则:命令:vlisp或vlide2.退出:文件——退出三、Visual LISP 集成开发环境介绍包含以下几个部分:1.菜单栏2.工具栏:标准、调试、工具、搜索、视图(共5个)3.控制台窗口可输入AutoLisp命令,代替菜单和工具栏命令4.状态栏——屏幕底部显示Visual LISP的状态信息5.跟踪窗口启动时包含:关于Visual LISP当前版本的信息、启动Visual LISP遇到错误时的一些信息。

6.文本编辑器打开或新建一个Visual LISP源程序,就可以看到文本编辑器的全貌。

7.其他Visual LISP窗口(必要时才打开)(一)Visual LISP菜单介绍菜单的内容:随着激活窗口的不同菜单内容将会不同。

1.文件:打开、新建、保存2.编辑:复制、粘贴、括号匹配3.搜索:查找、替换文本、设置书签4.视图:查找、替换变量及符号值等5.工程:应用程序的工程功能——管理项目、编译程序等6.调试:提供程序调试功能——设置和删除断点、单步执行、检查变量状态、检查表达式结果等7.工具:设置Visual LISP选项文本格式、环境选项变量,如窗口和工具栏的位置8.窗口:提供窗口管理功能9.帮助:提供帮助功能,包括显示在线帮助(二)工具栏介绍工具栏——包括一系列功能的Vlisp命令组1.标准:新建、打开、保存、打印输出、剪切、复制、粘贴、取消、恢复、完成词语功能2.工具:加载整个活动窗口代码、加载指定部分代码、语法检查(全部、指定部分)、对窗口代码格式化(整个活动窗口、指定代码)、设置注释代码、取消整块注释块、在线帮助3.搜索:查找、替换、查找并替换、设置或取消书签、下一个书签、上一个书签4.视图:切换到AutoCAD窗口、选择窗口、Visual LISP控制台、打开检验窗口、堆栈跟踪、符号服务、自动匹配、显示监视窗口5.调试:下一层嵌套表达式、下一个表达式、跳出表达式、继续执行、退出、重置、设置或取消断点切换、添加监视、显示上一个断点(三)控制台操作1. 控制台的功能这里是用命令操作的地方(Visual LISP命令、AutoLISP命令),并能看到结果,类似于AutoCAD的命令行窗口如:(setq a “hello,The world!”)查看a的值时在控制台窗口用:a↵(↵表示回车)AutoCAD命令:!a↵2.Visual LISP控制台窗口中的独特特性♦可以在新的一行上输入上一行没有完成的AutoLISP表达式♦可在↵前输入多个表达式,并在Visual LISP给控制台返回一个值之前将为每一个表达式求值♦光标在任意位置均可用↵移至提示符所在行上,如果选中的有文本,则同时移至提示符所在行(此功能可以复制)♦使用Tab键可获得以前输入的文本,每按一次即可将上一次的文本显示,循环执行。

CAD二次开发技术(一、二)课件

CAD二次开发技术(一、二)课件

AutoLISP是1986年随AutoCADv2.18提供的二次开发 工具。它是嵌入AutoCAD内部的一种人工智能语言。使 用 AutoLISP 可调用几乎所有的 AutoCAD 命令。 AutoLISP 语言最典型的应用之一是实现参数化绘图程序设计, 包括尺寸驱动程序和鼠标拖动程序等。另一个典型应 用就是驱动AutoCAD提供PDB模块构成DCL文件,创建自 己的对话框。 AutoLISP 适合于有能力的终端用户完成一些自己 的开发任务。
§1.3 AutoCAD二次开发工具简介
ActiveX Automation 是 微 软 公 司 VBA 推出的一个技术标准,其作用是在 Windows 系统的统一管理下协调不同的 VBA 是 2000 版本后具备 应用程序,允许应用程序之间相互控制、 相互调用。 的 功 能 。 它 通 过 AutoCAD AutoCAD ActiveX 技术提供了一种 ActiveX Automation 接 口 机制,可使编程者通过编程手段从 对 AutoCAD 进 行 编 程 控 制 , AutoCAD 的内部或外部来操纵 AutoCAD 。 ActiveX 是由一系列的对象组成,每一 是一个引入了对象的设计 个对象代表了 AutoCAD 中一个明确的功 环境,为用户提供类似 能,如绘制图形对象、定义块和属性等 Visual Basic语言所拥有的 等 。 ActiveX 所 具 备 的 绝 大 多 数 AutoCAD 功能,均以方法和属性的方式 功能,可以执行并存取 AutoCAD 环 境 的 所 有 资 源 , 被封装在 ActiveX 对象中,只要使用某 种方式,使 ActiveX 对象得以“暴露”, 适合编写中型的数据库类 那么就可以使用各种面向对象编程的语 言对其中的方法、属性进行引用,从而 的CAD软件。 达到对AutoCAD实现编程的目的。

第八讲 autoCAD二次开发

第八讲 autoCAD二次开发

2 创建和编辑二维图形对象
6、尺寸标注 基本类型:线性标注、半径标注、角度标注 线性标注包括对齐标注、转角标注和坐标标注 基本方法: AddDim3PointAngular:使用三个点创建角度标注 AddDimAligned:创建对齐标注 AddDimAngular:标注圆、圆弧或两条直线的夹角 AddDimArc :标注弧长 AddDimDiametric:标注直径 AddDimOrdinate:创建点的坐标标注 AddDimRadial:标注半径 AddDimRotated:创建转角标注
Dim line As AcadLine Set line = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint) '修改直线的起点 startPoint(1) = 100 line.startPoint = startPoint
2 创建和编辑二维图形对象
1概述
说明: Sub Circles() …… End Sub Circles是宏的名称,也叫过程名称。 Dim cc(0 To 2) As Double „声明坐标变量 语法:Dim变量名 As 数据类型
Double Integer Long Boolean
1概述
cc(0) = 1000 „定义圆心座标 cc(1) = 1000 cc(2) = 0 它们的作用是给CC变量的每一个元素赋值,其顺序是X、Y、Z坐标
2 创建和编辑二维图形对象
ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxt Set txtobj = ThisDrawing.ModelSpace.AddMText(p, 1400, "{做到老 ,学到老}\P" & "此心自光明正大,过人远矣") txtobj.LineSpacingFactor = 2 '指定行间距 txtobj.AttachmentPoint = 3 '右对齐(1为左对齐,2为居中) End Sub

AutoCAD.NET二次开发培训教程

AutoCAD.NET二次开发培训教程

二次开发培训教程目录第一章AutoCAD基础 (5)一、AutoCAD绘图基本知识 (5)1、软件功能区 (5)2、基本绘图命令 (6)3、图块、图组操作命令 (6)4、设计中心 (6)5、系统变量 (7)第二章DWG文件结构 (7)2.1.总体结构 (7)2.2 数据库中的容器对象 (8)2.2.1 BlockTable(块表) ,BlockTableRecord(块表记录) (8)2.2.2DimStyleTable(标注样式表),DimStyleTableRecord(标注样式表记录) (9)2.2.3LayerTable(层表),LayerTableRecord(层表记录) (9)2.2.4LinetypeTable(线型表),LinetypeTableRecord(线型表记录) (9)2.2.5RegAppTable(应用程序注册表),RegAppTableRecord(应用程序注册表记录)92.2.6TextStyleTable(文字样式表),TextStyleTableRecord(文字样式表记录) (9)2.2.7UCSTable(用户坐标系表),UCSTableRecord(用户坐标系表记录) (10)2.2.8ViewportTable(视口表),ViewportTableRecord(视口表记录) (10)2.2.9ViewTable(视图表),ViewTableRecord(视图表记录) (10)2.2.10DBDictionary(词典) (10)第三章.net二次开发基础知识 (11)3.1 运行机制 (11)3.2常用命名空间与库 (11)3.2.1Acdbmgd.dll (11)3.2.3AcCui.dll (12)3.2.4AdWindows.dll (12)3.2.5acdbmgdbrep.dll (12)3.2.6COM组件AutoCAD/ObjectDBX Common X.0 Type Library (13)3.2.7COM组件AutoCAD xxx Type Library (13)3.3常用类/结构 (13)3.3.1 Application 应用程序(参见2.1) (13)3.3.2 Document 文档(参见2.1) (13)3.3.3 Database 数据库(参见2.1) (13)3.3.4 Transaction 事务 (13)3.3.5 DBObject 数据库对象 (14)3.3.6 Editor 编辑器 (14)3.3.6 BlockTable(块表) ,BlockTableRecord(块表记录) 请参见2.2.1 (14)3.3.7 DBDictionary(词典) 请参见2.2.10 (14)3.3.8 Xrecord 扩展记录 (15)3.3.9 Entity 实体 (15)3.3.10 ObjectId 对象ID (15)第四章第一个CAD程序 (15)第五章CAD实体基本操作 (18)5.1 常用实体操作 (18)5.1.1概述 (18)5.1.2打开关闭实体 (18)5.1.3 创建实体 (19)5.1.5 删除实体 (19)5.2 应用实例 (19)第六章符号表基本操作 (20)6.1数据库/文档的概念(参见2.1) (20)6.1.1 操作当前文档 (20)6.1.2 后台打开文档 (20)6.2.1 九大符号表(详细说明请参见2.2) (21)6.2.2符号表常用操作 (21)6.3、模型空间和图纸空间 (23)6.3.1、模型空间 (23)6.3.2、图纸空间 (23)6.4 块,块记录,块引用 (23)6.4.1 概念 (23)6.4.2 创建块/块引用 (24)6.5应用实例 (24)第七章模态/非模态对话框 (24)7.1、为什么要用非模态对话框 (24)7.2 在CAD中使用模态和非模态对话框 (25)7.2.1.显示模态对话框 (25)7.2.2.显示非模态对话框 (25)7.3 应用实例: (25)第八章扩展实体数据,扩展记录,对象词典 (26)8.1扩展实体数据 (26)8.1.1、扩展数据是什么 (26)8.1.2、在CAD中看到扩展数据的方法 (26)8.1.3、注册应用表(RegAppTable) (26)8.1.4、添加扩展数据 (27)8.1.5. 删除扩展数据 (27)8.1.6、读取扩展数据 (27)8.2 扩展记录 (28)8.3词典 (28)8.3.1 概念参见2.1.10 (28)8.3.2 命名对象词典的使用: (29)8.3.3 对象扩展词典的使用。

第一讲 CAD二次开概述-PPT课件

第一讲 CAD二次开概述-PPT课件
譬如:特定曲线、常用机械零件的绘制,设计数 据的查询,设计公式的应用等。因此,设计人员 应根据本单位的实际情况,在已有CAD软件的基 础上进行二次开发,以扩充其实用的功能。
首先根据本单位的产品开发与设计要求,列出总体设 计,零部件设计,结构分析,参数化绘图,设计资料数 据库与标准件图形库等内容。然后依照所选通用CAD软 件能否满足要求的情况,确定软件二次开发的内容。这 些内容也可以抽象地归纳为:数据查询与输入,设计计 算、图形处理三部分。包含上述要求的CAD专用软件, 通常都具有以下特点: 1)集数据查询、计算、绘图于一身 2)用户界面友好,具有较好的人机交互功能 3)简便、实用。。
上一页 下一页 结 束
ADS的全名是AutoCAD Development System,它是 AutoCAD的C语言开发系统,ADS本质上是一组可以用 C语言编写AutoCAD应用程序的源文件和目标库,它直 接利用用户熟悉的各种流行的C语言编译器,将应用程 序编译成可执行的文件在AutoCAD环境下运行,这种 可以在AutoCAD环境中直接运行的可执行文件叫做 ADS应用程序。ADS由于其速度快,又采用结构化的编 程体系,因而很适合于高强度的数据处理,如二次开发 的机械设计CAD、工程分析CAD、建筑结构CAD、土 木工程CAD、化学工程CAD、电气工程CAD等。
上一页 下一页 结 束
(1)正确性:满足功能要求,结果正确; (2)可靠性:运行正常,容错性好; (3)完整性:程序和文档资料齐全; (4)实用性:界面友好,操作简便,实用; (5)可维护性:便于修改、扩充。。AD的二次开发工具主要有: VisualLisp、VBA、ObjectARX和.NET API等。 其中,VisualLisp与VBA较为简单,特别是 VisualLisp,使用方便且开发速度较快,但其功能 相比ObjectARX有所不足,尤其是对面向对象的 功能支持不好。而ObjectARX基于VC平台,在 C++的支持下,其功能非常强大,可以很好地运 用各种面向对象技术,但其缺点是开发速度比较慢, 同时对开发人员的能力要求较高。下面对此作简单 介绍:

AutoCAD_VBA二次开发初级教程(选做)

AutoCAD_VBA二次开发初级教程(选做)

AutoCAD VBA二次开发初级教程第一课:入门1.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。

2、VBA有多难?相信大家都知道Basic是的含义。

应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。

3、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。

仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。

本教程将陆续发布在CAD 世界论坛上,您不需要付费就可以学习。

本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。

我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。

4、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定”第四步:在Sub c100()和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行”Sub c100()Dim cc(0 To 2) As Double '声明坐标变量cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0For i = 1 To 1000 Step 10 '开始循环Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。

CAD二次开发技术课件(一、二) (1)

CAD二次开发技术课件(一、二) (1)

§1.4 AutoLISP语言概述
一、AutoLISP的数据类型

整数: (-2147483648到+2147483648)
实数: (-1.79769310308到+1.79769310308 )
符号: 包括除“(”、 “)”、 “.”、 “‘”、
“;”以外的任何打印字符。长度没有限制,大小写等 价。 常用术语“符号”来指储存静态数据的一个符号名,如内建式函 数和自定义函数。 字符串:包含在一对双引号内的一组字符
§1.1 AutoCAD简介 §1.2 AutoCAD二次开发
§1.3 AutoCAD二次开发工具简介
§1.4 AutoLISP语言概述
§1.1 AutoCAD简介
AutoCAD是美国Autodesk公司开发的通用CAD软件, 1982年首次推出了AutoCAD R1.0版本,经过不断的版 本更新,现最新的是AutoCAD2011版本。
ቤተ መጻሕፍቲ ባይዱ
§1.1 AutoCAD简介

AutoCAD软件具有如下特点 :
(1)具有完善的图形绘制功能。 (2)有强大的图形编辑功能。 (3)可以采用多种方式进行二次开发或用户定制。
(4)可以进行多种图形格式的转换,具有较强的数据
交换能力。 (5)支持多种硬件设备。 (6)支持多种操作平台。 (7)具有通用性、易用性,适用于各类用户。

AutoCAD是目前微机上应用最为广泛的通用交互式计 算机辅助绘图与设计软件包。AutoCAD的强大生命力在 于它的通用性、多种工业标准和开放的体系结构。

用AutoCAD绘图速度更快、精度更高、而且便于个性, 它已经在航空航天、造船、建筑、机械、电子、化工、 美工、轻纺等很多领域得到了广泛应用,并取得了丰 硕的成果和巨大的经济效益。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cre
Cre
Upd
AutoCAD's APIs
Add
Cre
Tota
6
在AutoCAD中存储数据
不同API方式的比较
Time in seconds
数据容器存储性能比较
400 350 300 250 200 150 100
50 0 Xrecord Custom Object
Xdata
ObjectARX .NET LISP
ObjectARX 入门培训材料--Labs
▪ ObjectARX/arxlabs/ObjectARXLabs.chm
ObjectARX
© 2008 Autodesk
16
ARXDBG ! (ARX Debug)
© 2008 Autodesk
17
.ARX = .DLL + 2 输出函数
acrxEntryPoint acrxGetApiVersion
按需加载
▪ 启动
▪ acad.rx 文件 每行列出一个ARX名。AUTOCAD每次启动时都会在搜索路径下查找这个文 件,如果有,则顺序加载列表中的ARX程序
▪ Registry ▪ (arxload) in acad.lsp
▪ 命令调用
▪ Registry:通过注册表
▪ 按请求
▪ 从其他程序
▪ 代理检测
34
用户交互API acedInitGet
▪ 控制其后的一个acedGetXXX()函数的用户输入 ▪ int acedInitGet (int val, const ACHAR *kwl) ▪ val设定输入数据的范围和方式, 控制位组合只控制紧随其后的一个
acedGetXXX()函数的输入,之后立即失效
.A.RDXLL
ObjectARXAPAI PIs
Au.tEoXCEAD
.A.RDXLL
© 2008 Autodesk
18
主要的库 - I
AcRx 对象和类管理库 (rxapi.lib) AcEd AutoCAD 编辑器工具库 (acedapi.lib) AcDb AutoCAD 数据库对象库 (acdb18.lib) AcGi AutoCAD 图形接口库 (acgiapi.lib) AcGe AutoCAD 几何库 (acge18.lib)
© 2008 Autodesk
33
acedGetXXX常用状态返回值
▪ RTNORM 成功
▪ RTCAN
取消
▪ RTKWORD 输入关键字
▪ RTERROR 其它错误
▪ RTNONE 用户只输入Enter
▪ RTREJ
AutoCAD认为无效的输入
▪ 头文件:adscodes .h
© 2008 Autodesk
2
课程安排
▪ 时间
API 概览 ObjectARX基本知识 用户交互和选择集 数据库操作 实体对象操作
扩展数据 反应器 用户界面 多文档环境
自定义对象 几何类
Jig-Drag 测试
© 2008 Autodesk
3
客户端代码形式

解释代码
▪ 代码脚本-AutoLISP
封装代码
▪ 预处理, 半解释代码-编译后的 Visual LISP
▪ 编译为IL

编译代码
▪ 编译器指令代码-ObjectARX
© 2008 Autodesk
4
AutoCAD API 实现 II
.NET
acdbmgd.dll acmgd.dll
VisualLISP
vl.arx
COM VBA (进程内)
acvba.arx
axdb.dll
ObjectARX API
▪ VS 2005 SP1 – only for AutoCAD 2007 ▪ VS 2005 RTM – for AutoCAD 2007
ObjectARX 工具包
© 2008 Autodesk
14
SDK Sample
ObjectARX\Samples目录下(按照功能类别组织 )
▪ COM ▪ EDITOR ▪ DATABASE ▪ ENTITY ▪ GRAPHICS ▪ MISC ▪ 两个很好的例子:PolySamp 和 ArxDbg
© 2008 Autodesk
7
在AutoCAD中存储数据
不同API方式的比较
Time in seconds
数据容器存储性能比较
140000 120000 100000
80000 60000 40000 20000
0
Xrecord
Xdata
© 2008 Autodesk
8
ObjectARX .NET LISP VBA VB
▪ 事件通知
▪ 输入点获取
© 2008 Autodesk
13
开发环境
操作系统和机器配置参见帮助 ( arxdoc.chm) Software Development Environment and System Requirements
AutoCAD 2007
Microsoft Visual Studio 2005® + Service Pack 1
© 2008 Autodesk
COM (VB) COM (VBA)
LISP ObjectARX
Total Create 1000 2dPolylines Add XData to 1000 Entities Update 1000 Circles Create 1000 lines
Create 1000 Circles
© 2008 Autodesk
19
主要的类 I
▪ AcRx类
▪ 对象运行类识别 ▪ 类协议扩展 ▪ 对象比较 ▪ 对象拷贝
▪ AcEd类
▪ 定义和注册AutoCAD新命令
▪ AcEdCommandStack
▪ AcEditorReactor 等监控相关事件
© 2008 Autodesk
20
主要的类 II
27
识别自定义对象
© 2008 Autodesk
28
ObjectARX & ObjectDBX
ObjectDBX
ObjectARX SDK
rcexelib.obj
acdb17.lib acge17.lib acgiapi.lib axdb.lib achapi17.lib rxapi.lib acismobj17.lib rxheap.lib …
▪ 自定义实体 ▪ 反应器 ▪ ...
© 2008 Autodesk
12
ObjectARX能做什么?
编辑和扩展图形数据库 ▪ 创建/编辑/删除对象 ▪ 创建新的对象类型
编辑 AutoCAD 用户接口 ▪ 命令 ▪ 工具条/对话框 ▪ 属性面板 ▪ 设计中心 ▪ 显示系统
监控/修改 AutoCAD 标准行为
4. 用户调用命令
5. 查找命令对象 6. 调用回调函数
24
.ARX 回调函数
addCommand
© 2008 Autodesk
25
演示
▪ 手动创建ARX程序 ▪ 通过ObjectARX向导创建工程
© 2008 Autodesk
26
新的数据库框架
从 AutoCAD 2000开始
© 2008 Autodesk
35
用户交互API acedInitGet
▪ Kwl: 选项关键字列表
▪ 每个选项以空格分开 ▪ 只能是字母,数字和下划线 ▪ 可以随意设置简写,但不能矛盾
在AutoCAD中存储数据
不同API方式的比较
Time in seconds
数据容器存储性能比较
5000 4000 3000 2000 1000
0 Xrecord
Custom Object
© 2008 Autodesk
9
ObjectARX .NET VBA LISP
ObjectARX的优势
效率高 功能强 计算精度高 适用开发复杂的大型程序 调试方便
ObjectARX 2007
© 2008 Autodesk
1
培训目标
▪ 培训内容主要是
▪ ObjectARX基础知识 ▪ 如何使用 ObjectARX ▪ 如何在以后的实际工作中独立的获取相关资源和帮助
▪ 不是
▪ 如何使用 C++ ▪ 对所有的ObjectARX API做完整的讲述
© 2008 Autodesk
5. acrxGetApiVersion 6. acrxEntryPoint
© 2008 Autodesk
23
命令机制 I
1.
AcEdCommandStack
4.
5. 2,3.
6.
AcEdCommand
AutoCAD
© 2008 Autodesk
1. 添加命令
2. 创建一个命令对象 3. 参数化对象
© 2008 Autodesk
10
ObjectARX基本知识
© 2008 Autodesk
11
什么是 ObjectARX? AutoCAD 运行扩展(AutoCAD Runtime eXtension)
▪ 一系列面向对象的C++库 ▪ 一个框架 ▪ 一个DLL插件模块 (.ARX)
▪ 不单单是个工具包 ▪ 运行在AutoCAD进程中 ▪ 可访问AutoCAD同一块内存空间 ▪ 系统中包含特定的对象
▪ Registry
实时
acrxLoadModule 参见SDK例子PolySamp
相关文档
最新文档