化工制图CAD教程与开发二次开发及AutoLISP.doc

上传人:jian****018 文档编号:9126397 上传时间:2020-04-03 格式:DOC 页数:19 大小:79KB
返回 下载 相关 举报
化工制图CAD教程与开发二次开发及AutoLISP.doc_第1页
第1页 / 共19页
化工制图CAD教程与开发二次开发及AutoLISP.doc_第2页
第2页 / 共19页
化工制图CAD教程与开发二次开发及AutoLISP.doc_第3页
第3页 / 共19页
点击查看更多>>
资源描述
wenku.baidu.com www.365xueyuan.com 百度文库帮手网 本文由xjqziqwdkr贡献 本文由wjcpeccdl贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第9章 二次开发及AutoLISP AutoCAD 二次开发在化工制图中的应用 ? AutoLISP语言基础 ? Visual LISP 基础 ? DCL基础 本章目录 本章目录 AutoCAD 二次开发在化工制图中的应用 二次开发的目的及必要性 ? 几种主要的二次开发语言简介 ? 化工AutoCAD二次软件开发的思路及步骤 二次开发的目的及必要性 AutoCAD软件作为CAD工业的旗帜产品,以其强大的功能得到广大用户的 青睐。它具有精确的坐标系,能够完成各种图形的精确绘制、任意缩放和修 改,支持数字化仪的精确输入。尽管如此,由于AutoCAD是作为一个通用的绘 图软件而设计开发的,但各行各业都有自己的行业和专业标准,许多单位也有 自己的技术规格和企业标准,化工行业也不例外,有着大量的各种图纸设计标 准,因而,AutoCAD不可能完全满足每一用户的具体应用要求。但是, AutoCAD具有开放的体系结构,它允许用户和开发者在几乎所有方面对其进行 扩充和修改,同时可以利用多种开发语言,开发可以自动完成某一绘制任务的 软件,可大大提高绘制速度,改善工作效率。以上工作可称之为AutoCAD的二 次开发技术。也就说AutoCAD二次开发技术主要包括两个方面:一方面是对它 的功能进行扩充和修改,如修改或增加菜单、进行各种定制工作;另一方面是 利用开发工具编写能够完成特殊任务的自动绘制软件,如下面将介绍的通过人 机交互界面输入必要的数据后,系统自动完成法兰的绘制,就属于这一类型, 在化工绘图中,我们需要的也是有关这一方面的开发软件,它能最大限度地满 足用户的特殊需要,通过调用各种已经开发好的专用零件图绘制软件,加快绘 制速度,提高工作效率。尤其重要的是,可以将大量的计算工作交给计算机去 完成。这样,不仅提高了绘图速度,同时也提高了绘制精度,避免了人为的计 算错误。 目前很多化工技术人员对AutoCAD的使用一般还仅限于它自身的各种绘图 功能,使用鼠标手工绘制各种图件,对其强大的二次开发功能还没有进行深入 使用。如果能使用AutoCAD的二次开发技术开发出一套软件,让AutoCAD自动 绘制我们目前使用的各种图件,就可以大大提高作图效率,发挥出AutoCAD的 强大图形编辑、修改功能,对图件中的各种元素进行任意修改,满足各种不同 的图件格式和绘图标准,由此可见,对于一个化工技术人员来说,学会自己开 发AutoCAD二次应用软件显得十分必要,因为这将大大减少具体的绘制工作, 而可以将主要精力集中到设备的设计中去,从而加快化工设备的开发速度。 近几年来,随着计算机软、硬件技术的飞速发展及其应用的普及,也带来 了化工领域使用计算机的浪潮。首先是各课程教学使用了CAI课件,学生们可 以清楚地看到各种物质的具体颜色,并可以看到动画反应,让学生们能够形象 生动地上课。然后是各种实验仿真软件的出现,让学生们不用亲自下到工厂, 也不用浪费任何原料,在没有危险的情况下就可以完成对实验过程或者是生产 流程的学习和实习。同时计算机可以对反应进行模拟,对实验数据的拟合都大 大方便了化工工作者。随之诞生的各种化工专用软件,给化学工业的发展注入 了新鲜血液,使化学工业的发展如虎添翼。 目前,随着化学工业的进一步向前发展,各种新的机械设备被人们设计和 制造,这些设备的工程图都是一件很大的工程。比如一个完整热交换器图纸, 就需要一个专人12天的工夫才能完成。利用AutoCAD的二次开发技术,可以 编出对热交换器的图进行批处理的程序,只需通过简单的人机会话,计算机能自 动绘制出图纸,这也是化工技术人员学习掌握AutoCAD二次开发技术的目的之 所在。随着化学工业的不断日新月异,对设备图纸绘制的速度要求也将越来越 快,利用AutoCAD二次开发技术开发而成的软件直接绘制各种设备的技术将在 化学工业中得到更加广泛的应用,其开发技术必将伴着化学工业一起发展。 几种主要的二次开发语言简介 AutoLISP AutoLISP语言是AutoCAD所支持的一种内嵌式语言,它由美国Autodesk公 司开发,其目的是使用户十分方便地利用AutoLISP编程语言对AutoCAD进行 二次开发,它采用了与LISP语言中的Common LISP最近的语法和习惯约定,同 时又针对AutoCAD增加了许多新的功能,使用户可以直接调用几乎全部的 AutoCAD命令,因此它既具有一般高级语言的基本结构和功能,又具有 AutoCAD强大的图形处理能力,是目前计算机辅助设计和绘图中较广泛采用的 语言之一。 Visual LISP Visual LISP(简称VLISP)是为加速AutoLISP程序开发而设计的强有力的 工具。它提供了一个完整的集成开发环境(包括编译器、调试器及其他工具, 它可以显著地提高自定义AutoCAD的效率)。Visual LISP提供的主要工具有: 文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文 件编译器、工程管理系统/快捷相关帮助与自动匹配功能和智能化控制台等。 Visual LISP克服了AutoLISP一直以来开发中所存在的诸多不便和某些局限 性。从语言方面看,Visual LISP对AutoLISP语言进行了扩展,可以通过 Microsoft ActiveX Automation接口与对象交互。同时,通过实现事件反应器函 数,还扩展了AutoLISP响应事件的能力。 VisualLISP已经被完整地集成到 AutoCAD中。 VBA VBA(Visual Basic for Application)最早是建立在Office 97中的标准宏语 言,由于它在开发方面的易用性且功能强大,许多软件开发商都将其嵌入自己 的应用程序中,作为一种开发工具提供给用户使用。而AutoCAD VBA就是集成 在AutoCAD中的Visual Basic开发环境,与VB的主要区别是VBA在与AutoCAD 相同的进程空间中运行,提供了与AutoCAD关联的快捷的编程环境,程序设计 直观快捷。它还提供了与其它可使用VBA应用程序集成的能力,可以作为其它 应用程序如Word或Excel的自动化控制器。可以看出,VBA是其中编程很为快 捷方便的一种,对于非计算机专业而更多熟悉VB编程语言的人来说,可以很快 就掌握它。 ADS ADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发 系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标 库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执 行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执 行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因 而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、 建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。 ObjectARX ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C+为编程 语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环 境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并 没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是 ObjectARX for AutoCAD 2005,它能够对AutoCAD的所有事务进行完整的、先 进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、 稳定性更强。 ActiveX Automation ActiveX技术来源于 OLE(Object Linking and Embedding)技术。OLE最初 是对象链接与嵌入,后来发展成为复合文档技术,包括文字、图片、声音、动 画片和视频等媒体可以共同存在于一个文档中。它们可以由不同的应用程序产 生,同时也可以在该文档中编辑。如果应用程序支持OLE文档,则在不同应用 程序之间的切换由OLE自动完成。OLE技术和其它技术共同作用,从而实现不 同应用程序之间的无缝链接。 自动化技术(Automation)允许一个应用程序驱动另外一个程序。驱动程 序被称为自动化客户,另一个为自动化服务器。自动化技术后来发展成为 ActiveX Automation。 Visual Java Java是最早由Sun公司创建的一种颇具魅力的程序设计语言,她是针对嵌 入系统而设计的。像许多开发语言一样,Java是一组实时库的集合,可为软件 开发者提供多种工具来创建软件、管理用户接口、进行网络通讯、发布应用程 序等。对AutoCAD用户和开发者而言,Java代表着新一代的编程语言,它主要 用于开发出全新的优秀产品。 化工AutoCAD二次软件开发的思路及步骤 化工AutoCAD二次软件的开发和其它软件的开发一样,均需遵循一定的 规律。一般来说,一个完善的AutoCAD二次软件开发过程可以分成4个阶段的 内容,它们分别是系统规划、系统开发、系统运行与维护、系统更新。而系统 规划又可以分成3个方面的内容,它们分别是战略规划、需求分析、资源分配。 在这个阶段,我们主要任务是确定所需要开发软件的目的、使用对象、使用者 的要求、开发者目前的能力及拥有的资源。软件开发的第二阶段是系统开发, 它包括系统分析、系统设计、系统实施。这时的主要任务根据第一阶段已经做 的工作基础上,提出所开发软件的逻辑方案、确定系统开发中每一步的内容和 任务,在此基础上,再进行系统总体结构设计,提出系统总体布局的方案。至 此,软件开发工作还停留在逻辑开发状态,尚未进入具体的编码工作。 软件开发完成第二阶段的系统设计后,就进入了实质性的编码工作,也 就是说进入了系统的实施阶段,这时要完成各种编码工作,完善系统各个接口 之间的联络,改善界面的友好程度,对整个软件进行组装及调试,最后完成交 付使用前的各项工作。如该保密的部分需要进行封装;可以公开的部分需要做 好友善的人机界面。 软件开发的第三阶段是运行和维护阶段,一般对于规模较小的软件,对 这方面的考虑就比较少。比如我们自己经常开发一些小软件来解决一些实际 问题,就较少考虑以后的维护,一般只要满足目前的应用就可以了。但对于 一个完善的软件来说,就需要考虑实际运行过程中出现的各种情况,并有解 决方案及维护方法。这样,就会使得一个看上去较小的软件,也会变得复杂 起来,但这种复杂为使用和维护带来了方便,提高了软件对付外来情况的能 力,提高了软件的使用寿命,实际上等于节约了软件使用成本。 任何一个软件,总有它更新的时候,此时,进入了软件开发的第4阶段, 即系统更新阶段,在新的情况下,对原有的系统进行更新开发。 本章目录 本章目录 AutoLISP语言基础 ? ? ? 基本运算 基本函数 编程中常用的分支及条件判断函数 常用的绘图命令 AutoLISP命令调用过程 基 本 运 算 加法 格式:(+ ) 功能:求出所列数的总和 实例:(+ 20 30) 结果为50 (+ 15 -10) 结果为5 减法 格式:(- ) 功能:求出第一个数逐次减去后面数的差 实例:(- 120 30 50) 结果为40 (- 15 -10) 结果为25 乘法 格式:(* ) 功能:求出所列数的乘积 实例:(* 20 30) 结果为600 (* 1.5 -10 2) 结果为-30 除法 格式:(/ ) 功能:求出第一个数逐次除以后面数的商 实例:(/ 20 ) 结果为20 (/ 130 2) 结果为65 (/ 3 30) 由于表中的两个元素均为整型数,结果也为整型 数,故结果为0 (/ 3.0 30) 结果为0.1 (/ 30 (/ 6 9) 系统显示被0除,原因在于表(/ 6 9)的值为0 基 本 运 算 自然数求幂 格式:(exp ) 功能:求e的次幂值,e=2.71828 实例:(exp 2.0 ) 结果为7.3890561 (exp 0) 结果为1 普通数求幂 格式:(expt ) 功能:求的 次方值 实例:(expt 2 3) 结果为8 求自然对数 格式:(log ) 功能:求的自然对数,要求必须大于零 实例:(log 10.0) 结果为2.3025851 求平方根 格式:(sqrt ) 功能:求的平方根,要求必须大于零 实例:(sqrt 4.0) 结果为2.0 基 本 运 算 求绝对值 格式:(abs ) 功能:求的绝对值 实例:(abs -3) 结果为3 求最大值 格式:(max ) 功能:求, 的最大值 实例:(max2 3 4 10) 结果为10 求余数 格式:(rem ) 功能:求整除的余数,若参数多于两个,则将整除后 的余数再整除,求出余数,以此类推。 实例:(rem 50 9 4) 结果为1 基 本 函 数 正弦函数SIN 格式:(sin ) ,其中 用弧度表示 功能:求的正弦值 实例:(sin (/ pi 2) 结果为1 余弦函数COS 格式:(cos ) ,其中 用弧度表示 功能:求余弦值 实例:(cos (/ pi 2) 结果为0 正切TAN 格式:(tan ) ,其中 用弧度表示 功能:求正切值 实例:(tan (/ pi 4) 结果为1 反正切函数ATAN 格式:(atan ) 功能:求反正切值,单位为弧度,为-/2,/2 实例:(atan (1) 结果为0.785398 , 即(/4) 实例:(cos (/ pi 2) 结果为0 基 本 函 数 取整函数FIX 格式:(fix ) 功能:求的整数部分,相当于高级语言中的“INT(数)”语句。 实例:(fix 7.8) 结果为7 (fix -7.8) 结果为-7 (fix 9) 结果为9 实型化函数FLOAT 格式:(float ) 功能:求转化为实型数,不考虑该数原来的类型 实例:(float 3) 结果为3.0 (float 3.3) 结果为3.3 赋值函数SETQ 格式:(setq ) 功能:将表达式的值赋给变量,变量和表达式需成对出现 实例:(setq a 10) 结果 a=10 (setq s “it” ) 结果 s=“it” (setq b 123 c 10 d 45) 结果 b=123 c=10 d=45 (setq t (+ 34 45) 结果 t=79 (setq P1( 34 45) (setq p1 (30 40) /确定点P1的坐标 (setq p2 (300 400) /确定点P2的坐标 (command “line” p1 p2 “”) /绘制从P1点到P2点的直线 基 本 函 数 取表中第一元素CAR函数 格式:(car ),表必须为引用表而非标准表,但可以是简单表,也 可以是嵌套表。 功能:提取的顶层第一个元素 实例:(car (1 3 5) 结果为1 (car ((1 3)6 5) 结果为(1 3) 取表中除第一元素外其它元素的CDR函数 格式:(cdr ),表必须为引用表而非标准表,但可以是简单表,也可 以是嵌套表。 功能:提取的除顶层第一个元素外的其它元素 实例:(cdr (1 3 5) 结果为(3 5) (cdr ((1 3)6 5) 结果为(6 5) CAR和CDR的组合函数 CAR和CDR可以任意组合,其组合深度可达4层,执行时从右到左依次执行, 若搞错次序,其结果必然出错。4个层次的组合形式为CAR、CXXR、CXXXR、 CXXXXR,其中X既可以是A也可以是D,例如: (cadr (2 (1 2 3) 34 ) 结果为(1 2 3) (caadr (2 (11 6) 2 3) 34 ) 结果为(11 6) (caaadr (2 (11 6) 2 3) 34 ) 结果为11 (caaddr (2 (11 6) 2 3) (3 4) ) 结果3 基 本 函 数 LAST函数 格式:(last ),表必须为引用表而非标准表,但可以是简单表,也可以 是嵌套表。 功能:提取的顶层中最后一个元素 实例:(last (1 2 3) 结果为3 (last (12 3 (4 5) 结果为(4 5) NTH函数 格式:(nth ),表必须为引用表而非标准表,但可以是简单表, 也可以是嵌套表。 功能:提取中第个元素,注意第一个元素的序号为0号,以此类推。 实例:(nth 2 (2 3 (4 5) 5) 结果为(4 5) (nth 3 (2 3 (4 5) 5) 结果为5 LIST函数 格式:(list ) 功能:将所有的按原位置构成新表,可用于确定点的坐标位置。 实例:(list 2 3 (5 6) 结果为(2 3 (5 6) (list 2 3) 结果为(2 3) 下面是一个利用list确定点的位置,绘制圆的小程序: (setq p1 (list 222 33) (setq p2 (list 200 300) (command circle p2 160) (command circle p1 160) ATOF函数 格式:(atof ) 功能:将转换成实型数,返回实型数 实例:(atof 23) 返回结果为23.0 基 本 函 数 ASCII函数 格式:(ascii ) 功能:将中第一个字符转换成ASCII码,并返回该值 实例:(ascii b c) 返回结果为98 CHR函数 格式:(chr ) 功能:将ASCII码为的转换成相应字符,并返回该字符 实例:(chr 69) 返回结果为E (chr 80) 返回结果为P“ ITOA函数 格式:(itoa ) 功能:将转换成整数字符串 实例:(itoa 5) 返回结果为5“ 基 本 函 数 ATOI函数 格式:(atoi ) 功能:将转换成整数,返回值截去小数部分 实例:(atoi 45.4) 返回结果为45 (atoi -5.6) 返回结果为-5 (atoi 7) 返回结果为7 (atoi 34.6ac) 返回结果为34 (atoi df43)45 返回结果为0 说明:当数字串中有非数字字符时,则转换到第一个非数字原子时终止。 STRCAT函数 格式:(strcat ) 功能:将按先后顺序头尾相连起来,组成一个新的字符串。 实例:(strcat bc etr ty) 返回结果为bcetrty 基 本 函 数 (20)SUBSTR函数 格式: (substr 功能:从中提取一个子串,该子串从起点的字符位置开始,由连续 个字符组成,若缺省,则到字符串结束。 实例: (substr b212c 2 3) 返回结果为212 (substr b2er12c 2) 返回结果为2er12c“ (21)READ函数 格式: (read ) 功能:将转化成表或原子,文件处理时经常使用 实例:(read ad) 返回结果为AD (read b) 返回结果为B (read (a b) 返回结果为(A B) (read (3 4) 返回结果为(3 4) 编程中常用的分支及条件判断函数 在程序编写中经常会用到一些条件判断函数及循环函数,没有这些函数,就 难以完成一个理想的程序,下面将一些在编程中使用程度较高的函数介绍一下。 关系运算函数 关系运算函数是编程中分支及条件判断函数的基础,它对数值型表达式的大 小进行比较,表达式可以是两个或两个以上,其返回值是逻辑变量。比较运算成 立,则返回T;不成立则返回nil,常作为条件用于条件判断语句和循环判断语句 中,这一点将在下面讲解中提到。AutoLISP共有6种关系运算函数,它们分别是 “=”等于、“/=”不等于、“”大于、“=”大于等于。其中 等于的关系函数,其表达式只能两个,下面是6种关系函数的实际例子: ( 2 4 5 6) ( 8 7 3 9) ( 8 7 3 1) (= 2 2) (= s b) (/= 1 2 3) (/= 1 1 3) (= 5 5 1) 返回结果T 返回结果nil,全程比较 返回结果nil,全程比较 返回结果T 返回结果T 返回结果nil 返回结果T 返回结果nil,只比较前面两个表达式 返回结果T 返回结果T 逻辑运算函数 AutoLISP共有3种逻辑运算函数,分别是逻辑和AND、逻辑或OR、逻辑非 NOT,下面通过实例说明其应用。 (and a d c 3) (and d c) (setq a 3 b 4) (and a b) (and ( 3 5) (or 1 2 a b) (or ( 4 2) ( 6 9) 返回结果nil,只要有一个表达式为假,则返回nil 返回结果nil 返回结果4,返回最后一个赋值 返回结果T,由于前面给a、b赋了值 返回结果nil 返回结果T,只要有一个表达式为真,则返回T 返回结果T 返回结果nil 返回结果T 二分支条件函数IF 格式: (if ) 功能:对进行运算,若成立,则执行,否则,执行,两者必居其一,所以称之为二分支条件函数,是 在编程中经常用到的条件判断函数。下面是几个实际例子: (if (= 1 3) 3 5) 测试式不成立,执行第二个表达式,第二个表达式为原子,返回5 (if ( 1 3) (setq a 2) (setq a 9) 测试式成立,执行第一个表达式,返回2 (if (= 1 3) yes) 测试式不成立,但无第二个表达式,返回nil (if 1 yes no) 测试表达式为1,虽然不为T,但也不为nil,仍执行第一表达式,返回“yes” 多分支条件函数COND 前面二分支条件函数只能解决两种结果中选一种的条件判断,若有多个 条件中选一,则需用COND函数。 格式:(cond ( ) ( ) : : ( ) ) 该函数的参数为任意数目的表,每个表有两个元素,第一个元素为测试 式,第二个元素为结果。 功能:对每一个支表中的依次进行运算,若 成立,则执行该支表对应的,停止后面的测试工作;否则,继 续执行,直到最后一个分支条件。 顺序控制函数PROGN 常和IF函数一起使用,使其在某一条件下,顺序执行多个表达式。 格式:(progn : : ) 功能:按顺序执行多个表达式,并返回最后表达式求值结果,表达式需为 标准表。 常见测试函数 ZEROP函数用于判断测试项是否为零,若为零,则返回T,否则返回nil。 MINUSP函数用于判断测试项是否为负,若为负,则返回T,否则返回nil。 NUMBERP函数用于判断测试项是否为数,若为数,则返回T,否则返回nil。 ATOM函数用于判断测试项是否为原子,若为原子数,则返回T,否则返回nil。 LISTP函数用于判断测试项是否为表,若为表,则返回T,否则返回nil。 循环函数 在各种程序编写中,循环语句是不可缺少的,AutoLISP的两种主要循环函 数是WHILE函数和REPEAT函数,下面分别介绍之。 WHILE函数 格式:(while 标准表1 标准表2 : ) 功能:先对测试表达式进行测试,若其值不为nil,则依次执行下面的各个 标准 表,执行完各 标准表后,再返回来对测试表达式进行测试,直至测试表达式为nil, 停止循环执行。 REPEAT函数 格式:(repeat 标准表1 标准表2 : ) 功能:按该定的次数进行循环计算式为nil,停止循环执行。 常用的绘图命令 常用的交互命令 在程序编写中经常要用到一些交互式命令,通过交互命令,可提高程序的人 机对话能力。AutoLISP也提供了一些常见的交互命令,下面分别介绍。 输入整型数GETINT 格式:(getint提示) 功能:该函数提示用户输入一个整型数,并返回该数,常和赋值函数SETQ合用 实例:(setq n (getint“n=”) /等待用户输入一个整型数,并将该数赋值给n。 输入实型数GETREAL 格式:(getreal提示) 功能:该函数提示用户输入一个整型数,并返回该数,常和赋值函数SETQ合用 实例:(setq a(getreal“a=”) /等待用户输入一个实型数,并将该数赋值给a。 输入字符串GETSTRING 格式:(getstring提示) 功能:该函数提示用户输入一个字符串,并返回该数,常和赋值函数SETQ合用 实例:(setq m (getstring“your name”) /等待用户输入一个字符串,并将该字符串 赋值给m,若输入xiaodong ,返回“xiaodong”。需要注意的是输入字符串时,千万别用空格 键,否则只把空格键以前的内容作为输入的字符串。 输入点GETPOINT 格式:(getpoint基点 提示) 功能:该函数提示用户输入一个点,若有基点,这将从基点到输入的点之间画一条直 线拖动直线,但命令执行过后消失。 实例:(setq P1 (getpoint (40 50) “第二点”) /等待用户从键盘输入点或用光标选点。 输入距离值GETDIST 格式:(getdist 提示) 功能:该函数提示用户输入一个距离值。 实例:(setq tspac (getdist “输入距离”) /等待用户从键盘输入某一数值。 点的确定 确定点的位置,是进行各种绘制工作的基础,除了前面介绍的用getpoint函数外,还可 以用下面几种方法确定点(通过绘制直线的小程序加以说明验证)。 实例:(setq p1 (30 40) /用禁止求值表,确定P1点的位置 (setq p2 (300 400) (command line p1 p2 ) 直线的绘制LINE 格式:(command “line” P1 P2 P3条件) 功能:将P1、P2、P3.等点用直线连接起来,其中条件可缺省,若条件中输入 “c“,则绘制的将是封闭曲线。 多义线绘制 格式:(command “pline” “w” 条件) 功能:将P1、P2、P3.等点用各种曲线连接起来,其中条件可缺省,若条件中输 入“c“,则绘制的将是封闭曲线。 矩形绘制 格式:(command“rectang” 倒角(C)/标高(E)/圆角(F)/厚度(T)/宽度(W) 尺寸(D) ) 功能:绘制符合格式中定义的矩形。 圆的绘制 格式:(command“circle” 三点(3P)/两点(2P)/相切、相切、半径(T)圆心 ) 功能:绘制符合格式中定义的圆,默认的输入方式是圆心、半径,其它输入方式需根 据具体选定的形式而定。 交点的确定 格式:(inters ) 功能:求和所确定的直线和和所确定的直线的交点, 若存在则返回交点,若不存在,则返回nil。如果有任选项,且该项为nil,则可求延长线的 交点。 图层的设置 格式:(command “layer” “m” “c” “l” “lw” ) 功能: 设置和格式中描述相符合的图层,除图层名为不可缺省外,其它均可采用默认 值,当调用图层时,可只采用格式中的前4项。 剖面线绘制 格式:(command “batcht” ) 功能:将 按格式中定义的要求进行填充,其中和可默 认,有多种获取方法,如果是填充刚绘制好的实体,则可用entlast命令。 尺寸标注 格式:(command “dim” ) ) 功能:和 之间按标注模式标注尺寸,若标注内容缺省,则按 默认方式标注。 文本书写 格式:(command “text” ) 功能:将文字内容按格式中的定义书写出来,如缺省则以左下角为起点。 AutoLISP命令调用过程 首先将AUTOLISP的程序用任何一种ASCII码文本编辑器来编辑,在 DOS环境下可采用EDIT编辑,在WINDOWS环境下可用附件中的记事本编 辑,并注意在保存时以.LSP为后缀,一般的调用过程如下。 用编辑器编写好,以*.LSP存盘。 在AutoCAD中的命令中输入: (Load“盘符/子目录/文件名”),回车。 输入: (文件名、参数1、参数2 )注意参数和参数之间不要加逗 号,回车。 在AutoCAD的界面上自动生成图。 本章目录 本章目录 Visual LISP 基础 ? ? ? 安装 启动 编辑 调试 安装 Visual LISP无需单独安装,我们在安装AutoCAD 2004时已经将其 捆绑按安装在一起,只要在使用时调用它即可,这为我们省了不少安 装软件过程中的麻烦,同时也使得该软件和AutoCAD之间的关系更加 紧密。尤其是Visual LISP中的部分Auto LISP程序几乎可以移植到任何 版本的AutoCAD中,而不受版本先后的影响。 启动 启动Visual LISP有两种方法,但都需首先启动AutoCAD软件。 第一种方法是从AutoCAD菜单中选择“工具”“AutoLisp”“Visual Lisp编辑器”;第二中方法是在AutoCAD命令行中输入“vlisp”,启动 Visual Lisp编辑器。 编辑 Visual LISP的程序在编辑窗口进行编辑,编辑时,系统会自动进行 一些识别,并将其显示成不同的颜色。如括号是红色;函数是蓝色,如 果想输的是各种函数,一般为表中第一项,但输完后系统没有自动变成 蓝色,则说明你输错了;双引号内的绘图命令为粉红色,包括双引号本 身;各种变量是黑色;数字是绿色。掌握这些规律对减少编程中的错误 很有帮助。在编程过程中,如果遇到一些较为生疏的函数,可以通过系 统的帮助功能加以解决。 调试 调试是编程工作中一项十分重要又非常繁重的工作。在没有Visual LISP之前,Auto LISP程序的调试是十分困难的,常常找不到问题之所在。 幸好有了Visual LISP,使调试工作有了质的飞跃。利用其提供的调试工具 和专用工具,一般可以较快地找到问题。系统调试中最常见的错误是缺少 括号或有多余括号;其次是错误函数或命令,常常是绘图命令输错,因为 若函数错误,在编写中可以根据颜色判断;还有列表缺陷,被零除及函数 被取消。对函数被取消这种现象有点特殊,因为它并不是当前所编的程序 有问题,而是在上一次调试过程中,所编程序存在缺陷,使的AutoCAD处 于命令等待状态。这时,需要通过视图转换,激活AutoCAD,取消命令等 待状态,就可以了。根据我们自己开发程序的经验,认为调试工作需和整 个软件的开发工作结合起来。在程序开发的步骤上考虑到调试工作问题, 以采用从下到上的程序编程工作为佳,结合该方法,作者推荐如下的编程 调试步骤。 将整个软件分解成功能相对独立的功能块,再将功能块分解成若干 个小程序。 将小程序中的每一个语句,按照先后次序进行编辑。在编辑过程中 首先利用颜色的改变,纠正一些明显的错误,如果对某一语句把握不大, 可直接加载该语句,判断系统能否通过。关于加载运行可通过选中需要加 载的语句,点击专用工具中栏中的第二个工具,一般情况下,以编完相对 较完整的一段语句后,再将这段进行加载运行较好,如所有的赋值语句。 一段语句编写完成,加载运行结果正确,则进入下一段语句的编写。如正 确,但根据错误提示可明显找到问题的,则修改后再加载运行;如无法根 据错误提示找到问题的,则可以采用调试工具栏中的各种方法进行错误查 找,如仍无法查到,则需逐句加载,但在逐句加载中,需要补充对加载语 句中所需变量值的设定工作。通过以上工作,将小程序全局调通,并进行 封装。 将同一功能的小程序进行组装,并进行调试,调试完成,将功能程 序进行封装。 将不同功能的功能程序进行组装,并进行全局调试,调试通过,完 成软件基本开发工作。 根据客户应用的各种情况,对软件进行各种测试,对发现问题进行 修改,最后得到完善软件,并将其封装。 本章目录 本章目录 DCL基础 ? ? ? 定义 控件 程序编辑 软件调试及加载 定义 对话框是人机交互的主要界面之一,它具有良好的视觉效果, 操作方便、直观,输入数据与顺序无关。当我们编写好程序,需要 通过外界输入数据时,对话框是一种首选的交互工具。对话框可以 用DCL(Dialog Control Language,即对话框控制语言)来编写。DCL 本身可直接在Visual LISP的编辑框中按规律编写,并进行调试和预 览工作,编辑完成后,将其后缀取为“.dcl”保存,然后在主程序中用 Visual LISP语句调用即可。可向用户提供图形的交互环境,使操作 更为方便和直观。DCL文件由ASCII码组成,后缀为“.dcl”。 控件 控件是DCL中的主要组成部分,编写对话框主要就是编写各种控件, 对各种控件的属性进行定义,常见的控件主要有Button(按钮)、Edit_box (编辑框)、Image_button(图像按钮)、List_box(列表框)、Popup_list (可下拉列表框)、Radio_button(单选按钮)、Slider(滑动条)、Toggle (复选框)、Text_part(文本控件的一部分)。每一个控件有具有不同的属 性,其中控件的典型属性有以下几种。 Label 指定显示在控件中的文字,该属性为一带引号的字符串。 Edit_limit 指定在编辑框中允许输入的最大字符数个数,缺省值为 132。 Edit_width 以平均字符宽度为单位指定Edit_box控件中编辑或输入 框的文本宽度,该属性值可以是一个整型或实型数值。 Fixed_height 布尔型数值,制定控件的高度是否可以占据整个可用 空间。缺省值为False,如果属性值为True,则控件的高度保持固定,不会 占据由于布局或对齐操作而留出的可用空间。 Fixed_width 布尔型数值,制定控件的宽度是否可以占据整个可用 空间。缺省值为False,如果属性值为True,则控件的宽度保持固定,不会 占据由于布局或对齐操作而留出的可用空间。 Key 指定一个ASCII码名称,应用程序可以通过该属性引用指 定的控件,该属性为一带引号的字符串,没有缺省值。对话框中各控件 的Key值必须是惟一的。注意:Key值区分大小写。 Value 指定控件的初始值。该属性值为一个带引号的字符串, 无缺省值。其中编辑框的Value值为缺省时的数值,可以不用加引号。 Aspect_ratio 指定图像的宽高比。如果属性值为0.0则图像大小 占据整个控件。 column 控件按钮纵向排列,注意需从整体上观察。 row 控件水平排列,同样需丛整体上观察。 程序编辑 下面通过一个较典型的对话框来说明对话框程序的编写过程。首先来 观察一下这个对话框的结构,从大范围来看,是一个大列,列中共有5大 行组成,其中第二行又是一个框型列,而第三行是一个框型行,需要进行 重新定义。另外在第一大行和第二大行之间留一个空白。 图9-9 对话框逻辑位置示意图 图9-10 具体对话框示意图 软件调试及加载 软件编写好后,先将文件以后缀“.dcl”保存,将会发现除了程序 中最前面的对话框名称dialogboxstructure是黑色以外,其它都是有颜 色的。如果还发现有黑色的字符在控件名称或属性说明中出现,请先 检查修改之,等程序满足颜色要求后,点击菜单栏中的“工具”,选择 其中的“界面工具”,再点击“预览编辑器中的DCL”。如果所编程序正 确的话,系统就会弹出正确的对话框;反之,系统会弹出出错信息, 并说明错误在第几行。用户需根据系统提示的问题进行修改,直至在 预览中获取正确的对话框。对话框程序编写好后,在具体应用时,尚 需编写调用程序。 本章目录 本章目录 实例开发 详见教材 1 1本文由xjqziqwdkr贡献 本文由wjcpeccdl贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第9章 二次开发及AutoLISP AutoCAD 二次开发在化工制图中的应用 ? AutoLISP语言基础 ? Visual LISP 基础 ? DCL基础 本章目录 本章目录 AutoCAD 二次开发在化工制图中的应用 二次开发的目的及必要性 ? 几种主要的二次开发语言简介 ? 化工AutoCAD二次软件开发的思路及步骤 二次开发的目的及必要性 AutoCAD软件作为CAD工业的旗帜产品,以其强大的功能得到广大用户的 青睐。它具有精确的坐标系,能够完成各种图形的精确绘制、任意缩放和修 改,支持数字化仪的精确输入。尽管如此,由于AutoCAD是作为一个通用的绘 图软件而设计开发的,但各行各业都有自己的行业和专业标准,许多单位也有 自己的技术规格和企业标准,化工行业也不例外,有着大量的各种图纸设计标 准,因而,AutoCAD不可能完全满足每一用户的具体应用要求。但是, AutoCAD具有开放的体系结构,它允许用户和开发者在几乎所有方面对其进行 扩充和修改,同时可以利用多种开发语言,开发可以自动完成某一绘制任务的 软件,可大大提高绘制速度,改善工作效率。以上工作可称之为AutoCAD的二 次开发技术。也就说AutoCAD二次开发技术主要包括两个方面:一方面是对它 的功能进行扩充和修改,如修改或增加菜单、进行各种定制工作;另一方面是 利用开发工具编写能够完成特殊任务的自动绘制软件,如下面将介绍的通过人 机交互界面输入必要的数据后,系统自动完成法兰的绘制,就属于这一类型, 在化工绘图中,我们需要的也是有关这一方面的开发软件,它能最大限度地满 足用户的特殊需要,通过调用各种已经开发好的专用零件图绘制软件,加快绘 制速度,提高工作效率。尤其重要的是,可以将大量的计算工作交给计算机去 完成。这样,不仅提高了绘图速度,同时也提高了绘制精度,避免了人为的计 算错误。 目前很多化工技术人员对AutoCAD的使用一般还仅限于它自身的各种绘图 功能,使用鼠标手工绘制各种图件,对其强大的二次开发功能还没有进行深入 使用。如果能使用AutoCAD的二次开发技术开发出一套软件,让AutoCAD自动 绘制我们目前使用的各种图件,就可以大大提高作图效率,发挥出AutoCAD的 强大图形编辑、修改功能,对图件中的各种元素进行任意修改,满足各种不同 的图件格式和绘图标准,由此可见,对于一个化工技术人员来说,学会自己开 发AutoCAD二次应用软件显得十分必要,因为这将大大减少具体的绘制工作, 而可以将主要精力集中到设备的设计中去,从而加快化工设备的开发速度。 近几年来,随着计算机软、硬件技术的飞速发展及其应用的普及,也带来 了化工领域使用计算机的浪潮。首先是各课程教学使用了CAI课件,学生们可 以清楚地看到各种物质的具体颜色,并可以看到动画反应,让学生们能够形象 生动地上课。然后是各种实验仿真软件的出现,让学生们不用亲自下到工厂, 也不用浪费任何原料,在没有危险的情况下就可以完成对实验过程或者是生产 流程的学习和实习。同时计算机可以对反应进行模拟,对实验数据的拟合都大 大方便了化工工作者。随之诞生的各种化工专用软件,给化学工业的发展注入 了新鲜血液,使化学工业的发展如虎添翼。 目前,随着化学工业的进一步向前发展,各种新的机械设备被人们设计和 制造,这些设备的工程图都是一件很大的工程。比如一个完整热交换器图纸, 就需要一个专人12天的工夫才能完成。利用AutoCAD的二次开发技术,可以 编出对热交换器的图进行批处理的程序,只需通过简单的人机会话,计算机能自 动绘制出图纸,这也是化工技术人员学习掌握AutoCAD二次开发技术的目的之 所在。随着化学工业的不断日新月异,对设备图纸绘制的速度要求也将越来越 快,利用AutoCAD二次开发技术开发而成的软件直接绘制各种设备的技术将在 化学工业中得到更加广泛的应用,其开发技术必将伴着化学工业一起发展。 几种主要的二次开发语言简介 AutoLISP AutoLISP语言是AutoCAD所支持的一种内嵌式语言,它由美国Autodesk公 司开发,其目的是使用户十分方便地利用AutoLISP编程语言对AutoCAD进行 二次开发,它采用了与LISP语言中的Common LISP最近的语法和习惯约定,同 时又针对AutoCAD增加了许多新的功能,使用户可以直接调用几乎全部的 AutoCAD命令,因此它既具有一般高级语言的基本结构和功能,又具有 AutoCAD强大的图形处理能力,是目前计算机辅助设计和绘图中较广泛采用的 语言之一。 Visual LISP Visual LISP(简称VLISP)是为加速AutoLISP程序开发而设计的强有力的 工具。它提供了一个完整的集成开发环境(包括编译器、调试器及其他工具, 它可以显著地提高自定义AutoCAD的效率)。Visual LISP提供的主要工具有: 文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文 件编译器、工程管理系统/快捷相关帮助与自动匹配功能和智能化控制台等。 Visual LISP克服了AutoLISP一直以来开发中所存在的诸多不便和某些局限 性。从语言方面看,Visual LISP对AutoLISP语言进行了扩展,可以通过 Microsoft ActiveX Automation接口与对象交互。同时,通过实现事件反应器函 数,还扩展了AutoLISP响应事件的能力。 VisualLISP已经被完整地集成到 AutoCAD中。 VBA VBA(Visual Basic for Application)最早是建立在Office 97中的标准宏语 言,由于它在开发方面的易用性且功能强大,许多软件开发商都将其嵌入自己 的应用程序中,作为一种开发工具提供给用户使用。而AutoCAD VBA就是集成 在AutoCAD中的Visual Basic开发环境,与VB的主要区别是VBA在与AutoCAD 相同的进程空间中运行,提供了与AutoCAD关联的快捷的编程环境,程序设计 直观快捷。它还提供了与其它可使用VBA应用程序集成的能力,可以作为其它 应用程序如Word或Excel的自动化控制器。可以看出,VBA是其中编程很为快 捷方便的一种,对于非计算机专业而更多熟悉VB编程语言的人来说,可以很快 就掌握它。 ADS ADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发 系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标 库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执 行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执 行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因 而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、 建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。 ObjectARX ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C+为编程 语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环 境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并 没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是 ObjectARX for AutoCAD 2005,它能够对AutoCAD的所有事务进行完整的、先 进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、 稳定性更强。 ActiveX Automation ActiveX技术来源于 OLE(Object Linking and Embedding)技术。OLE最初 是对象链接与嵌入,后来发展成为复合文档技术,包括文字、图片、声音、动 画片和视频等媒体可以共同存在于一个文档中
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!