AutoCAD二次开发教程复习总结
- 格式:docx
- 大小:2.40 MB
- 文档页数:18
关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。
在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。
一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。
不然,以后的各种对CAD的操作将无法得以实现。
二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。
对象的属性特点我们可以事先通过CAD帮助文件查找得出。
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种称为“原子”。
关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。
在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。
一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。
不然,以后的各种对CAD的操作将无法得以实现。
二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。
对象的属性特点我们可以事先通过CAD帮助文件查找得出。
学习AutoCAD二次开发技术的体会一、引言AutoDesk公司是全球著名的CAD软件研发公司,多年从事CAD软件的开发,特别是二维设计绘图方面,AutoCAD几乎是PC机上唯一的CAD软件。
AutoCAD更是我们理工科大学生必备专业技能之一。
本文通过作者对AutoCAD软件绘图方法的学习,在学习上不断的钻研与体会,总结出学习AutoCAD软件绘制图形的方法和技巧,并向读者介绍自己学习AutoCAD二次开发技术的体会。
二、正文(一)、软件介绍CAD是一个泛指,CAD英文表示为Computer Aided Design,意思是计算机辅助设计。
AutoCAD是由美国Auto desk公司开发的计算机辅助设计软件包。
著名的3D MAX也是它的产品之一。
AutoCAD可以说是目前世界应用最广的二维绘图软件,具有广泛的通用性,它还具有简单的三维绘图功能,支持扩展编程,定义适合自己的小程序,以方便和提高效率。
它的发展过程为:1982年推出第一个版本----AutoCAD1.0版,经历了R12,R14,2000,2002,2004等多个版本,它广泛用于建筑、机械、电子、航天、服装、造船等现代化工业的领域。
(二)、学习历程最开始接触AutoCAD是由于课程所联想到的,“机械制图”这门课要求用直尺和圆规做出零件的平面三视图,而老师在课堂上常常用AutoCAD来展示作业内容,故引发学习AutoCAD 的愿望。
由于开始的时候接触过“手工图板”,而“手工图板”绘图能力是计算机绘图能力的基础,故学习起来比较容易。
学习《AutoCAD》,需要一定的画法几何的知识和能力,需要一定的识图能力,尤其是几何作图能力。
整个学习过程也采用了循序渐进的方式,先了解计算机绘图的基本知识,如对直角坐标和相对极坐标等,使自己能由浅入深,由简到繁地掌握AutoCAD的使用技术。
在学习AutoCAD命令时还要注意始终要与实际应用相结合,不能把主要精力花费在各个命令孤立地学习上;应当把学以致用的原则贯穿整个学习过程,使自己对绘图命令有深刻和形象的理解,有利于培养自己应用AutoCAD独立完成绘图的能力。
AutoCAD使用技巧精华优化AutoCAD系統的方法一、优化Windows系统1.清理维护磁盘,优化Windows系统性能如果AutoCAD发生故障,可能会导致非正常地退出交换文件,并丢失一些磁盘簇。
Windows系统在启动时会自动检查丢失的磁盘簇。
如果不想重新启动系统,则可从命令行运行chkdsk。
2.整理磁盘碎片,优化Windows系统性能什么是磁盘碎片?同一磁盘文件的各个部分分散在磁盘的不同区域,当在磁盘中删除旧文件添加新文件就会产生碎片。
它减慢了磁盘的访问速度,降低了磁盘的综合性能。
就如同一本小说不是印刷在连续的页面上,而是每隔几行需要出现“转到xxx页”。
AutoCAD在运行时,需要在磁盘中创建一定的临时文件,倘若分布于磁盘碎片之中,自然降低速度。
运行“磁盘碎片整理程序”整理磁盘碎片?二、优化AutoCAD系统1.优化AutoCAD R13或早期版本创建的二维多段线和关联填充自R14版起,AutoCAD以一种优化格式创建二维多段线和关联填充,这种优化格式可以节省内存和磁盘空间。
请使用CONVERT命令更新AutoCAD R13及其早期版本创建的填充图案或多段线。
2.删除图形数据库中没有使用的命名对象,有效缩减图形文件尺寸随着时间流逝,图形中可能会积累一些无用的命名对象(不在图中绘制出的对象)。
例如,图形文字不再使用的文字样式,或者不包含任何图形对象的图层;更有甚者,包含巨大的未使用的图块等。
清理操作只删除一个层次的引用。
可能需要重复执行三次以上方可彻底完成清理操作。
注意若在开始绘图时,执行清理废料,可能会清理掉已定义的绘图模板。
3.编组会严重影响选择类操作的速度,应删除编组是已命名的对象选择集,与未命名的选择集不同,编组是随图形保存的。
编组是属于命名对象,但可惜不能够用PURGE命令清除。
如果删除一个对象或把它从编组中删除使编组为空,那么编组仍保持原定义。
如若存在大量空的编组,严重影响选择速度。
学习AutoCAD二次开发技术的体会1 引言AutoCAD是一套向量式计算机辅助制图软件,具有强大的图形处理功能,目前它已经广泛应用于机械、电子、电气、建筑、土木服装等行业和领域。
最初版本的AutoCAD是在1982年发布的。
AutoCAD开放的结构体系,为用户提供了多种二次开发的工具,使得它的缺陷之处可以得到弥补,因此三十多年来它持续拥有旺盛的生命力。
AutoCAD的二次开发,能够实现参数化绘图,允许用户开发自己的命令、标准库文件和各种应用程序,能充分发挥AutoCAD的功能。
本文将介绍我学习Visual LISP这一种工具进行开发的过程和体会,说明我在学习过程中体会到的二次开发的特点和一些优点,并举一些具体例子。
2实施过程2.1LISP语言的主要学习内容总结2.1.1变量及其赋值:(1)LISP语言中变量的使用比较灵活,变量不用先定义和指定类型,需要的时候直接引入,而且其内容较为随意,可以是整数、实型数、字符串、点、表等等。
(2)变量的赋值主要用setq语句,格式为(setq 变量名要赋的内容)。
2.1.2基本的运算函数和数学函数:(1)加、减、乘、除、取余运算函数名分别为“+”、“-”、“*”、“/”、“rem”函数使用格式为(符号数1 数2 [数3…])。
(2)基本初等函数:指数函数(expt 底数自变量值)。
自然指数函数、自然对数函数、正弦、余弦、反正切、根式、绝对值函数分别是exp、log、sin、cos、atan、sqrt、abs,调用格式为:(函数名自变量值)。
2.1.3表处理函数:(1)表构造函数:(list n1 n2 n3 n4 […]),返回一个表。
配合赋值语句可把表赋值给变量,如(setq biao (list 1 2 3 4)),就把(1 2 3 4)赋给变量biao。
(2)表长度运算:(length 表),返回表元素的个数。
(3)表中元素的提取:(car 表)返回表中第一个元素。
AUTOCAD二次开发笔记(ObjectARX)---全部编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(AUTOCAD二次开发笔记(ObjectARX)---全部)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为AUTOCAD二次开发笔记(ObjectARX)---全部的全部内容。
ObjectARX开发环境的创建与开发实例Hello World(VS2005+AutoCad2008+ObjectArx2008)在一个做CAD二次开发的公司做Web开发,感觉可提升的空间很小。
有必要研究一下公司的产品开发,以利发展。
一、首先安装好vs05与cad2008安装cad的时候也没有什么特别,加载到虚拟光驱,安装过程中有个错误提示,不影响继续。
二、安装ObjectArx2008直接打开解压缩到某个目录即可。
比如C:\ObjectARX 2008然后打开C:\ObjectARX 2008\utils\ObjARXWiz目录,运行ArxWizards.msi这样在新建C++项目的时候会出现ObjectARX项目,如图三、包含文件工具—〉选项—>项目和解决方案-〉VC++目录,如图所示:包含文件(添加图中前两个目录即可)库文件(添加图中前两个目录即可)四、新建ObjectARX项目,完成后添加MFC支持,如图所示:然后直接点finish打开acrxEntryPoint.cpp点击左上角的a>按钮,然后新建一个命令。
如图:只需要修改Internation Name与Localized Name为testcmd即可添加完成后,会在acrxEntryPoint。
AutoCAD二次开发教程复习总结第一篇:AutoCAD二次开发教程复习总结红色部分为答案空白或不确定CAD复习题及答案1、AutoLISP2、VisualLISP3、VBA4、ADS5、ObjectARX红色部分为答案空白或不确定6、.NET 托管API7、ActiveX Automation红色部分为答案空白或不确定8、Visual Java1、AutoCAD二次开发方式有哪些?各自优缺点?2、AutoCAD 中实现 API 的有哪些优点?3、 API 的三个主要的DLL文件是?4、简述 API所对应的版本。
5、简述AutoCAD数据库的组成。
AutoCAD数据库是用来管理当前图形中的图元实体和其他非几何信息的容器对象,一个AutoCAD数据库包含一套固定的符号表和命名的对象词典,每一个符号表包含一个特定符号红色部分为答案空白或不确定表记录类的实例,例如层表(AcDbLayerTable)中包含层表的记录,块表(AcDbBlockTable)中包含块表记录,所有的AutoCAD实体均包含于块表记录中。
词典提供了一种通用容器来存储对象,它可以保存AcDbObject对象以及其它对象,也可以创建新的对象词典,将新的数据库元素加入其中。
AutoCAD数据库的组成如图所示,从图中我们可以看出数据库主要由一下内容组成:1)层表AcDbLayerTable和层表记录AcDbLayerTableRecord。
2)块表AcDbBlockTable和块表记录AcDbBlockTableRecord。
AutoCAD中所有可见实体均存储在块表记录。
块表中包含有两条特殊的记录*MODEL_SPACE(模型空间)和*PAPER_SPACE(图纸空间)。
3)其他符号表和符号表记录。
4)命名对象词典。
缺省情况下当AutoCAD数据库被建立以后,词典中就包括了组词典以及MILINE样式词典。
5)符号表和命名对象词典都是存储数据库对象的容器,用于组织和管理数据库对象。
AUTOCAD 二次开发总结论文一.题目DXF接口方法研究与实现二.摘要●根据设计计算结果,借助DXF文件以图形的方式在AutoCAD中再现,这一过程需用某种高级语言(如Fortran、C等),通过DXF 文件实现与AutoCAD的“接口”,自动生成所需的DXF文件可用程序来修改已有图形的实体特征或参数,以达到修改图形数据库的目的●对已有的图形,通过DXF文件可以提取有关的信息进行某种分析计算,其结果通过DXF文件在AutoCAD中再现分析后的图形。
●利用其它数据库修改图形数据库。
●可以进行新老版本的图形交换。
●可以与其它CAD系统互换图形文件。
由于上述各种功用,使得DXF文件成为AutoCAD与外部联系的主要接口方式之一。
它易于将AutoCAD的图形转换成其它CAD系统所能读取的文件格式,几乎适合所有微机CAD系统图形文件的交换。
三.关键词DXF,DXF文件接口子模块的建立四.正文1.引言AutoCAD系统的命令虽不能由高级语言(本文用Fortran或C)来调用,但却可以通过建立DXF接口子程序来调用。
接口程序的作用就是将高级语言与AutoCAD系统绘图命令联系起来,以便利用高级语言提供的数据生成能输入给AutoCAD的DXF文件。
DXF文件包括七部分,要编写一个构造完整的DXF文件的高级语言程序是很困难的且几乎不可能,因为必须保持其前后的一致性,以便让AutoCAD 能找到其所需的一切信息。
而在设计图中,仅需画出图形,标注尺寸,写出必要的说明,所以可省略标题节、类节、表节、块节及对象节,而只要实体节和文件结尾,就可以正常输入AutoCAD,生成可用的图形。
为了用高级语言编写绘图程序,必须先建立各种实体的接口子程序。
2.接口的建立DXF文件分成多个节(SECTION),每个节均由多个组(GROUP)组成。
每个节均由一个组值为字符串SECTION的0组开始,后跟组值为表示节名的字符串的2组,其后为组成该节的各个组,最后以组值为字符串ENDSEC的0组表示该节结束。
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二次开发知识点CAD是信息科技领域的重要技术之一,由于其广泛的应用领域和复杂的功能,为了更好地满足不同领域、不同客户的需求,开发人员们需要对CAD进行二次开发,以实现定制化的功能。
下面将一步步为大家介绍CAD二次开发的知识点。
第一步:学习CAD的基本知识CAD是一个复杂的软件,它包含了许多基础知识,需要开发人员做好基础知识的学习。
比如,开发人员需要了解CAD的版本、坐标系、图层、对象类型、命令等。
同时,对于不同客户需求,需要了解不同CAD软件的应用和使用特点。
第二步:学习CAD二次开发的工具和语言CAD二次开发有许多工具和语言,其中较为常见的工具和语言包括LISP、C++、VB以及.Net技术等。
这些工具和语言都有不同的使用特点和优缺点,需要根据不同需求选择适合的开发工具和语言。
第三步:开发CAD二次开发的功能CAD二次开发的核心在于实现定制化的功能,因此在开发过程中需要精心设计功能模块。
开发人员需要确定功能的逻辑、设计代码流程、测试和排除问题等。
此外,在开发过程中,需要注意代码规范,确保代码可维护性。
第四步:与CAD集成一旦定制的功能模块开发完成,就需要将其集成入CAD软件中。
在这个阶段,开发人员需要了解CAD软件和应用程序之间的交互方式,选择合适的接口进行集成。
第五步:测试和维护CAD二次开发的最后一步是测试和维护。
在测试阶段,开发人员需要进行单元测试、功能测试和综合测试,确保二次开发的功能正确。
在维护阶段,开发人员需要根据客户需求和软件版本的变化,进行bug 修复和功能升级。
总之,CAD二次开发是一项高难度的任务,需要开发人员具备扎实的CAD基础知识、良好的代码能力,以及对客户需求的深入理解。
只有不断学习和实践,才能够完成CAD二次开发的挑战。
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复习题及答案1、AutoLISP2、VisualLISP3、VBA4、ADS5、ObjectARX6、.NET 托管API7、ActiveX Automation8、Visual Java1、 AutoCAD二次开发方式有哪些?各自优缺点?2、 AutoCAD 中实现ObjectARX .NET API 的有哪些优点?3、 AutoCAD .NET API 的三个主要的DLL文件是?4、简述ObjectARX .NET API所对应的版本。
5、简述AutoCAD数据库的组成。
AutoCAD数据库是用来管理当前图形中的图元实体和其他非几何信息的容器对象,一个AutoCAD数据库包含一套固定的符号表和命名的对象词典,每一个符号表包含一个特定符号表记录类的实例,例如层表(AcDbLayerTable)中包含层表的记录,块表(AcDbBlockTable)中包含块表记录,所有的AutoCAD实体均包含于块表记录中。
词典提供了一种通用容器来存储对象,它可以保存AcDbObject对象以及其它对象,也可以创建新的对象词典,将新的数据库元素加入其中。
AutoCAD数据库的组成如图所示,从图中我们可以看出数据库主要由一下内容组成:1)层表AcDbLayerTable和层表记录AcDbLayerTableRecord,。
2)块表AcDbBlockTable和块表记录AcDbBlockTableRecord。
AutoCAD中所有可见实体均存储在块表记录。
块表中包含有两条特殊的记录*MODEL_SPACE(模型空间)和*PAPER_SPACE (图纸空间)。
3)其他符号表和符号表记录。
4)命名对象词典。
缺省情况下当AutoCAD数据库被建立以后,词典中就包括了组词典以及MILINE样式词典。
5)符号表和命名对象词典都是存储数据库对象的容器,用于组织和管理数据库对象。
AutoCAD数据库通常有9个固定类型的符号表,开发者不能向数据库中新增或者删除任何一种类型符号表,能实现的是向符号表中添加对应的符号表记录。
6、 Application 对象是AutoCAD .NET API 对象模型的根对象,它包括哪些部分?Application 对象是层次结构的根,而且它提供对AutoCAD 的主窗口的访问。
7、列出所有图形与非图形对象,他们有什么区别?图形对象,也称为图元,是组成图形的可见对象(例如直线、圆、光栅图像等):1)添加图形对象到图形中是通过正确的块表记录引用,然后使用AppendEntity 方法将一个新对象添加到图形中来完成的2)要修改或查询这些对象,请从正确的块表记录获得对象引用,然后使用对象本身的方法或特性。
每一个图形对象都拥有允许应用程序执行大部分AutoCAD 编辑命令的方法,例如复制、删除、移动、镜像等这些对象还提供了一些方法,用来设置和检索对象的扩展数据(xdata),亮显和更新对象,以及从另外的图元设置属性。
大多数图形对象具有诸如LayerId、LinetypeId、Color 和Handle 之类的典型特性。
每个对象也具有一些特有的特性,例如Center、StartPoint、Radius 和FitTolerance非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如Layers、Linetypes、DimStyles、TableStyle 等1)若要创建新的符号表记录,请使用表所有者的Add 方法或使用SetAt 方法添加一个字典到命令对象字典中2)要修改或查询这些对象,请使用对象本身的方法或特性。
每一个非图形对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法8、如何实现对AutoCAD数据库图形对象的访问?给出实例代码。
大部分的集合和容器对象都是通过Document 或Database 对象访问的。
Document 和Database 对象都包含一些相应的特性用来访问大多数可用集合的对象或对象ID。
例如,以下代码定义一个变量,并将其设置为当前图形的LayersTable 对象:9、AutoCAD中集合对象是指?列举出部分实例。
10、如何定义一个用户命令?CommandMethod 所接受的属性包括哪些?命令和AutoLISP 函数可以通过使用两个属性:CommandMethod 和LispFunction 就可以在AutoCAD .NET API 中被定义使用CommandMethod 属性定义一个命令,CommandMethod 属性期待一个字符串值,它将当作被定义命令的全局名称。
和全局命令名称一起,CommandMethod 属性还能接受如下值:【Command Flags】-定义命令的行为【Group Name 】- 命令组名称【Local Name 】- 本地化命令名称,通常用于特定语言【Help Topic Name】- 当按F1 键时应该显示的帮助主题名称【Context Menu Type Flags】- 定义当命令被激活时相应的快捷菜单的状态【Help File Name】-包含当命令激活并按F1 键时将要显示其中帮助主题的帮助文件11、如何通过代码调用AutoCAD内部命令?A、使用SendStringToExecute 方法可以直接将命令发送到AutoCAD 命令行。
SendStringToExecute 方法将单个字符串发送到命令行。
该字符串必须包含提供给所执行命令的参数,并依照该命令的提示顺序所要求的次序排列这些参数B、使用SendStringToExecute 执行命令是异步的,直到.NET 命令结束,否则不会被调用。
如果需要立即执行一个命令(同步),应该:1)使用COM Automation 库中的SendCommand 方法,它可以利用.NET COM Interop 访问2)使用ObjectARX 或.NET API 定义命令,P/Invoke 非托管的用于本地化的AutoCAD 命令的acedCommand 或acedCmd 方法3)通过定义AutoLISP 命令,P/Invoke 非托管的acedInvoke 方法12、如何实现图形对象的旋转、平移、缩放?请给出具体实现。
使用transformBy函数进行几何变换1)Entity.TransformBy(Matrix3d transform)2)transformBy是Entity类的一个成员函数,该函数使用一个Matrix3d参数对实体进行相应的几何变换3)Matrix3d是一个四维矩阵,常用函数:Translation:生成一个移动对象的矩阵Rotation:生成旋转矩阵Scaling:生成比例缩放矩阵。
Mirroring:生成镜像矩阵public static void Move(Entity ent, Point3d ptStart, Point3d ptEnd){ent.TransformBy(Matrix3d.Displacement(ptEnd - ptStart));}public static void Mirror(Entity ent, Line3d line){ent.TransformBy(Matrix3d.Mirroring(line));}public static void Scale(Entity ent, Point3d center, float scaleAll){ent.TransformBy(Matrix3d.Scaling(scaleAll, center));}public static void Rotate(Entity ent, Point3d center, double angle){//new Vector3d(0, 0, 1)应该是用来标识基准平面的,这里指的是在XY平面内旋转ent.TransformBy(Matrix3d.Rotation(angle, new Vector3d(0, 0, 1), center));}13、如何实现AutoCAD填充过程?14、如何创建用户菜单和用户工具条,请给出具体实现过程?菜单:工具条:15、有模态对话框和无模态对话框有什么区别?如何实现无模态对话框?模态对话框为不可切换焦点的对话框,一般用于静态的输入或输出数据或切换至AutoCAD拾取对象操作。
模态窗体显示时,程序的焦点始终保持在模态窗体上,如果要切换到AutoCAD环境进行交互时需要EditorUserInteraction类来切换焦点到AutoCAD的命令行无模态对话框为活动焦点的对话框,程序焦点可以自由的从AutoCAD界面到窗体之间切换,用于用户与AutoCAD环境的即时交互操作过程:1)引用命名空间Autodesk.AutoCAD.Windows2)创建用户控件并添加相应控件3)创建面板并加载用户自定义窗体4)添加拖拽操作,从Autodesk.AutoCAD.Windows.DropTarget 派生对象,并重载OnDrop5)在自定义窗体中创建“拖拽创建”控件,假设命名为“lb_drp”6)自定义用户窗体的构造函数中添加事件处理16、列出ObjectARX .NET API可以创建AutoCAD数据库中的所有图形对象,并给出创建代码。
17、用户交互输入包括哪些?如何判断用户输入值的有效性?A、读入字符串B、读入Double型数据C、读入PointD、拾取实体E、打开dwg文件18、一个AutoCAD的图形数据库中可以包含多个块表BlockTable和BlockTableRecord吗?块表:包含模型空间、图纸空间和用户创建的块定义,块表记录中保存了图形数据库中的实体。
生成一个实体对象的实质是向AutoCAD数据库的块表记录中增加一条记录。
在ARX 应用程序中,这个过程是通过ARX数据库操作函数来完成的。
因此,BlockTable只能有一个,而BlockTableRecord可以有多个19、AutoCAD可以定义哪些类型的块?它们有何区别?存在什么地方?带属性块的属性指的是什么的属性?分别给出所有类型块定义及引用代码。
带属性的块和不带属性的块,存在于当前图形数据库的块表里,属性指的是:使用AttributeDefinition类创建属性对象,它是从DBText类继承而来A、属性文字的插入点、高度、旋转角度、对齐方式和宽度。
B、属性提示(Prompt)。
C、属性的默认值。
D、属性的模式,如不可见方式(Invisible)、常量方式(Constant)、验证方式(Verify)E、预置方式(Preset)。
F、属性标签名(Tag)1)不带属性的块:A、块定义:blkid = bt.Add(blk);trans.AddNewlyCreatedDBObject(blk, true);mit();B、使用BlockReference类定义快引用,2)带属性的块A、定义B、块的引用:同上20、试分析Autodesk.AutoCAD. DatabaseServices与Autodesk.AutoCAD.Geometry 中的几何对象的区别、联系与作用?前者参见P98,后者参见P29221、如何在当前文件中插入外部文件中的块?在当前AutoCAD数据库中导入其他文件中的块,但文件本身是不会被当作一个块导入实现过程:A、首先定义一个数据库对象来表示包含块的文件,该数据库对象会被加载到内存中但不会被显示在AutoCAD窗口中B、调用Database类的ReadDwgFile函数将外部Dwg文件读入到新创建的数据库对象中C、调用Database类的WblockCloneObjects函数将外部Dwg文件中的块对象复制到当前数据库中22、如何在当前文件中插入其他DWG文件?在当前CAD图形文件中加载其他DWG文件其实质就是源数据库读取图形实体添加到当前的图形数据库中,基本过程如下:1) 创建目标数据库和源数据库2)通过源数据库的ReadDwgFile方法读取外部DWG文件3)使用Insert方法将外部DWG文件的源数据库合并到目标数据库中,那么外部文件在目标数据库的块表中就以新的块表记录存在ObjectId Insert(string blockName, Autodesk.AutoCAD.DatabaseServices.Database dataBase, bool preserveSourceDatabase)ObjectId idBTR = destDb.Insert(fname.Substring(n + 1, fname.Length - n - 5), sourceDb, false);4)将新建块表记录加载到当前块表记录中5)删除新建块表记录DBObject dbObj = Trans.GetObject(idBTR, OpenMode.ForWrite);dbObj.Erase();23、AutoCAD有哪些选择集过滤规则类型?请列举部分实例代码。