AutoCAD二次开发实用教程第13章 使用反应器

合集下载

AutoCAD的二次开发技术

AutoCAD的二次开发技术

收稿日期:1997-08-29第一作者 男 1968年9月生 硕士学位 助教AutoCAD 的二次开发技术翟 震(郑州工业大学橡塑模具研究所) 张 涛(河南省电子工业学校,郑州,450002)摘 要 介绍了对AutoCAD R12.0绘图软件进行二次开发的一些方法。

包括如何实现参数化绘图、数据检索,以及对图形数据库的操作,对于工程CA D 系统的实现有一定的帮助。

关键词 A utoCA D ;AutoLI SP中图分类号 T P311.50 引言AutoCAD 是美国Auto desk 公司开发的通用型绘图软件,具有强大的图形编辑和处理功能、开放性结构以及良好的性能价格比,其版本从早期的1.0版到目前的R14版,在国内外都已得到广泛的应用。

AutoLISP 语言是一种嵌在AutoCAD 内部的LISP 编程语言,既具有一般高级语言的基本结构和功能,又具备AutoCAD 所特有的图形处理功能。

利用Au -toLISP 可以直接增加,修改和调用AutoCAD 命令,并能结合各类标准建立大量的参数图形库,还能够对当前图形数据库直接访问和修改等。

1 设计实例尽管AutoCAD 的功能十分强大,但是并不是完全符合我国各领域的实际情况,比如图幅设置、尺寸公差标注、图形编辑等,这就需要运用其内部编程语言AutoLISP 进行二次开发。

下面以通用绘图系统为例列举了一些典型的AutoLISP 程序,在AutoCAD R12.0环境下运行,用户可以此为参考开发出适合自己情况的CAD 软件。

1.1 AutoCAD 命令的扩充众所周知,AutoCAD 本身提供的各种命令都是最基本的,对一些复杂的具有特殊要求的操作,如果用手工操作将十分麻烦,类似于图幅设置、局部放大、无边界延伸等等,都需要编制新的函数,作为AutoCAD 命令调用。

