AutoLISP绘图程序设计解析

合集下载

第四章 Auto LISP的绘图功能.

第四章 Auto LISP的绘图功能.
第四章 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语⾔绘图第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 程序,绘制路灯图案,参照下⽔井程序,改写成可以多次插⼊的程序。

第五章第二节AUTOLISP程序设计简介

第五章第二节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程序设计
高等计算机辅助设计 Advanced Computer Aided Design
(4)(strcat <string1> <string2> …)
该函数返回由字符串<sting1> <string2>…构成的长字符串。例如: (strcat “Beijing” “China”)返回“Beijing China” (5)(substr <string> <start> [<length>]) 该函数返回从字符串<string>第<start>字符位置开始,连续 长度为<length>个字符组成的一个字符串。若没有指定<length>, 则子字符串是<string>中从<start>后的全部字符组成。例如: (substr “abcdef” 2 4) 返回“bcde” (substr “abcdef ” 2) 返回“bcdef”
高等计算机辅助设计
Advanced Computer Aided Design
3.表处理函数
(1)(car <list>) 该函数返回表<list>的第一个顶层元素。例如: (car „(x y))返回x。 (car „(10 20 30 40))返回10。 (2)(cdr <list>) 该函数返回表<list>中顶层第n个元素。其中n为大于或等于0 (3)(last <list>) 该函数返回表<list>顶层的最后一个元素。例如: (last „(10 20 30 40))返回40。 (4)(nth <n> <list>) 该函数返回表<list>中顶层第n个元素。其中n为大于或等于 0的整数,n为0表示第一个元素,n为1表示第二个元素,以此 类推。例如: (nth 2 „(10 20 30 40))返回30。

AutoLISP程序语言设计

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的绘图功能

AutoLISP的绘图功能
例如:command: (getvar “cmdecho”) 返回值:1 command: (setvar “cmdecho” 0) 返回值:0 (AutoCAD系统变量见P387 附录B。)
举例:编程绘制带传动机构运动简图

步骤: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语言编程实现参数化绘图

文章编号:100926825(2002)0420159202用Auto LISP 语言编程实现参数化绘图收稿日期:2002201222作者简介:康保成(19552),男,1987年毕业于广东教育学院工程图学专业,高级讲师,太原理工大学轻纺工程与美术学院,山西晋中 030600康保成摘 要:简要介绍Auto LISP 语言在Auto C AD 环境下实现参数绘图的应用状况。

对建筑制图中绘制楼梯台阶进行分析,并结合Auto LISP 语言编程特点,编制了Auto LISP 程序,顺利完成楼梯台阶的绘制过程,达到利用参数输入形式,严格、准确、快捷地完成绘图工作目的,还为在Auto C AD 环境下绘制形状相同、尺寸不同的系列图形提供了方便。

关键词:Auto LISP ,Auto C AD ,楼梯台阶中图分类号:T U20114文献标识码:A引言随着时代的进步,计算机辅助设计发展迅猛,全面取代传统的丁字尺加图板的手工绘图方式已成必然。

这种势头给各行各业都带来了冲击,从早年间颁布的红头文件可见一斑。

可以毫不夸张地说,对于作为衡量素质标准的计算机辅助设计,不能等闲视之。

Auto C AD 作为C AD 的工具,是一个功能极强的计算机辅助设计、绘图的通用软件包。

如今Auto C AD 在各部门得到广泛应用。

Auto C AD 实际上已经成为一种微机C AD 系统的标准,工程设计人员之间交流设计思想的公共语言。

Auto C AD 之所以得到如此广泛的应用,除了它功能强大,易学易用外,还在于它是一个开放的、交互式的软件。

用户可以编写Auto LISP 、ADS 或ARX 应用程序,作为新的命令,实现特定用户的特殊需要,或对AutoC AD 做一些二次开发和应用,以使用户更方便、快捷地满足工作要求。

1 问题的提出正如前面所述,Auto C AD 在各个领域都得到了广泛的应用,可见其通用性是很强的;但它在一些领域的某些方面还有不尽人意的地方。

