版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1CAD二次开发技术一二课案本课程要学习的内容第1章AutoCAD及其二次开发工具简介第2章
AutoLISP基本函数和绘图功能第3章
AutoLISP分支函数与循环结构第4章
AutoLISP输入输出函数和图形数据库第5章
AutoLISP对话框设计技术第1页/共37页§1.1AutoCAD简介§1.2AutoCAD二次开发§1.3AutoCAD二次开发工具简介§1.4AutoLISP语言概述第1章AutoCAD及其
二次开发工具简介
第2页/共37页§1.1
AutoCAD简介
AutoCAD是美国Autodesk公司开发的通用CAD软件,1982年首次推出了AutoCADR1.0版本,经过不断的版本更新,现最新的是AutoCAD2011版本。
AutoCAD是目前微机上应用最为广泛的通用交互式计算机辅助绘图与设计软件包。AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。用AutoCAD绘图速度更快、精度更高、而且便于个性,它已经在航空航天、造船、建筑、机械、电子、化工、美工、轻纺等很多领域得到了广泛应用,并取得了丰硕的成果和巨大的经济效益。
第3页/共37页AutoCAD软件具有如下特点:
(1)具有完善的图形绘制功能。
(2)有强大的图形编辑功能。
(3)可以采用多种方式进行二次开发或用户定制。
(4)可以进行多种图形格式的转换,具有较强的数据交换能力。
(5)支持多种硬件设备。
(6)支持多种操作平台。
(7)具有通用性、易用性,适用于各类用户。§1.1
AutoCAD简介第4页/共37页
为了适用于各种产品的设计需求,多数CAD软件的功能都具有很高的通用性。但由于针对性不强,用户需求与CAD系统规模之间的矛盾日益增加,存在设计效率不高的问题。在CAD软件平台上,结合具体的应用需求,总结行业的设计知识和经验,开发面向行业和设计流程的CAD系统,这就是所谓CAD二次开发。
AutoCAD的开放体系结构。允许用户采用高级编程语言对其进行扩充和修改。Autodesk公司自AutoCADv2.18版至AutoCAD2000的短短十几年间,就相继推出了三代二次开发工具。§1.2
AutoCAD二次开发第5页/共37页
AutoLISPAutoLISP是1986年随AutoCADv2.18提供的二次开发工具。它是嵌入AutoCAD内部的一种人工智能语言。使用AutoLISP可调用几乎所有的AutoCAD命令。AutoLISP语言最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL文件,创建自己的对话框。
AutoLISP适合于有能力的终端用户完成一些自己的开发任务。§1.3AutoCAD二次开发工具简介第6页/共37页VisualLISP(VLISP)VLISP是AutoLISP的换代产品。与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCADLISP语言。VLISP对语言进行了扩展,可以通过MicrosoftActiveXAutomation接口与对象交互。作为开发工具,VLISP提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以提高二次开发的效率。§1.3AutoCAD二次开发工具简介第7页/共37页VBAVBA是2000版本后具备的功能。它通过AutoCADActiveXAutomation接口对AutoCAD进行编程控制,是一个引入了对象的设计环境,为用户提供类似VisualBasic语言所拥有的功能,可以执行并存取
AutoCAD环境的所有资源,适合编写中型的数据库类的CAD软件。§1.3AutoCAD二次开发工具简介
ActiveXAutomation是微软公司推出的一个技术标准,其作用是在Windows系统的统一管理下协调不同的应用程序,允许应用程序之间相互控制、相互调用。
AutoCADActiveX技术提供了一种机制,可使编程者通过编程手段从AutoCAD的内部或外部来操纵AutoCAD。ActiveX是由一系列的对象组成,每一个对象代表了AutoCAD中一个明确的功能,如绘制图形对象、定义块和属性等等。ActiveX所具备的绝大多数AutoCAD功能,均以方法和属性的方式被封装在ActiveX对象中,只要使用某种方式,使ActiveX对象得以“暴露”,那么就可以使用各种面向对象编程的语言对其中的方法、属性进行引用,从而达到对AutoCAD实现编程的目的。
第8页/共37页ARXObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。ObjectARX应用程序是一个DLL(动态链接库),共享AutoCAD的地址空间,对AutoCAD进行直接函数调用。所以,使用ARX编程的函数的执行速度得以大大提高。ARX类库采用了标准的C++类库的封装形式,这也大大提高了程序员编程的可靠度和效率。由于是在Windows及VC++编程环境里运行,所以,对开发者的编程能力要求较高。§1.3AutoCAD二次开发工具简介第9页/共37页LISP(ListProcessingLanguage)是一种计算机的表处理语言,是在人工智能学科领域广泛应用的一种程序设计语言。
AutoLISP语言是嵌套于AutoCAD内部,将LISP语言与AutoCAD有机结合的产物。使用AutoLISP可直接调用几乎所有的AutoCAD命令。AutoLISP语言既具备一般高级语言的基本功能,又具有一般高级语言所没有的强大的图形处理功能。是当今世界上CAD软件中被广泛应用的语言之一。
AutoLISP程序设计较简单易懂,易于掌握。适合于有能力的终端用户完成一些自己的开发任务。
VisualLISP是AutoLISP的换代产品。与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCADLISP语言。VLISP对语言进行了扩展,可以通过MicrosoftActiveXAutomation接口与对象交互。§1.4AutoLISP语言概述第10页/共37页一、AutoLISP的数据类型整数:(-2147483648到+2147483648)实数:(-1.79769310308到+1.79769310308
)符号:包括除“(”、“)”、“.”、“‘”、“;”以外的任何打印字符。长度没有限制,大小写等价。字符串:包含在一对双引号内的一组字符包括任何可以打印的字符。区别大小写。最大长度为100个字符,100以后的字符无效。没有任何字符的字符串为空串:””§1.4AutoLISP语言概述常用术语“符号”来指储存静态数据的一个符号名,如内建式函数和自定义函数。常用术语“变量”来指存储程序数据的符号名(只有当前类型没有固定类型,字母开头,不用内部函数名和保留字符,如:+、-、*、/、<、>、.、;、(、)、pi、pause、T、nil等等)。AutoLISP的变量不需要事先定义。
每一个变量都要消耗少量内存,故当变量值不再有用时重复使用变量名或将变量设置成nil是良好的程序设计习惯。其值保持不变的变量称为常量,如:Pi整数、实数、符号、字符串在AutoLISP语言中称为原子。原子包括:数字原子、符号原子和串原子。第11页/共37页表:放在一对相匹配的左右括号内的一个或多个元素的集合。元素间用空格分开。有标准表和引用表两种类型。一、AutoLISP的数据类型§1.4AutoLISP语言概述表有标准表和引用表两种类型;AutoLISP程序就是用标准表来表示的;引用表用作数据处理,相当于其它高级语言的数组,提供了保存各种数据的有效方法。
引用表中的每一个元素可以是数字、符号、字符串,也可以是表。表可以嵌套。如:(231.5Adfg”程序”(20.030.00.0))仅有两个元素,并用“.”分开表称为点对。点对常用于构造连接表。原子和表是AutoLISP最基本的数据,总称为符号表达式(S-表达式)。表有标准表和引用表两种类型;AutoLISP程序就是用标准表来表示的;引用表用作数据处理,相当于其它高级语言的数组,提供了保存各种数据的有效方法。
引用表中的每一个元素可以是数字、符号、字符串,也可以是表。表可以嵌套。如:(231.5Adfg”程序”(20.030.00.0))仅有两个元素,并用“.”分开表称为点对。点对常用于构造连接表。第12页/共37页文件描述符:打开文件时的返回值,相当于其它语言的文件号,用于数据的存取。选择集:选择集是一个或多个对象的集合。实体名(图元名):是AutoCAD系统在绘图过程中赋予所绘对象的一个数字标号。确切地说,它是指向一个AutoCAD系统内部数据文件的指针。利用图元名,AutoLISP可以查找到图形对象的数据库记录,并对其进行各种方式的处理。一、AutoLISP的数据类型§1.4AutoLISP语言概述第13页/共37页AutoLISP语言中的一切设计成份都是以函数的形式给出的。它没有语句的概念或其它语法结构,执行程序就是执行函数,再调用函数。学习掌握AutoLISP语言,核心就是要掌握它的函数;学习AutoLISP函数要掌握的基本内容:(1)调用格式:即函数名、函数要求的参数个数和类型。(2)功能:即该函数的作用,它对其参数如何进行处理。(3)求值情况:即哪些参数被求值,哪些不被求值。(4)求值结果的返回值类型二、AutoLISP的函数§1.4AutoLISP语言概述这一点很重要,因为大多数函数的返回值都要被其它函数接受,而每个函数所需要参数都有特定的类型。因此只有搞清被调用函数的返回值的类型,才不会因用错函数的参数而导致错误。第14页/共37页AutoLISP程序是由一系列按顺序排列的标准表组成。每个标准表的第一个元素均为系统或用户定义的函数,其后的各元素为该函数的参数。如:(setqx25.0)(setqy25.0)(+(*xy)x)AutoLISP的程序的书写格式:
所有括号必须左右匹配;阅读AutoLISP程序时,按从左到右的规则进行;
函数必须放在表中的第一个元素位置;
一个表可以占多行,一行也可以写多个表;
AutoLISP用“;”作注释;
AutoLISP是以扩展名为“.lsp”的ASCII码文本文件的形式存储。三、AutoLISP的程序
(setqx25.0)
(setqx25.0)(setqy25.0)(+xy)§1.4AutoLISP语言概述第15页/共37页
程序编辑:
AutoLISP程序是纯文本文件,可以用任意一种ASCII码文本编辑器(如记事本)来进行编辑。编辑后以扩展名为“.lsp”进行保存。使用VisualLISP编程环境:打开AutoCAD2000及以上版本,点击“工具”菜单下AutoLISP(S)菜单项中的VisualLISP编辑器(V),进入VisualLISP编程环境
程序运行:将编辑好的程序,加载后,在AutoCAD的命令行Command下输入函数名即可运行。四、编辑和运行AutoLISP的程序§1.4AutoLISP语言概述第16页/共37页§2.1AutoLISP的基本函数§2.2AutoLISP绘图功能第2章AutoLISP基本函数和绘图功能第17页/共37页§2.1AutoLISP基本函数一、数值函数(1)数值运算函数加:(+<数1><数2>…)减:(-<数1><数2>…)乘:(*<数1><数2>…)除:(/<数1><数2>…)
注意防止除数为零,如:(/25(/49))求最大数:(max<数1><数2>…)求最小数:(min<数1><数2>…)求平方根:(sqrt<数>)求幂次方:(expt<数>)求绝对值:(abs<数>)第18页/共37页§2.1AutoLISP基本函数一、数值函数(2)三角函数正弦函数:(sin<角度>)<角度>用弧度表示余弦函数:(cos<角度>)<角度>用弧度表示反正切函数:(atan<数1><数2>)
若没有提供<数2>,atan返回<数1>的反正切值(单位为弧度)返回角度范围为-π到π;若提供了<数2>,则返回<数1>/<数2>的反正切值(单位为弧度);若<数2>为0,则返回值的符号同<数1>;其值为1.570796(90°)。第19页/共37页§2.1AutoLISP基本函数一、数值函数(3)数的类型转换函数取整函数:(fix<数>)
截去<数>的小数部分,将<数>转换为整型数。实型化函数:(float<数>)
将<数>转换为实型数。第20页/共37页§2.1AutoLISP基本函数二、符号与函数处理函数(1)赋值函数:(setq<符号1><表达式1>[<符号2><表达式2>]…)setq函数返回值是最后一个表达式的赋值结果。AutoLISP程序中作为参数的任何符号都必须先赋值。setq函数的求值结果很重要,常作为其它函数的参数。不使用系统内部函数作为变量查看变量的值,在AutoCAD的Command下可在变量前加”!”;在控制台下直接输入变量,回车。(2)禁止求值函数:(quote<表达式1>)也可简写成:’(<表达式1>)
禁止对表达式求值,返回<表达式>本身。第21页/共37页§2.1AutoLISP基本函数二、符号与函数处理函数(3)定义用户函数的函数:(defun<函数名><参数表><表达式1><表达式2>
…<表达式n>)<函数名>就是用户所定义的函数名,它必须是符号原子。<形参表>每个参数都是符号原子。由用“/”隔开的形参和局部变量组成。它可以是空表、只有形参、只有局部变量或形参和局部变量都有。<表达式>可以是一个或多个,在函数调用时对它们进行求值。利用defun可以为AutoCAD增加命令(defunC:XXX()….)第22页/共37页§2.1AutoLISP基本函数二、符号与函数处理函数(3)定义用户函数的函数:defun函数的调用是对已定义的函数的调用,其调用格式为:(<函数名><实参表>)
<实参表>中实参的个数与位置,要与函数定义的<形参表>中形实参的个数与位置逐一对应。Defun函数的返回值是所定义函数的函数名。执行完defun定义的函数,局部变量将被释放掉。全局变量可由任何函数访问和修改,或在任一表达式中使用。局部变量仅在定义它的函数求值期间(函数调用期间)有意义。第23页/共37页§2.1AutoLISP基本函数三、表处理函数(1)提取表中数据的函数:(car<表>)
提取表中第一个元素。(cdr<表>)
提取表中除第一个元素以外的所有元素组成表:(nth<n><表>)
提取表中第n个元素,n=0,1,2,…(last<n><表>)
提取表中顶层的最后一个元素。AutoLISP接受car和cdr的任意组合,
如:(cadar<表>)等效于(car(cdr(car<表>)。第24页/共37页§2.1AutoLISP基本函数三、表处理函数(2)构造和修改表的函数:(list<表达式>)
构造表:将任意数目的表达式的求值结果串在一起,并返回它们组成的表。(append<表>...)
构造表:将所有<表>中的元素串联在一起,构成一个新表。(cons<新的第一个元素><表>)
构造表:将<新的第一个元素>加入<表>,返回加入元素后的表;若<表>为原子,则构造一个点对表。(reverse<表>)
构造表:将<表>中的顶层元素倒排,构成一个新表。第25页/共37页§2.1AutoLISP基本函数三、表处理函数(3)提取并修改表中数据的函数:(assoc<关键字><连接表>)
连接表又称A-表。它是以点对或子表为元素组成的表。每个点对和子表的第一个元素称为关键字。函数assoc搜索<连接表>,以找到此表中的关键字,并提取包含关键字的子表,并返回该子表;若未找到关键字,则返回nil。(subst<新项><旧项><表>)
函数subst从<表>搜索<旧项>,将表中的每一个<旧项>用<新项>替换,并返回替换后的表;若未在<表>中找到<旧项>,则返回没有更改的表第26页/共37页§2.1AutoLISP基本函数三、表处理函数(4)表循环处理函数:(foreach<符号原子><表><表达式>)
该函数循环地将<表>中每一个顶层元素赋给<符号原子>再对循环体中的每一个表达式求值,并返回最后一次循环时循环体中最后一个表达式的求值结果。
(mapcar<函数名><表1>…<表n>)
该函数依次循环地把<表1>、<表2>…
<表n>的元素赋给<函数名>所指函数的相应参数,并调用此函数进行求值,把每次循环的求值结果按求值顺序构成一个表,作为mapcar函数的返回值。第27页/共37页§2.1AutoLISP基本函数四、字符串处理函数(1)数串互换函数:(itoa<整数>)
该函数将整数转换成整数字符串,返回字符串。(atoi<数字串>)
该函数将数字字符串转换成整数,返回整数。(atof<数字串>)
该函数将数字字符串转换成实型数,返回实型数。
第28页/共37页§2.1AutoLISP基本函数四、字符串处理函数(1)数串互换函数:(rtos<数>[<模式>[<精度>]])
该函数该函数根据<模式>和<精度>,将<数>转换成相应的字符串,其中<模式>和<精度>都为整数。
<模式>的值的意义:1科学计数格式2十进制格式3工程计数格式4建筑计数格式5任选的分数单位
<精度>:保留小数点后几位第29页/共37页§2.1AutoLISP基本函数四、字符串处理函数(2)字符串处理函数:(strcat<字符串1><字符串2>…)
该函数将<字符串1><字符串2>…按顺序头尾相连组成一个新的字符串,并返回这个新字符串。(substr<字符串1><开始><长度>)
该函数从<字符串>中截取一个子字符串并返回,其中<开始>和<长度>变量都必须是正整数
。(strlen<字符串>…
)
该函数求<字符串>中字符的个数(含空格)并返回。
第30页/共37页§2.2AutoLISP的绘图功能一、GET类输入函数GET类(屏幕)输入函数的通用格式:(getXXX[<提示>])
XXX:intrealstringpointdistangle…(getint[<提示>])从提示行输入一整型数;(getreal[<提示>])从提示行输入一实型数;(getstring[<提示>])从提示行输入一字符串;(getpoint[<提示>])从提示行输入一个点或在屏幕上用鼠标输一个点(getdist[<提示>])从提示行输入一个实型或整型值(距离值)或从屏幕上输入两点而决定距离。(getangle[<提示>])从提示行输入一个角度值或基于从屏幕上选取的点决定角度值。第31页/共37页§2.2AutoLISP的绘图功能二、Command函数(1)Command函数的格式(Command<参数>…...)<参数>格式取决于所执行的AutoCAD命令及其所需要的数据类型。即command函数中所调用的<参数>类型、个数、与顺序均要和AutoCAD命令严格对应。
AutoCAD的命令、子命令和选择项要用不含空格的字符串表示,大小写均可。数字常量(整数或实型数)可写成数本身也可写成字符串形式点常量有两种表示方法,一是用表的形式,如(10.025.0);二是用字符串中的数据表示如:”
10.0,25.0”。
command函数调用参数中的空串(“”),等效于在键盘上按一次空格键。
command函数调用的参数,如数字、点也可为表达式,但表达式求值结果的数据类型要和AutoCAD命令的要求一致。
command函数可以不带任何参数,相当于在键盘上按一次Ctrl+C。
AutoLISP具有强大的绘图编辑功能,主要是由于它提供了一个系统内部函数Command函数,利用Command函数可以非常方便地调用几乎全部AutoCAD命令,以完成各种工程图形的绘制功能。第32页/共37页§2.2AutoLISP的绘图功能二、Command函数(2)Command函数的功能
Command函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 哺乳期解除劳动合同协议范本
- 2024年房屋补漏维修工程合同
- 2024专项资金借款的合同范本
- 员工聘用合同协议书范文2024年
- 建设工程内部承包合同书2024年
- 2024新款供货合同协议书
- 2024【流动资金外汇借贷合同】公司流动资金合同
- 2024年公司股东之间借款合同实例
- 专业房屋买卖合同模板大全
- 2024年事业单位聘用
- 人教版(2024新版)七年级上册数学期中模拟检测试卷(含答案)
- 2024人工智能技术在内容创作和营销领域的应用及影响分析报告
- 《篮球原地运球 行进间运球》教案(共三篇)
- 2024-2030年中国裸眼3D行业市场全景调研与竞争格局分析报告
- 2025年九省联考新高考 政治试卷(含答案解析)
- 2024年统编版小学六年级《道德与法治》上册第四单元 法律保护我们健康成长 9.《知法守法 依法维权》 第一课时 课件
- 期中测试卷-2024-2025学年语文六年级上册统编版
- 学校消防系统维保及检测总体服务方案
- 网络安全试题题库及参考答案
- 终极战略规划指南:深度剖析Cross SWOT分析、市场洞察与内部能力优化的综合行动方案
- 《白描花卉妙笔生》 课件 2024-2025学年岭南美版(2024) 初中美术七年级上册
评论
0/150
提交评论