下面列举了一个在工程制图时经常要进行的局部放大函数,其设计思想是:以圆心的外切正方形为目标区域, c 方式选择目标,拷贝后选择第19卷 第1期1998年 3月 郑州工业大学学报 Journal of Zhengzhou University of Technology Vol 19 No 1Mar 1998该圆为剪切边界,以1.2倍半径进行剪切目标360环形搜索,再按比例放大,该程序如下:(defun fd()(initget 7) ;禁止输入零值、负值及空输入(setp pl (getpoint 输入放大区域圆心坐标: ))(command circle pl);画圆心(setq prl (getpoint 输入半径位置: ))(setq k 2r (distance pl prl);计算半径 p2 (getpoint 输入放大图形位置 ))(setq p3 (list (- (car pl) r)(- (cadr pl) r));选中图形左下角p4 (list (+ (car pl) r)(+ (cadr pl) r));选中图形右下角p5 (list (- (car p2) r)(- (cadr p2) r));放大图形左下角p6 (list (+ (car p2) r)(+ (cadr p2) r));选中图形右下角r1 (* 1.35 r);剪切搜索半径 k 2);放大比例为2(command r)(command erase l ;删除该圆copy c p3 p4 p1 p2;将选中目标拷贝至p2点circle p2r);画圆(setq ss (ssget l ))(command trim ss )(setq n 360n11dt (/ 3.14159 0.5 n);设置搜索次数(repeat n(setq pp (polar p2 (*n1dt) r1))(command pp);剪切目标(setq n1(+1 n1)))(command scale c p5 p6 p2 k redraw );放大操作)1.2参数化绘图图1 键槽的轴剖面图根据调查,在我国使用AutoCAD 的用户中,绝大多数都仅仅采用交互式绘图方式,这样,AutoCAD 系统只是将设计师的工作环境从图板上移到计算机上,并没有真正减少设计工作中的重复劳动。

AutoCAD官方.net二次开发教程

AutoCAD官方.net二次开发教程

第 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。

AUTOCAD二次开发技术

AUTOCAD二次开发技术

AutoCAD二次开发技术AutoCAD作为一种通用计算机辅助设计软件,其二维图形设计功能非常强大,目前已广泛应用于机械、电子、电气、建筑、土木、服装等领域,深受国内外众多工程设计人员的喜爱,成为目前世界上应用最广的计算机辅助设计工具。

尽管如此,人们在使用过程中还是发现其存在较多的不足之处,如对于一些特殊曲线的绘制往往较为困难,而对于一些标准件、常用件,虽然从结构上看它们较为相似,但却难以采用AutoCAD提供的复制、镜像、旋转等命令来实现,而必须一笔划一笔划的绘制,显得费时费力。

AutoCAD是一种定位与全球各大领域和各类专业的通用微机CAD平台软件。

到目前为止,Autodesk公司已经相继推出了四代二次开发工具.AutoCAD的二次开发主要涉及以下内容:(1编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。

(2建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。

(3在系统的ACAD.LSP 或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。

(4通过系统对话框设置某些路径。

这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。

AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。

它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。

AutoCAD第一版于1982年11月由AutoDESK公司推出,目前大家广泛使用的是AutoCAD2000或2002,最新版本是AutoCAD2004,其二次开发语言及工具也在不断地涌现语言本身不难,难点在对AutoCAD二次开发框架的掌握,其实AutoCAD文件可以当成一个数据库来理解,因此难点就是理解这个数据库的结构和编程方法。

利用C#进行AutoCAD的二次开发

利用C#进行AutoCAD的二次开发

利用C#进行AutoCAD的二次开发(一)转自明经通道众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp。

但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++,而这门语言非常的难学;VBA和VLisp虽然简单易上手,但它们对于开发大型的程序好象无能为力。

那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言C#。

关于C#的详细介绍,大家可以参考有关的文章。

C#是通过AutoCAD ActiveX 这座桥梁来和AutoCAD之间进行通讯的。

AutoCAD ActiveX 使用户能够从AutoCAD 的内部或外部以编程方式来操作AutoCAD。

它是通过将AutoCAD 对象显示到“外部世界”来做到这一点的。

一旦这些对象被显示,许多不同的编程语言和环境就可以访问它们。

关于AutoCAD ActiveX 的情况,大家可以参考AutoCAD自带的帮助。

呵呵,说了这么多无聊的,还是让我们通过一个具体的例子来说明怎样利用C#进行AutoCAD的二次开发吧。

在介绍例子之前先讲一下有关的配置:(1)Visual Studio .net (2003和2002都可以,我用的是2002)(2)AutoCAD2000以上版本(我用的是2004)这个例子非常简单,就是通过C#建立的窗体来启动AutoCAD并画一条直线。

下面是编程的具体步骤:(1)通过Visual Studio .net 建立一C#的windows应用程序。

(2)在“解决方案资源管理器”中右击“引用”标签,在弹出的菜单中选择“添加引用”,在“添加引用”对话框中选择“com"选项卡下的下拉列表框中的“AutoCAD 2004 Type Library"项(注意:不同版本的CAD的数字不同),单击右边的“选择”按钮,最后单击下面的“确定”按钮。

AutoCAD二次开发

AutoCAD二次开发

第4章AutoCAD二次开发技术4.1 AutoCAD开发系统概述AutoCAD的二次开发途径主要有两个,即文件开发和程序开发。

文件开发是指根据用户的具体开发需要,按照AutoCAD提供的方法和文件格式,通过编辑AutoCAD系统所支持的文本文件(如ACAD.MNU和ACAD.LIN等)或建立同种类型新的文本文件,来开发AutoCAD,使其满足用户特定需要的方法。

程序开发是指利用AutoCAD提供的编程环境和开发工具(称为AutoCAD应用程序接口,缩写为API),通过编写程序来实现对AutoCAD开发的方法。

借助于程序开发,可为AutoCAD扩充新的命令或定义,以满足用户具体需要。

表4-1 文件开发可实现的开发内容和文件类型文件类型开发内容ACAD.PGP AutoCAD命令的用户化(定义外部命令和命令别名等)ACAD.LIN, *.LIN 修改标准线型,建立用户自定义线型及线型库ACAD.PAT, *.PAT 修改标准填充图案,建立用户自定义图案及图案库*.SCR 建立用户的命令脚本文件,自动执行一系列AutoCAD命令*.SLD, *.SLB 建立用户的幻灯片及幻灯片库ACAD.SHP, *.SHP 建立用户的自定义符号库和自定义字体文件*.MNU, *.MNS 开发用户的自定义菜单(包括下拉菜单、工具栏菜单、图像菜单、屏幕菜单、定点设备菜单和数字化仪菜单等)*.DXF 实现AutoCAD与其它CAD系统之间数据交换的中间文件,也是AutoCAD与其它用户应用程序之间图形数据的中间文件*.DCL 建立用户的自定义对话框表4-2 程序开发可实现的开发内容和文件类型程序文件类型AutoCAD简称语言环境可执行文件类型*.LSPAutoCAD*.LSP AutoLISP*.CPP, *.C ARX Visual C++ *.EXEBasic*.EXEVisualX*.BAS ActiveAutomation下图反映了AutoCAD 二次开发工具的演变:1986198719881989199019911992199319941995199619971998199920002001AutoLISPADS DCL ADS-RX Object ARX Active XAutomationVBA Visual LISP 图4-1 AutoCAD 二次开发工具的演变4.2 命令的用户化4.2.1 程序参数文件(ACAD.PGP)的结构与功能AutoCAD 程序参数文件(ACAD.PGP)是一个文本文件,用于存放AutoCAD 定义的命令。

【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件

【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件
(工具-选项-编辑器-要求变量声明) 作用域:过程级、模块级(private)、全局(public) 数据类型 :弱类型
4)常量 系统常量 vbOK AcadCircle 自定义 Const PI = 3.14159265358979
5)运算 算术:+ - * / \ mod ^ 连接字符串:+ & 关系:> >= < <= = <> 逻辑:Not And Or Xor
3)保存图形 Sub Ch3_SaveActiveDrawing()
' Save the active drawing under the current name
ThisDrawing.Save ' Save the active drawing under a new name ThisDrawing.SaveAs "MyDrawing.dwg" End Sub
3 窗体
例 1)属性 2)方法 3)事件
4 控件
内部控件 ActiveX控件 可插入对象
5 ActiveX部件的使用
1) 添加引用 工程——引用——AutoCAD2004类型库
2) 声明对象变量 Dim acadApp As AcadApplication
3) 将对象引用赋予变量 Set acadApp = CreateObject("AutoCAD.Application") Set acadApp = GetObject (,
6)数组 Dim intCounter(9) As Integer Dim intSums(3 to 10) as Integer
7)控制结构 判断结构 条件 if dtm < Now then dtm = Now

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的二次开发及应用

