AutoLISP绘图程序的设计说明
第四章 Auto LISP的绘图功能.
如前所述, Auto LISP 语言体现了人工智能语言 lisp 的特点和Auto CAD强大的图形编辑功能,可以说它是集 设计与绘图为一体的人工智能语言,因此,它是开发实 用工程计算机辅助设计和绘图软件的强有力工具。Auto LISP 具有强大的绘图编辑功能,主要是由于它提供了与 Auto CAD相互通讯的简单透明的接口功能,即提供了一 个 系 统 内 部 函 数 command,AutoLISP 程 序 中 利 用 command 函数可以非常简单而方便地调用几乎全部 Auto CAD命令,以完成所要求的各种工程图形的绘制任务, 本章将重点介绍 command 函数的功能、编程技巧及应用 实例。
6. command可以不带任何参数,即(command),
它等效于在键盘上按CTRL—C键,即取消了Auto CAD 命令。 例如: (command “dim” “hor” /(4 4) /(6 4) /(5 4) 10) (command) 相当于取消DIM命令并返回到命令提示。 (command)也可以用“∧”代替,如上式可写成: (command “dim” “hor” /(4 4) /(6 4) /(5 4) 10∧)
1. Auto CAD的命令、子命令和选择项要用字符串 表示,大小写均可。 例如: (command “DIM” “hor” /(2.0 3.0) /(5.0 3.0) /(5.0 5.0) 8) “DIM”为命令,“hor”为子命令,均用字符串 表示。 2.数字常量(整型数或实型数)可写成本身亦可 写成字符串形式。如上例中数字8亦可写成“8”。 3.点常量有两种表示法:一是Auto LISP表的形 式,如上例中/(2.0 3.0),/(5.0 3.0)。二是用字符 串表示,字符串中数据要符合Auto CAD的规定。 如写成“2.0,3.0”,“5.0,10.0”。
第2讲利用AutoLisp语言绘图
第2讲利⽤AutoLisp语⾔绘图第2讲利⽤AutoLisp语⾔绘图在AuotCAD绘制简单图形时,有三种主要⽅式:(1)图标菜单(2)下拉式菜单(3)命令⾏。
事实上还有另外⼀种绘图⽅式,即通过lisp语⾔实现绘制图形。
利⽤Lisp语⾔绘图的最⼤优点是可以实现批处理,降低劳动强度。
⼩知识:Lisp语⾔最⼤优势是和AutoCAD绘图结合的很好,这也是该语⾔⾄今仍未被淘汰的最主要原因。
1、简单的绘图语句⼏乎AuotCAD中所有的绘图及环境设置命令都可以通过程序调⽤!,利⽤Lisp语⾔编写绘图命令的窍门是⾸先在命令⾏下把绘图命令和对应的参数记住,然后⽤Lisp语⾔的格式书写出即可。
1.1 绘制直线(command "line" "0,0" "1,1" "")1.2 绘制圆(command "circle" "0,0" 5)1.3 绘制正多边形(command "polygon" 5 "0,0" "i" 5)(command "polygon" "5" "0,0" "i" "5")都正确1.4 新建图层(command "la yer" "m" "道路" "c" 2 "" "")请同学⾃⼰编写⾼度为2,起点位置在“0,0”,⽂字内容是“理⼯⼤”的程序2、⽤多条绘图语句表⽰复杂图形正常情况下图形都⽐较复杂,需要⽤多条语句编写,例如测绘中的下⽔井、路灯等符号。
例1、下⽔井的绘制(defun c:xsj()(command "circle" "0,0" 0.5)(command "line" "-0.5,0" "0.5,0" "")(command "line" "0,-0.5" "0,0.5" ""))3、循环控制语句例2、绘制同⼼圆例3、绘制可多次插⼊的下⽔井符号例4、绘制y=sinx 曲线4、课后练习题4.1 编写lisp 程序,绘制路灯图案,参照下⽔井程序,改写成可以多次插⼊的程序。
第4章 AutoCAD的参数化绘图技术
第4章 AutoLISP绘图程序设计
4.3.1 基 本 函 数
4. 表处理函数
函数
说明
list
形成一个表, 该表的元素按一定顺序排列而成
cons
表构造函数
append
将所列〈表〉中的元素放在一起,得到一个表
reverse
将给定表的元素顺序倒置,得到一个表
length
求出给定表中元素的个数(即表的长度)
第4章 AutoLISP绘图程序设计
4. 点表 AutoLISP中的点是用表来表示的。(10 22)表示二维
点表,(50 6 4)表示三维点。点表中第一个元素代表x坐 标, 第二个元素代表y坐标, 第三个元素代表z坐标。
在编写AutoLISP程序时, 点的获得通常有三种途径: (1) 由单引号引出的表来表示, 如 ′(4.5 2 5)分别表示
第4章 AutoLISP绘图程序设计
1. 整型数 整型数即整数, 是由0, 1, 2, …, 9, +, -字符组 成的。 +号可有可无。 例如12, -34, 0等。 2. 实型数 实型数用双精度的浮点数表示并具有至少14位有效 精度。 3. 符号 符号是由除(、 )、 *、 ′、 ″、 ; 之外的字符组 成的序列, 并且不能全部为数字。
4.2 AutoLISP语言基础
LISP(List Processing Language)是一种计算机的表 处理语言, 由麦卡赛(J.Mccarthy)于1960年提出并由麻 省理工学院的研究小组实现的。
第4章 AutoLISP绘图程序设计
4.2.1 AutoLISP的数据类型
整 型 数 ( INT ) 、 实 型 数 ( REAL ) 、 符 号 (SYM)、 字符串(STR)、 表(LIST)、 文件描 述符(FILE)、 Auto LISP的内部函数(SUBR)、 AutoCAD的实体名(ENAME)、 AutoCAD的选择集 (PICKSET)、 ARX外部函数等。
AutoLisp程序设计教程解析
Visual Lisp简介(2)
AutoLISP程序由注释和表达式组成。与其他 的高级语言不同的是,它的注释用;来表示。 而表达式用的是前缀表示法,即把运算符放在 表的第一个元素位置,后面才是其他参数。表 达式一般是通过调用函数来执行。
变量(1)
1.符号:用来作为变量、函数的名字。符号可 包含数据和字符((、)、. 、‘、 “、;除外)。 符号的长度最好不要超过6个字符。 2.变量的数据类型:不需对变量事先进行类型 说明,变量被赋值时,值的类型就是变量的类 型。在程序运行过程中,同一变量在不同的时 刻可以赋予不同类型的值。 3.赋值: (setq 变量1 值1 [变量2 值2 ……])
3.表达式的求值过程 在Lisp语言中,函数之间不存在优先关系, 运算的先后顺序只能通过表的层次来实现, 最里层的表最先被求值,再传给外层的表, 直到求值完毕。
表达式(3)
4.表达式的求值规则 (1)整型数、实型数、字符串,以它们本身的 值作为求值结果 (2)符号以它们当前的约束值作为求值结果 (3)表是根据其第一个元素来进行计算的。 其中quote函数表示直接引用,可用 单号来 表示。如(setq p1 (quote (25 10))) 可写成: (setq p1’ (25 10))
Lisp语言是人工智能领域中广泛采用的一种 程序设计语言。 AutoLisp 程序和autoCAD的绘图命令可以 透明的结合起来,使设计和绘图完全融为一 体。还可以实现对AutoCAD图形数据 直接访 问、修改,为实现对图形的实时修改、交互 设计、参数化设计以及在绘图领域中应用人 工智能提供了必要的条件。是一种人工智能 绘图语言。
常用内部函数(5)
mand函数:执行AutoCAD标准命令 利用command函数AutoLISP几乎可以调用CAD 里的全部命令。 格式:
AutoLISP入门5 - 轻松快速的掌握 AutoLISP 设计技巧
(setq ww (getreal "Width:"))(setq hh (getreal "Height:")); 以下 pb 、 pc 、 pd 值须由程式依据 pa 、 ww 、 hh 求出(setq pb (polar pa 0 ww))(setq pc (polar pb (/ pi 2) hh))(setq pd (polar pc pi ww)); 以下依据 pa 、 pb 、 pc 、 pd 点画矩形(command "pline" pa pb pc pd "c"); 以下 mp1 、 mp2 、 mp3 、 mp4 值须由程式依据 pa 、 ww 、 hh;& pb 、 pc 、 pd 值求出(setq mp1 (polar pa 0 (/ ww 2)))(setq mp2 (polar pb (/ pi 2) (/ hh 2)))(setq mp3 (polar pd 0 (/ ww 2)))(setq mp4 (polar pa (/ pi 2) (/ hh 2))); 以下依据 mp1 、 mp2 、 mp3 、 mp4 点画出二条线(command "line" mp1 mp3 "")(command "line" mp2 mp4 ""))4. 第四步骤:回到AutoCAD下,载入AutoLISP程式若您的 AutoCAD 『环境设定』中『支援档搜寻路径』有加上 c:\lisptool, 则您可轻松载入 pbox.lsp 程式指令:(load"pbox")传回: c:pbox或指令:(load "pbox")传回: c:pbox或指令:(load "pbox.lsp")传回: c:pbox若您的AutoCAD 『环境设定』中『支援档搜寻路径』并未加上c:\lisptool,则您载入pbox.lsp程式时,须包含程式所在路径:错误的载入:指令:(load "pbox")会出现:无法开启「 pbox.lsp 」做输入错误:载入失败(LOAD "pbox")*取消正确的载入方式:指令:(load "c:/lisptool/pbox")传回: c:pbox或:指令:(load "c:\\lisptool\\pbox")传回: c:pbox5. 第五步骤:执行新的AutoLISP指令指令 :pbox <--成功载入后,直接键入pbox指令Enter Left/Low Point: <--请给一左下角点Width: <--给一实数当宽度,例如100Hieght: <--给一实数当高度,例如50指令:nil指令三、 PBOX.LSP 程式产生的问题 & 改良1. 原程式虽是成功的载入执行了 , 但却有以下几点小问题:问题 1 : 给完左下角点后, 『 Width: 』及『 Height: 』提示却在同一行出现,应该一个提示各别一行才好ANS : 很简单,只要做如下的改变,加入『\ n 』即可(setq ww (getreal "Width:")) à (setq ww (getreal "\nWidth:"))(setq hh (getreal "Height:")) à (setq hh (getreal"\nHeight:"))问题 2 :希望给宽度及高度时,也能直接在萤幕上拉一段距离代替ANS :很简单,只要做以下的函数变动即可将(setq ww (getreal "\nWidth:"))改成(setq ww (getdist pa "\nWidth:")) ß pa为参考基准点将(setq hh (getreal "\nHeight:"))改成(setq hh (getdist pa "\nHeight:")) ß pa为参考基准点问题 3 : 给完宽度及高度值后,开始画出所要的图形,可是指令操作过程却也跟着在『指令:』下一一配合出现着,不但影响速度,也没有实质的意义,如何改善?ANS : 很简单,只要在程式一开始加入如下一行即可改善:(setvar "cmdecho" 0) ß 设定变数cmdecho=0关闭指令回应问题 4 :画完所要的图形过程中,画面出现了小十字点,还得用redraw指令清除,该如何使其不出现,但又不影响正常绘图设定呢 (R14环境blipmode内定值为0)ANS : 很简单,只要在程式一开始加入(setvar "blipmode" 0)即可有效压抑小十字虚点出现!但须在程式结束前恢复设定(setvar "blipmode" 1) ,才不会影响正常绘图设定问题 5 :全部过程执行完后,在『指令: 』后却出现了空回应nil,如何消除呢指令:pboxEnter Left/Low Point:Width:Hieght:指令:nil ß 就是这一行指令ANS :很简单,只要在程式结束前,加入一行(prin1)即可问题 6 : 程式确认无误后,想将所有变数均处理成『区域变数』,以免占据记忆体ANS : 很简单,只要做如下的改变即可将 (defun c:pbox()改成(defun c:pbox(/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)问题 7 : 希望在(load "pbox")程式的回应讯息能有更多样的变化ANS :很简单,原回应是c:pbox ,请在程式结束后,再加入二列:(prompt "********** << C:PBOX >> **********")(prin1)2. 改良后完整PBOX.LSP程式的全貌:(defun c:pbox(/ pa pb pc pd ww hh mp1 mp2 mp3 mp4)(setvar "cmdecho" 0)(setvar "blipmode" 0); 以下 pa 、 ww 、 hh 值须由使用者输入(setq pa (getpoint "Enter Left/Low Point:"))(setq ww (getdist pa "\nWidth:"))(setq hh (getdist pa "\nHeight:")); 以下 pb 、 pc 、 pd 值须由程式依据 pa 、 ww 、 hh 求出(setq pb (polar pa 0 ww))(setq pc (polar pb (/ pi 2) hh))(setq pd (polar pc pi ww)); 以下依据 pa 、 pb 、 pc 、 pd 点画矩形( 指令 "pline" pa pb pc pd "c"); 以下 mp1 、 mp2 、 mp3 、 mp4 值须由程式依据 pa 、 ww 、 hh;& pb 、 pc 、 pd 值求出(setq mp1 (polar pa 0 (/ ww 2)))(setq mp2 (polar pb (/ pi 2) (/ hh 2)))(setq mp3 (polar pd 0 (/ ww 2)))(setq mp4 (polar pa (/ pi 2) (/ hh 2))); 以下依据 mp1 、 mp2 、 mp3 、 mp4 点画出二条线( 指令 "line" mp1 mp3 "")( 指令 "line" mp2 mp4 "")(prin1))(prompt "********** << C:PBOX >> **********")(prin1)四、本章结语:经由简单的PBOX.LSP程式设计全程演练,从『产生动机、预期目标』 à 『构思程式流程、相关变数订定』 à 『撰写程式』 à 『载入程式』 à 『执行PBOX 指令』 à 『改良PBOX.LSP』相信您已能更了解AutoLISP是怎么回事了,短短的十几行,能做的事却不少,一路循序渐进练习下来,您应该觉得一点儿也不吃力、『游刃有余』才对,果真如此,那恭喜您,『好戏还在后头』,还有体力的话,就继续『征服下一章』吧若您仍觉得有点『迷迷糊糊』 ,那就休息一下,配合复习第二章『学好AutoLISP的关键、基本结构与语法』再好好的把第四章『看』 & 『做』个明白,相信有心成为AutoCAD高手的您,一定不会那么容易就『被十几行打败』的。
第五章第二节AUTOLISP程序设计简介
§5.2 AutoLISP程序设计一、概述LISP语言(List Processing Language的缩写)是一种表处理语言。
因为LISP在描述表方面有独到之处,且本身灵活而精巧,自创立以来,在人工智能的程序设计中得到广泛应用。
在英、美等国应用尤为普遍。
AutoLISP是LISP语言的一个版本,其独特性在于专门为AutoCAD开发的。
所以AutoLISP仅能运行于AutoCAD软件包环境里。
同样,也正是在AutoCAD内置AutoLISP这样一种灵活、精巧的开发语言,使得AutoCAD得到进一步广泛使用。
1. AutoLISP特点:(1)AutoLISP语言是一种仅能以解释方式运行于AutoCAD内的程序设计语言。
即:脱离AutoCAD环境,它就不能运行。
(2)AutoLISP语言是函数型语言,其函数和数据形式是一致的,即(function argument)·function(函数名):内建函数或用户自定义函数名;·argument(参数):参数种类:①变量(Varibles)②常量(Constants)③其他函数(function)所以表达式可以嵌套.④标志数(flag)⑤可选性参数(optional parameters)因此,表达式的形式是:“先说做什麽,再说对谁做”。
(3)可以在AutoLISP程序中引用AutoCAD的几乎所有功能进行图形处理的自动化,尤其是较深层的应用——对象数据库的操作。
在Visual LISP的协助下,对于AutoCAD进行操作功能上的讨论,LISP仅比ARX少一个功能。
在AutoCAD R14已经不再使用ADS程序设计,取而代之的是ARX 程序设计模式。
ARX一般是在AutoCAD和开发商中使用。
使用Visual C++作为基本程序设计语言,其效率、数据处理和软硬件的控制能力都是相当好的。
但是,要想真正发挥这种开发模式的作用,对于程序设计者的要求也较高。
AUTOLISP程序设计技巧
AUTOLISP程序设计技巧AUTOLISP(即AutoCAD Lisp)是一种用于AutoCAD软件的编程语言。
它基于Lisp语言,可以用于创建自定义命令和功能,以自动执行一系列任务。
在编写AUTOLISP程序时,可以采用一些技巧来提高代码的可读性和性能。
下面将介绍一些常用的AUTOLISP程序设计技巧。
1.变量命名:为了增加代码的可读性,应该选择具有描述性的变量名。
避免使用单个字母或简写的名称,而应使用有意义的名称来描述变量的用途或含义。
2.注释:在代码中使用适当的注释是非常有帮助的,可以解释代码的目的、逻辑和特定部分的功能。
注释应该清晰明了,不冗余,并使用大写字母或其他方法来突出显示。
3.函数:使用函数来分割代码段,以便在需要时可以多次调用相同的代码块。
函数的使用可以提高代码的可读性,并使其更容易维护。
4.错误处理:在代码中加入适当的错误处理机制非常重要,可以避免程序崩溃或产生不期望的结果。
使用条件语句和错误处理函数来检测和处理可能发生的错误。
5.循环:使用循环语句来处理重复性任务,并减少代码的冗余。
根据任务的特点选择合适的循环类型(例如FOR循环、REPEAT循环等)。
6.嵌套:在必要时使用嵌套结构,将代码组织成逻辑结构清晰的块。
使用适当的缩进和代码布局来增加代码的可读性。
7.字符串处理:AUTOLISP中的字符串处理功能非常强大,可以使用字符串函数来处理、操作和格式化字符串。
了解并熟练使用字符串函数可以提高代码的灵活性和功能。
8.数组和列表:使用数组和列表可以存储和处理多个值。
熟练使用与数组和列表相关的函数(如CAR、CDR、CONS、LIST等)可以简化代码并提高性能。
9. 命令行交互:通过与用户进行命令行交互,可以提高程序的交互性。
使用getstring、princ等函数来获取用户输入,并使用条件语句来根据输入执行相应的操作。
10.优化:编写高效的代码可以提高程序的性能。
使用较少的迭代步骤、减少不必要的计算、选择合适的数据结构等都可以提高程序的效率。
基于Auto LISP的参数化绘图技术与实例分析
基于Auto LISP的参数化绘图技术与实例分析摘要:AutoCAD 是一款通用的绘图软件,Auto LISP是嵌入AutoCAD的二次开发工具,参数化绘图是其典型的应用。
文章探讨了参数化绘图设计原理及步骤,并以轴承参数化绘图为例,介绍了Auto LISP的参数化绘图技术。
关键词:参数化;AutoCAD;Auto LISPAutoCAD是由Autodesk公司发行的一款应用于多领域的设计辅助和图形处理软件。
在机械行业得到了广泛应用。
AutoCAD虽然功能强大,但在专业应用上还是有不足之处,如何让通用的CAD系统更适合行业需要,必须对其要进行二次开发。
AutoCAD在30多年时间里相继推出了Auto LISP、ADS、Visual LISP、VBA、Object ARX、几种不同层次的二次开发工具。
“其中Auto LISP是唯一的一种以解释方式运行于AutoCAD内部的解释性程序设计语言,Auto LISP把数据和程序统一表达为表结构,所以它既可以把程序当作数据来处理,还可以把数据当作程序来执行”。
其语言规则简单,直接针对AutoCAD,易学易用,AutoCAD的绝大多数命令可直接调用,参数化绘图是其典型的应用之一。
1 参数化绘图设计原理及步骤所谓参数化就是将图形的有关几何关系、约束关系有机地结合起来,从而构成一个完整的参数化模型。
当设计人员改变图形的某一参数时,模型能根据尺寸及几何约束等自动计算出满足约束关系的工程图形。
参数化编程方法的实质,就是将图形信息记录在程序中。
它用一组变量记录图形的几何参数,用一些约束条件或者赋值语句来表达几何参数与结构参数之间的关系,再用一些绘图语句来表述图形的拓扑关系。
参数化方法快捷、高效,参数化绘图程序编写步骤是:①先进行图形结构特征分析,一般绘制一个零件的图样,需要很多尺寸,这就需要我们分析这个零件,确定图形中的关健几何尺寸及图形对象之间的依赖关系。
②从设计角度具体分析,确立不仅能体现零件的结构特征,又可以推导出其它尺寸的基本尺寸作为图形参数,并明确尺寸与图形参数之间的关系。
AutoLISP程序语言设计
AutoLISP程序语言设计AutoLISP程序语言设计目录⒈简介⑴ AutoLISP概述⑵ AutoLISP的应用领域⒉基本语法⑴变量定义与赋值⑵控制流语句⑶函数定义与调用⑷条件语句⒊常用函数⑴坐标点函数⑵图形绘制函数⑶数据处理函数⑷字符串处理函数⒋高级技巧⑴调试与错误处理⑵程序优化与性能提升⑶与外部程序交互⒌示例程序⑴绘制简单图形⑵自动化处理CAD图纸⑶数据导出与导入⒍附录⑴ AutoLISP开发工具推荐⑵ AutoCAD版本兼容性⑶ AutoLISP常用工具介绍⒈简介⑴ AutoLISP概述AutoLISP是一种方便的自动计算与绘图程序设计语言,它是用于AutoCAD中的一种宿主程序语言,可以用于控制CAD软件的各项功能,实现自动化操作。
⑵ AutoLISP的应用领域AutoLISP可用于各种CAD绘图软件的自动化操作,包括但不限于以下方面:●绘制复杂图形●数据处理与导出●组装CAD图纸●批量操作与修改⒉基本语法⑴变量定义与赋值AutoLISP可以使用变量来存储数据,并在程序中使用。
变量可以通过赋值来初始化或修改其值。
⑵控制流语句AutoLISP支持各种控制流语句,如条件语句、循环语句等,用于根据不同条件执行不同的代码块或重复执行特定的代码块。
⑶函数定义与调用AutoLISP允许用户自定义函数以实现特定的功能。
函数是一组逻辑相关的代码块,可以通过函数名来调用。
⑷条件语句条件语句用于根据不同的条件执行不同的代码块。
AutoLISP提供了if、cond等条件语句供用户使用。
⒊常用函数⑴坐标点函数AutoLISP提供了一系列用于处理坐标点的函数,如polar、polar-point、polar-angle等,用于计算、转换坐标点。
⑵图形绘制函数AutoLISP提供了丰富的图形绘制函数,如line、circle、text 等,用于绘制直线、圆形、文本等图形元素。
⑶数据处理函数AutoLISP提供了一些用于处理数据的函数,如list、append、assoc等,用于创建列表、连接列表、关联列表等操作。
AutoLISP的绘图功能
举例:编程绘制带传动机构运动简图
步骤:1)绘中心线;2)绘圆;3)绘圆切线 (defun dljt (r1 r2) (setq a 0) (while (< a (+ r1 r2)) (setq a (getdist "\nEnter center distance:")));while (setq cp1 (getpoint "\nEnter base point:")) (setq cp2 (polar cp1 0 a)) (command "layer" "m" "cen" "c" 1 "" "l" "center" "" "") (command "line" (polar cp1 pi (+ r1 5)) (polar cp2 0 (+ r2 5)) "") (command "line" (polar cp1 (* 0.5 pi) (+ r1 5)) (polar cp1 (* 1.5 pi) (+ r1 5)) "") (command "line" (polar cp2 (* 0.5 pi) (+ r2 5)) (polar cp2 (* 1.5 pi) (+ r2 5)) "")
AutoLISP绘图程序设计
四、AutoLISP程序执行方式
有三种方式:行方式、源文件方式、编译文件方式. 1.行方式 就是在AutoCAD的command:提示符下,输入表后回车. 如:
command:(+ 15 6.3)↙ command:(setq a 10)(setq b (+ a 5)) ↙
03.10.2023
16
2.源文件方式
用写字板或记事本把AutoLISP程序保存起来(后缀 为.LSP).然后用LOAD命令装载并调用. 例如:(1)把下列程序保存到e:\zm.lsp
;;在屏幕上显示 ASCII码为(65-90)的字符
(defun C:zm(/ as)
;自定义命令
(setq as 65 n 100)
(while (<= as 90)
(while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a))
) )
03.10.2023
3
(4)AutoLISP语言中使用大量的函数(有 200多个函数),进行各种运算;
(5)AutoLISP编写的程序特点(学习中注 意):
二次开发手段.
所谓二次开发:是指以AutoCAD软件为平台, 加入自己所需要的功能.开发过程,就是编程的 过程.
二次开发所支持的语言有VB、C++,大型的 二次开发,以C++为主,而小型二次开发,一般以 AutoLISP为主.
03.10.2023
2
(2)必须在AutoCAD环境下运行(内嵌); ( 3 ) AutoLISP 可 以 编 写 程 序 , 调 用 AutoCAD 的 许 多
最新AutoLISP绘图程序设计
7
二、几个基本概念
1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。
NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
❖以表形式描述数据处理过程,程序执行过 程就是函数求值过程;
❖每段程序都是一个函数; ❖具有交互处理功能,边解释边执行; ❖采用模块化设计方法。
2020/12/14
3
2.AutoLISP的数据类型
(1)整型数(INT):是由0、1、2…9、+、-组成的。
(2)实型数(REAL):如0.4(0不能少)、-1.23、 0.526E9(0.526×109)。
(5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n)
如:(2 4 f)
◇元素的个数叫表的长度。
◇元素也可以是表,如(45 (3 6) 7),这 叫嵌套。
◇元素之间必须用“空格” 隔开。
◇表的定义方式:(LIST 5 6);’(5 6); 还可以用defun定义(后面讲)。
(3)符号(SYM):除(、)、*、‘、”、;之外的字 符序列,并且不能全部是数字。
符号常用着变量,如:
Command:(setq X 12)
;整型数
Command:(setq X 12.0) ;实型数
Command:(setq X “12”) ;字符串
2020/12/14
4
(4)字符串(STR):如:“ABC”、“abc”、 “457”等。
(setq as (+ as 1) n (+ n 20))
AUTOLISP程序的设计技巧
AUTOLISP程序设计技巧一、引言在AutoCAD中的角度捕捉只有当正交状态打开时的直和水平方向,对于其他特殊角度无能为力;另外,其网点捕捉也是相对于X轴和Y轴,无法实现其他方向的特殊长度捕捉,给绘图带来极大的不方便。
在应用AutoCAD进行设计制图的操作中,LINE和POLYLINE是使用频率最高的两个命令,经常要遇到在某些特定角度上绘制特定长度的简单线或复合线的情况,因而实现这两个捕捉对提高AutoCAD作图效率很有实用价值。
二、方法原理所谓角度捕捉,是指当十字光标在某一角度a的一定围选取一点时,该点自动落在该a角度线上;当我们设定捕捉角度为a时, 将会以基准点作为原点、自X轴正方向出发,将整个屏幕划分为[360/ a]个区间,则NX%角度就是角度捕捉线,其中,0W N K[360/ a],[360/ a ]表示不大于360/ a的整数。
所谓长度捕捉,是在角度捕捉的基础上,在某一角度线上有一系列捕捉点,该系列点离基准点的距离为捕捉长度的正整数倍,当选取直线上的一点时,落点自动落到离其最近的捕捉点上。
实现特定角度和长度捕捉的关键点是:当十字光标(即十字交叉线)移动时,程序要随时跟踪其交叉点的位置,并将该位置与用户所设定的捕捉角度与长度对应起来,从而计算岀在该角度上的落点。
以下举例说明该两个捕捉的实现过程:假定捕捉角度为a=30°,捕捉长度为L。
当十字光标在任意的某一区间移动时,比如在第5区间(120°〜150 ° )移动时,此时,落点只能在120°或150°线上(该线在图中并不直接显示),该两根角度线的中心线为135。
当十字光标的中心点处在120°〜135°之间时,则落点应在120°线上,该落点的具体位置为由十字光标的中心点向120°线作垂线来获得,其交点D(称为垂点)即为落点,为直观起见,此时由基准点(此处为O 点)向落点作一橡筋拖曳线,该橡筋拖曳线随十字光标的移动而相应移动,显示岀拖动过程(见图1);同样,当十字光标的中心点处在135。
第11章 设计Auto_LISP程序
AutoLISP的语法结构 AutoLISP的功能函数 Visual LISP编写环境 AutoLISP程序设计与应用 实例练习 习题
11.1 AutoLISP的语法结构
图11-1 AutoLISP语法结构示例
11.2 AutoLISP的功能函数
1.数学运算功能函数 2.逻辑运算功能函数 3.转换运算功能函数 4.列表处理功能函数 5.字符串、字符、文 件处理函数 6.等待输入功能函数 7.几何运算功能函数 8.对象处理函数功能
其函数书写格式和返回值如下: (1)(APPEND 列表 列表 …) 返回:结合所有列表成一个列表。 (2)(ASSOC 关键元素 联合列表) 返回:根据关键元素找寻列表中的关键信息。 (3)(CAR 列表) 返回:列表中的第一个元素,通常用来求X坐标。 (4)(CADR 列表) 返回:列表中的第二个元素,通常用来求Y坐标。 (5)(CADDR 列表) 返回:列表中的第三个元素,通常用来求Z坐标。
(6)(READ_LINE[文件代码]) 返回:经由键盘或文件中读取一行字符串。 (7)(READ_CHAR[文件代码]) 返回:经由键盘或文件中读取单一字符。 (8)(STRCASE 字符串[字样]) 返回:转换字符串大小写。 (9)(STRCAT 字符串1 字符串2 …) 返回:将各字符串合并为一个字符串。 (10)(STRLEN 字符串) 返回:字符串构成的字符数(字符串长度)。 (11)(WCMATCH 字符串 格式) 返回:T或nil,将字符串与通用字符串比较。
(6)(GETORIENT[基点] [提示]) 返回:请求输入角度数值,响应一个弧度值不受 ANGBASE,ANGDIR的影响。 (7)(GETPOINT[基点] [提示]) 返回:请求输入一个点的坐标。 (8)(GETREAL[提示]) 返回:请求输入一个实数值。 (9)(GETSTRONG[提示]) 返回:请求输入一个字符串。 (10)(INITGET [位] 字符串) 返回:设定下次GET*** 函数的有效输入。
第五章第二节AUTOLISP程序设计简介
§5.2 AutoLISP程序设计一、概述LISP语言(List Processing Language的缩写)是一种表处理语言。
因为LISP在描述表方面有独到之处,且本身灵活而精巧,自创立以来,在人工智能的程序设计中得到广泛应用。
在英、美等国应用尤为普遍。
AutoLISP是LISP语言的一个版本,其独特性在于专门为AutoCAD开发的。
所以AutoLISP仅能运行于AutoCAD软件包环境里。
同样,也正是在AutoCAD内置AutoLISP这样一种灵活、精巧的开发语言,使得AutoCAD 得到进一步广泛使用。
1.A utoLISP特点:(1)AutoLISP语言是一种仅能以解释方式运行于AutoCAD内的程序设计语言。
即:脱离AutoCAD环境,它就不能运行。
(2)AutoLISP语言是函数型语言,其函数和数据形式是一致的,即(function argument)·function(函数名):内建函数或用户自定义函数名;·argument(参数):参数种类:①变量(V aribles)②常量(Constants)③其他函数(function)所以表达式可以嵌套.④标志数(flag)⑤可选性参数(optional parameters)因此,表达式的形式是:“先说做什麽,再说对谁做”。
(3)可以在AutoLISP程序中引用AutoCAD的几乎所有功能进行图形处理的自动化,尤其是较深层的应用——对象数据库的操作。
在Visual LISP的协助下,对于AutoCAD进行操作功能上的讨论,LISP仅比ARX少一个功能。
在AutoCAD R14已经不再使用ADS程序设计,取而代之的是ARX程序设计模式。
ARX一般是在AutoCAD和开发商中使用。
使用Visual C++作为基本程序设计语言,其效率、数据处理和软硬件的控制能力都是相当好的。
但是,要想真正发挥这种开发模式的作用,对于程序设计者的要求也较高。
AutoLISP绘图程序设计PPT优秀课件
18.10.2020
6
例: (setq P(list 12.36 -26.58)) 结果是:(12.36 -26.58) 例:(setq P '(12.36 -26.58)) 结果是:(12.36 -26.58)
提示: (1)表的嵌套时一定要注意括号“(”、“)”
匹 配。 (2)西文状态下输入!!!
❖以表形式描述数据处理过程,程序执行过 程就是函数求值过程;
❖每段程序都是一个函数; ❖具有交互处理功能,边解释边执行; ❖采用模块化设计方法。
18.10.2020
4
2.AutoLISP的数据类型
(1)整型数(INT):是由0、1、2…9、+、-组成的。
(2)实型数(REAL):如0.4(0不能少)、-1.23、 0.526E9(0.526×109)。
8
二、几个基本概念
1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。
NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
(while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a))
) )
18.10.2020
3
(4)AutoLISP语言中使用大量的函数(有 200多个函数),进行各种运算;
(5)AutoLISP编写的程序特点(学习中注 意):
(5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n)