AUTOLISP程序的设计技巧

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。

AutoLISP详细讲解

AutoLISP详细讲解

AutoLISP详细讲解关于AutoLISPAutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。

第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。

除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。

AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。

AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。

例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。

通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。

事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。

现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。

目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。

在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。

但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。

同时,本章还假定读者并无编程方面的知识。

如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。

对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。

AutoLISP程序设计

AutoLISP程序设计

11.1.2 循环结构



1) while 函数 调用格式:(while [条件] [表达式] …) 功能:若条件不为NIL,则执行其后的表达式,再重复 检查条件,直到条件为NIL,才退出循环并返回最后一 个表达式的求值结果。 例:若根据轮齿弯曲疲劳强度计算,模数mc>3.6, 编 程搜索其标准模数值。 (setq ml „(1 1.25 1.5 2 2.5 3 4 5 6 8 10)) (setq m 0 n 0) (while (< m mc) (setq m (nth n ml) n (1+ n)) )

(if (not box) (load “a: box”))
cond 函数




调用格式:(cond ([条件1] [表达式1]) ([条件2] [表达式2]) 。。。 ([条件n] [表达式n]) ) 功能:自顶向下逐个检查每个条件分支,若符合条件, 则执行相应的表达式并返回该表达式的求值结果。 例如:(cond ((and (> d 10) (<= d 20)) (setq b 4)) ((and (> d 20) (<= d 40)) (setq b 5)) ((and (> d 40) (<= d 60)) (setq b 6)) ((and (> d 60) (<= d 80)) (setq b 8)) )
2)or函数—逻辑或 功能:如果所有的表达式均为NIL,则返回NIL,否则返回T。 3)not函数—逻辑非 调用格式:(not [表达式]) 功能:若表达式的值为NIL则返回T,否则返回NIL。
5) 调用数名] [表]) 功能:调用函数名对应的函数来对表中的元素求值。 如:(apply „+ „(1 2 3 4)) 返回:10

第五章第二节AUTOLISP程序设计简介

第五章第二节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程序设计

AutoLisp程序设计