AUTOCAD的二次开发及应用

计算机应用Computer Application《自动化技术与应用》2005年第24卷第8期AUT OCAD的二次开发及应用白广利1,穆祥贞2(1.黑龙江省科学院自动化研究所,黑龙江 哈尔滨 150090; 2.哈尔滨市公路工程处,黑龙江 哈尔滨 150076)摘要:如今,C AD(计算机辅助设计)技术已被各制造业广泛应用。

而美国的AutoC AD是目前在Windows环境下应用最广泛、使用人数最多的C AD支撑软件。

本次设计是在论证了C AD二次开发的可行性并比较了AutoC AD各开发系统的优劣之后,选择Object ARX开发平台,用CΠC++对AutoC AD软件进行的二次开发。

本系统设计工作共分数据库构建、文件读写、操作功能实现和交互式界面四部分。

最终完成的软件是一个具备初步的C AD软件结构、用户接口和操作方式的C AD系统,此软件随AutoC AD的启动自动运行,能够实现“读写文件”和“交互式创建、删除和修改直线实体”等功能。

关键词:应用程序接口;直线实体;交互式技术中图分类号:TP391172 文献标识码:B 文章编号:100327241(2005)0820045203The S ec o n dary de velop m e nt of Aut oCADBAI G uang-li1,MU Xiang-zhen2(1.Automation Institute of Heilongjiang Academy,Harbin150090,China;2.Harbin R oad Engineering Department,Harbin150076,China) Abstract:The C AD(C om puter Aided Design)technique has been used widely by manu facturing industry.The Object ARX is chosed as the develop2 ment environment,which use the CΠC++to develop the s oftware.The design of the system includes building the database,reading and writing the document,realizing of the operation function and designing of the interactive inter face.As with the starting of AutoC AD,the system can write and read the document,it als o can make,delete and m odify the line entity interactively.K ey w ords:Application inter face;Beeline s olid;Interactive technology1 引言利用计算机作为工具,帮助工程师进行设计的一切实用性技术的总和称为计算机辅助设计。

CAD第13章 接口与二次开发

CAD第13章 接口与二次开发

第13章 接口与二次开发13.1 接口在AutoCAD 中可利用剪贴板、OLE 等方式来与其他Windows 应用程序进行交互,如电子表格、文字处理文档和动画图像等程序。

此外,AutoCAD 还可以通过图形转换来使用或创建其他格式的图形。

13.1.1 系统资源的利用1. 剪贴板的利用剪贴板是Windows 系统中各应用程序之间进行数据交换的常用工具。

当用户要从另一个应用程序的AutoCAD 图形文件中使用对象时,可以先将这些对象剪切或复制到剪贴板,然后将它们从剪贴板粘贴到文件中。

AutoCAD 提供了多个命令来使用剪贴板。

下面就几个常用的几个命令进行简单的说明。

(1)带基点复制命令COPYBASE 命令在复制对象时指定基点。

将复制对象粘贴到同一图形或其他图形时,使用基点能够精确定位对象。

启动方法如下: 1、数据接口简介;2、二次开发简介定制线型和菜单学时分配:2学时COPYCLIP 命令将对象或命令行文字从AutoCAD 图形复制到其他Windows应用程序中。

启动方法如下:标准工具栏:COPYLINK命令将当前视图复制到剪贴板中以便链接到其他OLE 应用程序。

启动方法如下:(4)命令行历史命令COPYHIST命令将命令行历史记录文字复制到剪贴板。

命令行历史记录显示在命令窗口中的命令行的上方。

使用滚动条或打开文本窗口可以查看全部历史记录。

可以使用“选项”对话框中的“显示”选项卡修改命令行窗口中显示的行数,或者拖动该窗口的顶边更改它(5)剪切命令CUTCLIP命令将对象复制到剪贴板并从图形中删除对象。

启动方法如下:标准工具栏:PASTECLIP命令可以采用各种格式将AutoCAD对象、文字和文件粘贴到图形中,例如图元文件、位图和多媒体。

启动方法如下:标准工具栏:AutoCAD支持 Windows的对象链接与嵌入 (OLE) 功能。

将对象从支持 OLE 的应用程序插入到 AutoCAD 图形时,可以保持其与源文件的连接。

AutoCAD的二次开发