自定义函数(2)
3.定义AutoCAD命令 用defun C:函数可以定义AutoCAD命令,格 式如下:
(defun C:AutoCAD命令名(/局部变量表)表达式…… 如定义通过矩形的对角点画矩形的命令,源代码如 下: ( defun C:rect(/p1 p2 p3 p4) (setq p1(getpoint “\n 输入矩形的一个角点”)) (setq p3 (getcorner p1 “\n 输入矩形的另一个角点”)) (setq p2(list (car p3) (cadr p1)) (setq p4 (list (car p1) (cadr p3))) (command “pline” p1 p2 p3 p4 “c”) )
Visual Lisp简介(2)
AutoLISP程序由注释和表达式组成。与其他 的高级语言不同的是,它的注释用;来表示。 而表达式用的是前缀表示法,即把运算符放在 表的第一个元素位置,后面才是其他参数。表 达式一般是通过调用函数来执行。
变量(1)
1.符号:用来作为变量、函数的名字。符号可 包含数据和字符((、)、. 、‘、 “、;除外)。 符号的长度最好不要超过6个字符。 2.变量的数据类型:不需对变量事先进行类型 说明,变量被赋值时,值的类型就是变量的类 型。在程序运行过程中,同一变量在不同的时 刻可以赋予不同类型的值。 3.赋值: (setq 变量1 值1 [变量2 值2 ……])
Lisp语言是人工智能领域中广泛采用的一种 程序设计语言。 AutoLisp 程序和autoCAD的绘图命令可以 透明的结合起来,使设计和绘图完全融为一 体。还可以实现对AutoCAD图形数据 直接访 问、修改,为实现对图形的实时修改、交互 设计、参数化设计以及在绘图领域中应用人 工智能提供了必要的条件。是一种人工智能 绘图语言。

AutoLISP绘图程序设计PPT优秀课件

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)

AutoCAD绘图中实用的AutoLisp程序共4页文档

AutoCAD绘图中实用的AutoLisp程序共4页文档

AutoCAD绘图中实用的AutoLisp程序一、引言计算机辅助设计(CAD)[1]是指利用计算机及图形设备辅助设计人员完成设计工作。

作为设计人员,不仅需要对非标件自动化设备整体布局与规化,还要在规定的时间内完成总装图和零件图的输出。

因此,整个项目对时间进度的管控显得尤为重要。

基于这样的背景下,依托公司现有的一些资源,结合实际工作的需求,开发AutoCAD的二次开发命令尤其重要。

这样不仅可以有效减轻设计人员工作负荷,而且可以大大提高工作效率。

由简单快捷的AutoCAD二次开发命令就可以取代原来人工大量重复性的工作,使AutoCAD的二次开发必要性凸显出来。

图1 拆分组立图流程图二、AutoLisp语言AutoLISP[2]是专门为二次开发AutoCAD而设计的编程语言,它继承了LISP语言的特点,并内置在AutoCAD软体中,是LISP语言和AutoCAD 有机结合的产物。

使用AutoLISP语言可以完成各种工程分析与计算、绘制复杂的图形,还可以新增的AutoCAD快捷命令、驱动对话框和命令菜单。

同时能够使AutoCAD具有一定智能化、参数化的功能,还可以有助于设计人员将精力和时间用于产品的创新设计上,实现计算机辅助设计的目的。

三、AutoCAD二次命令开发在非标件自动化设备设计中,当完成设计总图后需要将每个零件图拆分出来,这就是重复性高,步骤繁琐,价值低的工作对于非标件自动化设备,我们通常是先完成组立图。

一般来说,组立图包含众多图层,每个图层上有一个零件的三视图。

下面我们的工作是将每一个零件提取、拆分出来。

这样可以逐一将零件图提取出来,但是这工作耗时耗力。

我们希望改进、完善程序,最终达到一键完成自动拆分目标。

下面我们通过流程图分析作业步骤,如图1所示。

Fig 1 Split Assembly Flowchart Of FIG.经流程图的规划后,我们有了明确的思路,并过程并复杂。

所需要注意的是同一图层中的实体集合,在复制移动后,还需要将它们从集合中逐一删除。

AutoLISP(1)概述、基本函数、表处理函数、绘图函数

AutoLISP(1)概述、基本函数、表处理函数、绘图函数

石家庄铁道学院工业设计系
计 算 机 绘 图
Auto LISP语言的特点 语言的特点
AutoLISP语言是一种嵌入在AntoCAD内部的LISP 编程语言,具有common LISP的一些特性,但它 针对AutoCAD又增加了许多功能: 把AutoLISP语言和AutoCAD绘图命令结合起来, 使设计和绘图完全融为一体。 实现对AutoCAD当前图形数据库的直接访问和 修改,为屏幕图形的实时修改,实现交互设计 以及在绘图领域中应用人工智能提供了方便。
AutoLISP表达式 表达式
如: _$ (* 2 (+ 5 10 ((_> )) 30 常见错误是忽略了文本字符串中的双引号(")。 在这种情况下,右括号被解释为字符串的一部分, 而不会被用来和开括号配对。要改正此错误,可 按ESC键取消该函数,然后重新输入正确的表 达式。
石家庄铁道学院工业设计系
计 算 机 绘 图
四、符号和变量
符号是一些ASCII字符,可以用来表示函数操 作符、内存变量等。 字符串不是符号。 组成符号的字符可以是字母、数字等ASCII字 符,但以下一些字符不能在符号中使用: 圆括号()、句点 . 、单引号‘、双引号 ”、 分号 ;,这些字符在AutoLISP中另有特殊含义。
???计算机绘图计算机绘图石家庄铁道学院工业设计系autolisp程序设计计算机绘图计算机绘图石家庄铁道学院工业设计系第一章autolisp语言的特点计算机绘图计算机绘图石家庄铁道学院工业设计系概述计算机绘图计算机绘图石家庄铁道学院工业设计系?lisp
计 算 机 绘 图
AutoLISP程序设计
石家庄铁道学院工业设计系
石家庄铁道学院工业设计系
计 算 机 绘 图
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2018/10/11
12
例(3) (defun yuan( ) ;;画圆函数 (setq r (getreal"\n半径:")) (setq p (getpoint"\n圆心:")) (command "circle" p r) )
2018/10/11
13
例(4) (defun ld( ) (setq p1 (getpoint"\n p1:") p2 (getpoint"\n p2:") );;;输入两点 (setq d (distance p1 p2));求距离 (setq ang (angle p1 p2));求方位角 (print d) (print ang) (command "line" p1 p2 "");画直线 )
2018/10Βιβλιοθήκη 1125二、标准函数
1.绝对值(abs)、平方根 (sqrt) 、正弦(sin) 、 余弦(cos) 、 反正切(atan) 以上函数格式:(函数名 <数或表达式>) 2.幂函数(expt)、(exp) 格式: (expt 底数 幂) 格式: (exp 底数 <数或表达式>) 注意:以上各函数返回的数值类型。 3.举例
2018/10/11
26
举例:用AutoLISP表示下列公式:
(1)计算三角高程的表达式
H B H A L sin i v
(2)计算坐标增量的表达式
2018/10/11 21
5. 增量 格式:(1+ number) 注意:1和“+”之间不能空格,+ 与n u m b e r之 间必须要空格。 6. 减量 格式:(1- number) 注意:1和“-”之间不能空格,- 与number之间必须 要空格。 例如: (setq b(1+ -12.5)) (setq c(1- -16.4))
2018/10/11 17
(2)用“load”装载 即在命令行上输入(load “e:\zm.lsp”) (3)在命令行上输入zm
3.编译文件方式(重点掌握)
(1) Visual LISP的启动、界面和退出 (2) Visual LISP控制台 (3) Visual LISP创建LISP程序 (4) Visual LISP中运行LISP程序 提示:建议在Visual LISP中创建和运行LISP程序 举例:
2018/10/11 4
2.AutoLISP的数据类型
( 1)整型数( INT ):是由 0、 1、 2…9、 +、 -组成的。 ( 2 )实型数( REAL ):如 0.4 ( 0 不能少)、 -1.23 、 0.526E9(0.526×109)。 (3)符号(SYM):除(、)、*、‘、”、;之外的字 符序列,并且不能全部是数字。 符号常用着变量,如: Command:(setq X 12) ;整型数 Command:(setq X 12.0) ;实型数 Command:(setq X “12”) ;字符串
2018/10/11
15
3.特点 (1)所谓语句都是以表形式出现。 (2)一切成分都是以函数的形式给出。 (3)程序执行过程就是求函数值的过程。
四、AutoLISP程序执行方式
有三种方式:行方式、源文件方式、编译文件方式。 1.行方式 就是在AutoCAD的“command:”提示符下,输入表后 回车。如: command:(+ 15 6.3)↙ command:(setq a 10)(setq b (+ a 5)) ↙
2018/10/11
9
4.点 是表的一种形式,也叫点表。 有三种获得点的方式: (1)用'表示 '(120.35 253.24) (2)list函数定义点 (setq X 12.36 Y -26.58) (setq M (list X Y)) 结果是: M=(12.36 -26.58) (setq M '( X Y)) 结果是:(X Y) (3)由getpoint函数得到点 其格式:(getpoint “\n输入一点:”)
2018/10/11 2
(2)必须在AutoCAD环境下运行(内嵌); ( 3 ) AutoLISP 可以编写程序,调用 AutoCAD 的许多 命令; 举例:在水平方向画n个大小相等的圆。
;;调用AutoCAD命令画圆 (defun C:HY() (setq P0 (getpoint "第一圆心坐标:")) (setq R (getreal"半径:")) (setq L (getreal"圆心间距离:")) (setq a 1) (setq n(getint"\n圆的个数:")) (while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a)) ) )
2018/10/11
20
3. 乘运算 格式:(* num1 num2 num3 ...) 4. 除运算 格式:(/ num1 num2 num3 ...) “除”函数以第一个数除以其他所有运算数的积, 即[ num1 / ( num2 * num3 * . . . ) ]。 例如: (* 2 5 3 2.0) 返回:60.0 (* 2 5 3) 返回:30 (/ 3 2) (Setq a(/ 3.0 2)) 返回:1.5
2018/10/11 11
例(2) ;;绘制正多边形程序
(defun c:dbx() (setq n (getint"\n输入多边形边数:")) (setq L (getreal"\n输入多边形边长:")) (setq P1(getpoint"\n输入多边形第一个角点坐 标:")) (setq P2(polar P1 0 L)) (command "polygon" n "e" p1 p2) )
2018/10/11 14
2.结构
( 1 )注释行以 ;开始,可在程序头或句尾,增加程 序可读性。也可以不要。 (2)除字符串外,字母大小写等效。 (3)表与表之间可以有空格,也可没有,建议有,这 样清楚。 如:(distance'(3 4)'(56 32))或 (distance '(3 4) '(56 32)) (4)函数名后至少要有一个空格,函数名与表之间可 有可无。
注意:“+”与“num1”及各数之间必须要有空格,后面 的函数格式都是如此。
2018/10/11 19
2. 减运算 格式:(- num1 num2 num3...) “减”函数(-)从第一个数中减去后面所有数的和, 即[ num1-( num2 + num3 + . . . ) ]。 如: Command: (- 28 14) 返回:1 4 Command: (- 25 7 11 ) 返回:7 Command: (- 50 20 10.0) 返回:20.0 Command: (- 20.0 30.0) 返回:-10.0
2018/10/11
5
( 4 )字符串( STR ):如:“ ABC” 、“ abc” 、 “457”等。 (5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n) 如:(2 4 f) ◇元素的个数叫表的长度。 ◇元素也可以是表,如( 45 ( 3 6 ) 7 ),这 叫嵌套。 ◇元素之间必须用“空格” 隔开。 ◇表的定义方式:(LIST 5 6);’(5 6); 还可以用defun定义(后面讲)。
2018/10/11 18
§3.2 基本函数
一、算数运算函数
1.加运算 格式:(+ Command:(+ Command:(+ Command:(+ num1 num2 num3...) 2 5) 返回:7 2.0 30.0 4.0 50.0) 返回:86.0 2 30 4 50.0) 返回:86.0
2018/10/11 16
2.源文件方式
用写字板或记事本把 AutoLISP 程序保存起来(后缀 为.LSP)。然后用“LOAD”命令装载并调用。 例如:(1)把下列程序保存到“e:\zm.lsp”
;;在屏幕上显示 ASCII码为(65-90)的字符 (defun C:zm(/ as) ;自定义命令 (setq as 65 n 100) (while (<= as 90) (command "text" (list n 100) 15 "" (chr as)) (setq as (+ as 1) n (+ n 20)) ) )
2018/10/11 3
( 4 ) AutoLISP 语言中使用大量的函数(有 200多个函数),进行各种运算; ( 5 ) AutoLISP 编写的程序特点(学习中注 意): 以表形式描述数据处理过程,程序执行过 程就是函数求值过程; 每段程序都是一个函数; 具有交互处理功能,边解释边执行; 采用模块化设计方法。
2018/10/11 6
例: (setq P(list 12.36 -26.58)) 结果是:(12.36 -26.58) 例:(setq P '(12.36 -26.58)) 结果是:(12.36 -26.58)
提示: (1)表的嵌套时一定要注意括号“(”、“)” 匹 配。 (2)西文状态下输入!!!
2018/10/11
22
举例:
1.求a,b,c三个数的平方和。 2.根据前后视读数,求两点间高差。 3.求闭合水准线路的高差闭合差。
2018/10/11
相关文档
最新文档