AutoCAD的二次开发
新线型定义已保存到文件。 输入选项 " ? ! 创建( >) ! 加载( /) ! 设置(=) #: 则 创 建 了 线 型 <=12*>1?312, 并 存 放在 &C&%A78, 文件中。
%&’()* 用 来 指 定 组 成 线 型 各 段 的 长
度,是一个数,用逗号分隔, %&’()* 为正 数则定义了一段实线段的长度,为负数则 定义了空白段的长度,为零表示一个点。 该线型按此定义从第一个到最后一个依次 画出,然后再从第一个开始重复这个序 列。 — 例如要使用 形 如 “——
%3%&%%)
/-0 作
为 更 好 地 使 用 -(.# /-0 二次开发与应用的操作 过 程 ,
了初步的探讨。 关键词: -(.# 中图分类号: "#$%&&&&&&&
!!!!!!!!!!!
*
引言 用户进行 -(.#
/-0 二次开发提供了许多 /-0 的 二 次 开 发 过
-(.#
/-0 是 美 国 -(.#4567 公 司
!!!!!!!!!!!!!!!!"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" !!!!!!!!!!!!!!!!"
山西省工程测绘院顺利通过 !"#$%&&’ 质量管理体系认证
近几年来,山西省工程测绘院正朝着适应市场要求的方向 发 展 、服 务 领域也在逐步拓宽,经济效益明显提高。在形势大好声中,该院居安思危, 未雨绸缪,面对充满机遇和挑战的年代,要实现可持续发展,树立 良 好 的 信誉,提高综合实力成为该院工作重中之重。 "’’# 年 $ 月院领导果断决策, 导 入 !"#$%&&’ 质 量 管 理 体 系 标 准 ,打 造 测 绘 产 品 质 量 取 胜 的 “ 金 钥 匙 ” 。 通过几个月的全员培训,完善质量体系, "’’# 年 #" 月 ! 日接受了北京世标 认证中心的审核,顺利通过了 !#"$%&&’ 质量体系的认证,获得合格证书。

autocad的二次开发

autocad的二次开发

autocad的二次开发(1)编写各种用户自定义函数并形成假设干LISP、ARX、VLX或ADS文件,以及一些DCL文件。

(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。

(3)在系统的ACAD、LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。

(4)通过系统对话框设置某些路径。

这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。

为此笔者用VC++开发了一套自动安装程序,使原本需要【五】六分钟的人工操作在十几秒内即可自动完成。

【一】基本思路整个安装程序遵循以下思路:1〕首先获得所在机器AutoCAD2000系统的安装路径;2〕寻找菜单文件AutoCAD2000\\support\\acaD、mnu,打开文件并将要添加的内容加至末尾;3〕寻找LISP文件AutoCAD2000\\support\\acad2000doC、lsp,打开文件并将要添加的内容加至末尾;4〕创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;5〕给出信息框,告知安装成功,如有问题那么告知安装失败。

需要指出的是,在添入acad2000doC、lsp的内容中须有如下语句:〔command“_menu”〔strcat〔getvar”menuname”〕”、mnu”〕〕,目的是为了强制执行菜单文件装入命令,将改动后的acaD、mnu文件编译后装入。

另外,在添入acad2000doC、lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。

AutoCAD二次开发实用教程第13章 使用反应器

AutoCAD二次开发实用教程第13章 使用反应器

5. 打开含有永久反应器的图形时的注意事项
13.5 反应器的使用规则
1. 不要依赖于反应器通报的顺序 2. 不要依赖于通报间函数调用的顺序 3. 不要在反应器回调函数中使用任何需要和用户交互的函数 4. 在事件处理函数中不要加载对话框
5. 不要更新引发事件的对象
6. 不要在回调函数中执行能触发相同事件的操作 7. 能在发生同一事件时调用多个回调函数 8. 显示有模对话框时,不会发生任何事件
AutoLISP为运行在非激活文档中的反应器回调
函数提供了有限的支持。默认情况下,只有在定义反
应器的文档是活动文档时,才会在相关事件出现时,
调用反应器的回调函数。但用户可使用r-setnotification函数改变这种默认行为。
13.3 查询、修改和控制反应器的状态
13.3.1 查询反应器
1.了解图形中有关反应器的总体情况
件的内容编写这些事件发生时所要激活的函数。
13.1.3 反应器的回调函数
要设计一个基于反应器的应用程序,就必须首 先确定的事件,然后再编写当该事件发生时所要执行 的程序即回调函数(callbackfunction)。 反应器是通过回调函数同应用程序相互通信的, 回调函数是一个用defun函数定义的标准AutoLISP程 序,只不过是与其事件反应器绑定在一起时就成为了 回调函数。也就是说反应器的回调函数就是回调事件 发生时所要执行的函数。
外,还要注意以下几点:
1) 在定义所有者列表时,只能指定VLA对象,而不允 许使用ename对象。要求VLA对象是因为回调函数只能用 ActiveX方法修改AutoCAD对象,而ActiveX方法要求使 用VLA对象。 2) 如果对象已被包括在对象反应器的所有者列表之中, 那么就不能在回调函数中修改该对象。如果这样做,将

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二次开发技术课件

CAD二次开发技术课件

§1.4 AutoLISP语言概述
三、AutoLISP的程序
AutoLISP程序是由一系列按顺序排列的标准表组成。 每个标准表的第一个元素均为系统或用户定义的函数,其 后的各元素为该函数的参数。如: (setq x 25.0) (setq y 25.0) AutoLISP的程序的书写格式: (+ (* x y ) x) (setq 所有括号必须左右匹配; x 阅读AutoLISP程序时,按从左到右的规则进行; (setq x 25.0)(setq y 25.0)(+ x y) 25.0) 函数必须放在表中的第一个元素位置; 一个表可以占多行,一行也可以写多个表; AutoLISP用“;”作注释; AutoLISP是以扩展名为“.lsp”的ASCII码文本文件的 形式存储。
§1.4 AutoLISP语言概述
一、AutoLISP的数据类型

文件描述符: 打开文件时的返回值,相当于其它语言的文件号, 用于数据的存取。

选择集: 选择集是一个或多个对象的集合。 实体名(图元名): 是AutoCAD系统在绘图过程中赋予所绘对象的一 个数字标号。确切地说,它是指向一个AutoCAD系统 内部数据文件的指针。利用图元名,AutoLISP可以查 找到图形对象的数据库记录,并对其进言概述
一、AutoLISP的数据类型

整数: (-2147483648到+2147483648)
实数: (-1.79769310308到+1.79769310308 )
符号: 包括除“(”、 “)”、 “.”、 “‘”、
“;”以外的任何打印字符。长度没有限制,大小写等 价。 常用术语“符号”来指储存静态数据的一个符号名,如内建式函 数和自定义函数。 字符串:包含在一对双引号内的一组字符

AutoCAD使用及二次开发

AutoCAD使用及二次开发

第三章AutoCAD使用及二次开发第一节计算机图形学概要计算机图形学是关于计算机图形技术的学科。

它主要研究构造模型并利用计算机及其图形设备生成、处理、存储、输入与输出图形的有关原理、算法和技术,在工程领域有广泛的应用,因此学习和掌握计算机图形技术对于工程技术人员来讲,具有十分重要的现实意义。

计算机图形学是CAD领域的理论基础,涉及的内容广泛,这里我们主要介绍基本概念及有关的一些算法,它们包括曲线、曲面的设计以及几何造型技术等。

一、坐标变换坐标变换是图形处理的一种手段。

对于不同类型的形体、图形和图纸,在不同的处理阶段需要采用不同的坐标系,以提高图形处理的效率和便于用户的理解。

下面介绍一些与坐标变换有关的概念。

1.坐标系在图形处理过程中涉及到多种不同的坐标系,但概括起来可以把坐标系分成两大类:一类是面向系统的,例如绘图机和图形显示器等图形设备坐标系以及语言环境设置的窗口等,它主要用于实现绘图定位;另一类是面向用户的,例如图形坐标系、自然坐标系等,它用于分析图形自身的关系、建立数学模型以及采集数据。

2.齐次坐标在数学上,齐次坐标是空间位置矢量的一种表示方法。

一个n维位置矢量,在普通坐标下表示为[x1,x2,…,x n],它的齐次坐标表示在齐次坐标下将矢量表示成n+1维空间位置矢量[hx1,hx2,hx3,…,hx n,h],h为比例因子。

当h=1时,空间位置矢量为[x1,x2,…,x n,1],并称为其次坐标的规格化形式,在图形变换中一般采用这种规格化形式,此时在数值上齐次坐标与普通坐标相等。

这种n+1维向量表示一个n维向量的坐标表示方法称为齐次坐标表示法。

二、曲线、曲面的设计公路设计中处理的图形,按其形状可分为两大类。

第一类是规则形状的图形,通常由平面、二次曲面等组成,例如桥涵的蹲台、基础等结构图。

这类图形一般采用常规的三面视图的方法来表示。

第二类是自由形状的图形,通常由自由型曲线和曲面构成,例如地面就属于这类图形。

Autocad二次开发教程

Autocad二次开发教程

第一课:入门1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。

其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。

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

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

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

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

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

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

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

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

5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5. 打开含有永久反应器的图形时的注意事项
13.5 反应器的使用规则
1. 不要依赖于反应器通报的顺序 2. 不要依赖于通报间函数调用的顺序 3. 不要在反应器回调函数中使用任何需要和用户交互的函数 4. 在事件处理函数中不要加载对话框
5. 不要更新引发事件的对象
6. 不要在回调函数中执行能触发相同事件的操作 7. 能在发生同一事件时调用多个回调函数 8. 显示有模对话框时,不会发生任何事件
会导致一个出错消息,并使AutoCAD崩溃。
13.2.2 创建其他反应器
其他反应器不需要链接AutoCAD图元,所以在定
义时,只需要两个参数。
创建其他反应器通过函数vlr--reactor,该函数的调
用格式如下:
(vlr--reactor data callbacks)
13.2.3 将数据附着到反应器对象
2. 用Visual LISP的检验工具检查反应器
3. 用函数调用、查询反应器
13.3 查询、修改和控制反应器的状态
13.3.2 修改反应器
Visual LISP提供了下列可修改反应器定义的函数:
vlr-reaction-set、 vlr-data-set 、vlr-owner-add和vlr-ownerremove。 同定义回调函数类似,在定义对象反应器时也必须 带有两个形参,而它的第一形参为一组欲绑定对象列表, 后两个形参含义同上。
13.3 查询、修改和控制反应器的状态
1. 判断反应器是否是活动的 2. 使反应器失效 3. 恢复失效的反应器
13.3 查询、修改和控制反应器的状态
13.4 临时反应器和永久反应器
1. 将临时反应器变成永久反应器
2. 将永久反应器改变为临时反应器
3. 判断反应器是否是永久反应器
4. 列出当前图形文档中的永久反应器
13.1.3 反应器的回调函数
定义对象反应器回调函数和定义其他反应器 的回调函数也不完全相同。 1.定义对象反应器的回调函数 2.定义其他反应器的回调函数 3.定义AutoCAD预定义的回调函数
13.2 生成反应器
创建反应器时要把回调函数和事件相连,对于建立每
种类型的反应器都有一个与之相对应的AutoLISP函数,而
AutoLISP为运行在非激活文档中的反应器回调
函数提供了有限的支持。默认情况下,只有在定义反
应器的文档是活动文档时,才会在相关事件出现时,
调用反应器的回调函数。但用户可使用vlr-setnotification函数改变这种默认行为。
13.3 查询、修改和控制反应器的状态
13.3.1 查询反应器
1.了解图形中有关反应器的总体情况
利用创建反应器函数的参数data可以为反应器指定与
其关联的数据,如果该项为nil,表示不需要为反应器指
定与其关联的数据。 一个对象可能链接多个反应器,如果它们的参数data 都为nil,应用程序将无法区分它们。在这种情况下就应 该为反应器指定文本字符串或应用程序能识别的其他数
据。
13.2.4 在多重名称空间中使用反应器
13.1 反应器基础
反应器(Reactor)就是一个附加到AutoCAD图形对象上 的对象,通过反应器可以使AutoCAD随时监测你所感兴 趣的事件的发生并自动调用相应的程序。
反应器通过调用与它相关的函数来与应用程序通信,
这样的函数被称为回调函数。
13.1 反应器基础
反应器通过调用与它相关的函数来与应用程序通信, 这样的函数被称为回调函数,反应器的回调函数和用户 用Visual LISP写的其他函数没有什么不同,用户将它们
谢谢!
外,还要注意以下几点:
1) 在定义所有者列表时,只能指定VLA对象,而不允 许使用ename对象。要求VLA对象是因为回调函数只能用 ActiveX方法修改AutoCAD对象,而ActiveX方法要求使 用VLA对象。 2) 如果对象已被包括在对象反应器的所有者列表之中, 那么就不能在回调函数中修改该对象。如果这样做,将
4)编辑反应器(:VLR- Editor一Reactor)
5) 链接反应器(:VLR- Linker一Reactor)
13.1.2 反应器的回调事件
对每种反应器,都有一些事件可使它通知用
户的应用程序,这些事件被称为回调事件,因为
它们将触发反应器调用与该事件相关的函数。
设计基于反应器的应用程序就是根据回调事
附到反应器事件时,它们就成了回调函数。
在AutoLISP中使用反应器函数之前,必须加载支持
代码,才能使Leabharlann 这些函数。13.1.1 反应器的类型
1) 数据库反应器(:VLR- Acdb一Reactor):
2)文档反应器(: VLR- DocManager一Reactor):
3)对象反应器(:VLR- Object- Reactor):
这些函数的函数名与它的反应器类型相同,只是没有前面
的冒号。创建反应器用vlr--reactor函数。如,vlr-acdbreactor创建数据库反应器,vlr-toolbar-reactor创建工具栏反 应器,依此类推,所有创建反应器的构造函数都返回一个 反应器对象。
13.2.1 创建对象反应器
件的内容编写这些事件发生时所要激活的函数。
13.1.3 反应器的回调函数
要设计一个基于反应器的应用程序,就必须首 先确定的事件,然后再编写当该事件发生时所要执行 的程序即回调函数(callbackfunction)。 反应器是通过回调函数同应用程序相互通信的, 回调函数是一个用defun函数定义的标准AutoLISP程 序,只不过是与其事件反应器绑定在一起时就成为了 回调函数。也就是说反应器的回调函数就是回调事件 发生时所要执行的函数。
因为对象反应器必须链接到特定的AutoCAD图
元(对象)上,所以在定义对象反应器时,必须指定
反应器所要链接的图元。
对象反应器的调用格式如下:
(vlr-object-reactor owners data callbacks)
13.2.1 创建对象反应器
创建对象反应器除了必须指定反应器所要链接的图元之
相关文档
最新文档