CAD系统变量与LISP函数摘要

合集下载

CAD系统变量大全

CAD系统变量大全

CAD系统变量大全CAD系统是广泛应用于工程图纸设计和制图的计算机辅助设计软件。

在CAD系统中,变量是用于控制和管理设计图纸的重要组成部分。

本文将介绍CAD系统中一些常用的系统变量,以帮助用户更好地了解和使用CAD软件。

1. 基本系统变量1.1. DIMSCALEDIMSCALE是用于控制绘图比例的系统变量。

它决定了绘图中的尺寸、文字高度等与实际尺寸的比例关系。

较大的尺寸比例可以用于绘制大尺寸的图纸,而较小的尺寸比例适用于绘制小尺寸的图纸。

1.2. LTSCALELTSCALE是用于控制线型比例的系统变量。

它决定了绘图中的线型的显示比例,即线型的实际长度与图纸上显示长度的比例关系。

较大的线型比例可以用于绘制大尺寸的图纸,而较小的线型比例适用于绘制小尺寸的图纸。

1.3. PDMODEPDMODE是用于控制点型图案的系统变量。

它决定了绘图中点的显示方式。

不同的数值对应不同的点型图案,例如0代表无点型图案,1代表细小的点型图案,2代表中等大小的点型图案,3代表大型的点型图案等。

1.4. PDSIZEPDSIZE是用于控制点的大小的系统变量。

它决定了绘图中点的实际大小,单位为绘图单位。

较大的点大小可以用于绘制大尺寸的图纸,而较小的点大小适用于绘制小尺寸的图纸。

1.5. CMLSCALECMLSCALE是用于控制注释比例的系统变量。

它决定了绘图中文字注释的大小与实际尺寸的比例关系。

较大的注释比例可以用于绘制大尺寸的图纸,而较小的注释比例适用于绘制小尺寸的图纸。

2. 图层相关变量2.1. CLAYERCLAYER是用于控制当前图层的系统变量。

图层是CAD中用于分组和管理图元对象的重要工具。

CLAYER变量定义了当前操作所在的图层,默认为0。

用户可以通过修改CLAYER变量来切换当前图层。

2.2. LAYEREVALLAYEREVAL是用于控制图层计算方式的系统变量。

当LAYEREVAL的值为0时,图层将按照图层列表的顺序进行计算;当LAYEREVAL的值为1时,图层将按照显示顺序进行计算。

LISP

LISP
函数介绍
AutoLISP提供一些预先定义的若干函数,每一个函数都是将函数名(大写 或小写)作为表中的第一元素,把函数中的变量,作为表中后面的元素,这样就可以调 用该函数。下面是 一些常用的简单函数介绍。 一、数值运算函数介绍 1.加函数(+) 表达式为:(+□元素(数)□元素(数)…) 这个函数返回所有数的总和,数可以是整型或实型。例如: (+□1□2) 返回 3 (+□1□2□3□4.5) 返回10.500000 2.减函数(-) 表达式为:(-□元素(数)□元素(数)…) 此函数是第一个数减去第二个数返回差,如果数多于两个,其返回值是用第一个数 减去以后各数之和。例如: (-□50□ 40)返回10 (-□50□40.0□2)返回8.000000
第二节 AutoLISP语言常用函数介绍
5.大于等于关系函数(>=) 表达式:(>=参数□参数…) 此函数为“大于或等于”关系函数。如果靠后的参数数值小于或等于靠前的参 数数值返回T,否则返回Nil例如: (>=□100□10) 返回T (>=□50□50) 返回T (>=□3□17) 返回Nil 6.小于等于关系函数(<=) 表达式:(<=参数□参数…) 此函数为“小于或等于”关系函数。如果靠后的参数数值大于或等于靠前的参 数数值返回T,否则返回Nil例如: (<=□100□10) 返回Nil (<=□50□50) 返回T (<=□3□17) 返回T
第一节 AutoLISP语言基础知识
5.说明 1)为使AutoLISP不对表求值,要在表的左小括号前加单引号“'”或表内最左边 加LIST。 2)在AutoLISP中,一个二维点用一个两个元素的表来表示,三维点用一个三维 表来表示。 3)AutoLISP语言采用一对“()”表示一个表格,表中有表,从里到外,处 理每一个表,直到全部的表格处理结束,得出处理结果。 4)AutoLISP语言可以在提示符Command:下直接输入执行,也可以在文本编 辑器或字处理软件中建立好,存为扩展名为.LSP的文件,再在AutoCAD中运行。后 一种方式预先用APPLOAD命令将文件装载进AutoCAD系统中。 5)一对空的引号“”表示一次回车。 6)符号“;”后面的内容为提示内容,程序不执行。

autocad lisp教程

autocad lisp教程

Lisp教程一.Lisp基础知识二.对话框基础一.基本知识第1节--------------------------------------------------------------------------------基本知识AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50年代末期出现,是一种擅于处理串行文字(List of Processing),属第四代「人工智能(Artificial Intelligence)」的计目的是令使用者充份利用AutoCAD进行开发,直接增加及修改AutoCAD指令.AutoLisp语言建基于普通的LISP语言上,并扩充了许多适用于CAD的特殊功能而形成.是一种能以直译方式(不须先行编译)亦可于AutoCAD内部执行的直译性程序语言.程序容易学习及撰写,程序即使出错亦不会对操作系统(如DOS,WINDOWS)有不良影响.数据及程序均统一以串行(List)结构表示.可直接调用几乎全部的AutoCAD命令.既具备一般高级语言的基本结构和功能,亦有一般高级语言没有的强大图形处理能力.内建于AutoCAD应用程序,不须另行购买;亦不须使用特定的编辑器或开发环境.可配合AutoCAD提供的PDB,建立DCL(Dialog Control Language)文件创建对话框.缺点: 执行速度较ObjectArx(旧称ARX,以C或C++程序开发,取代以前的ADS)程序慢;原程序不易保护;对低阶的硬件数据不易存取.第2节--------------------------------------------------------------------------------函数(Function)在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下:(函数名称参数1 参数2....)e.g. (PRINC "AutoLISP Programming")每一个完整的函数必须包在一对小括号( )内,左边为开括号,右边为关括号;如有若干数量的开括号,则一定有同等数量的关括号对应.左边开括号后紧随函数名称.函数名称与参数之间,或参数与参数之间须最少留一个空格.函数可有一个或多个参数(也可能没有参数),视该函数而定.函数名称不分大小写,即大小写字母视为相同.第3节--------------------------------------------------------------------------------数据型态(Data Type)整数(INT)没有小数字的数值,32位有号数,范围从+2,147,483,647到-2,147,483,648实数(REAL)带小数字的数值,以倍精度浮点格式储存(最少14位小数) e.g. 12.5当数值在1与-1之间时,必须加上前导零 e.g. 0.05可以科学记号表示: 在E或e后加上次方值 e.g. 4.1e-6字符串(STR)一般文字,其前后必须加上双引号" e.g. "AutoCAD"控制字符或脱逸码必须为小写,且须在字符前加上反斜线\ e.g. "\AutoCAD"像素名称(ENAME)是指定给图文件内对象的指针(Pointer,为16进位的数字卷标)e.g. <Entity name:14e5180>像素名称在图文件内是唯一的,不会重复对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象档案(FILE)以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量选集(PICKSET)用SSGET等函数建立的一个或多个对象的集合或群组转化(V ARIANT)可将像素名称转换为可与ActiveX配搭使用的VLA-Object对象符号(SYM)用以储存静态数据的名称;例如内建或使用者定义的函数符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外:左括号( 右括号) 句点. 单引号' 双引号" 分号;表(LIST)亦称为串行,是放在一对小括号( ) 内,一个或多个元素的有序集合e.g. (1.0 "Lisp" ( ) (5.6 7))元素可以是字符串,符号,整数或实数;也可以是另一个表元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为0,依此类推表的大小即为其顶层元素的数量(内层嵌套式的表,视为单一元素)点对(Dotted Pair)亦是表的一种;表内有2个元素,中间以一圆点分隔,且元素与圆点之间亦须以空格分开若表内没有任何元素,称为空串行或空表;以( ) 或(NIL) 表示第4节--------------------------------------------------------------------------------变数(Variable)为程序执行中动态储存数据的符号名称;主要分为2类:区域(Local)变量又称为局部变量;该变量只在该程序段落中有效,不能为其它程序使用全域(Global)变量又称为整体变量;变量在所有程序段落中均可使用变量名称与符号的限制相同,使用时宜采用有意义及易于辨别的名称变量在赋值或使用前无须先行设定相同的变量可以储存不同型态的数据(但同一时间内只可储存一种型态)在指定新的数据之前,变量储存的内容会保持不变赋值将数据给予指定的变量储存以内建函数SETQ进行(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(SETQ 变量名称1 资料1 [变量名称2 资料2 ....] )e.g. (SETQ NAME "David" AGE 37 WEIGHT 72.5 POINT (LIST 10 20))在函数名称之后,各参数以两个一组,每组左边为变量名称,右边为存入变量的数据亦可将变量名称赋以空值(NIL) :e.g. (SETQ OCCUPATION NIL)要显示变量所储存的数据,可以使用内建函数PRINC(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(PRINC 变量名称)e.g. COMMAND : (PRINC NAME) Result : David"David"在绘图模式中,亦可于指令行中使用感叹号! 来显示变量内容,或作为指令选项的输入值;语法如下: !变量名称e.g. COMMAND : !NAME Result : "David"在Visual LISP的主控台窗口中,于提示符号_$ 后键入要显示的变量名称_$变量名称e.g. _$NAME要检查变量所储存的数据型态,可使用内建函数TYPE;语法如下:(TYPE 变量名称)e.g. COMMAND : (TYPE NAME) Result : STR若检查的变量没有储存数据,则会传回NIL第5节--------------------------------------------------------------------------------练习(Exercises)将四个坐标分别存入四个变量中,并以LINE或PLINE指令,配合四个坐标变量,画出正四边形. COMMAND : (SETQ POINT1 (LIST 0 0) POINT2 (LIST 0 10) POINT3 (LIST 10 10) POINT4 (LIST 10 0)) COMMAND : LINE ;直线段指令COMMAND : !POINT1 ;第一点(左下角起点)COMMAND : !POINT2 ;第二点(左上角)COMMAND : !POINT3 ;第三点(右上角)COMMAND : !POINT4 ;第四点(右下角)COMMAND : C ;自动联机至起点以关闭四边形画圆: 将圆心坐标及半径长度分别存入两个变量中(变量名称及数据型态自订)COMMAND : (SETQ CEN (LIST 0 0) RAD 20) ;将圆心点设为坐标0,0;半径为20COMMAND : CIRCLE ;执行划圆指令Specify center.... : !CEN ;在提示后以变量CEN响应输入Specify radius.... : !RAD ;在提示后以变量RAD响应输入将不同型态的数据,分多次存入相同的变数内;每次均以PRINC及TYPE函数显示变量内容及其数据型态COMMAND : (SETQ TEMP 1.2) ;将实数1.2存入变数TEMPCOMMAND : !TEMP Result : 1.2COMMAND : (TYPE TEMP) Result : REALCOMMAND : (SETQ TEMP "AutoLISP") ;将字符串存入变量TEMPCOMMAND : !TEMP Result : "AutoLISP"COMMAND : (TYPE TEMP) Result : STR二数值资料第1节--------------------------------------------------------------------------------基本运算加函数(+ [数值参数1 数值参数2 ....] )e.g. (+ 2.5 4 6) Result : 12.5函数的结果为各参数之总和若仅提供一个参数,则以0加上此参数的结果为返回值若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数减函数(- [数值参数1 数值参数2 ....] )e.g. (- 10 2 3) Result : 5结果为第一个(最左边)参数减去其右边各参数的总和若只提供一个参数,返回值为0减去该参数的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数乘函数(* [数值参数1 数值参数2 ....] )结果为所有参数的乘积若只提供一个参数,则返回值为该参数乘以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数除函数(/ [数值参数1 数值参数2 ....] )e.g. (/ 24 2 3) Result : 4结果为第一个(最左边)参数除以其右边各参数的乘积若仅提供一个参数,则返回值为该参数除以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数注意: 在本篇教程中,各函数的数值参数,均可以变量(储存值只可以是整数或实数,且不可以是空值nil)取代第2节--------------------------------------------------------------------------------练习(Exercises)计算式(2+4)*3COMMAND : (* 3 (+ 2 4)) Result : 18计算式(50-8*5)/4COMMAND : (/ (- 50 (* 8 5)) 4) Result : 2注意: 上式的正确答案应是2.5,因为函数中的各参数均为整数,所以传回的结果亦为整数递增及递减递增(1+ 数值参数)e.g. (1+ 2) Result : 3递减(1- 数值参数)e.g. (1- 4) Result : 3三角函数(Trinagular Function)正弦值(SIN 弧度参数)e.g. (SIN 1) Result : 0.841471余弦值(COS 弧度参数)e.g. (COS 1) Result : 0.540302反正切值(A TAN 弧度参数)e.g. (ATAN 1) Result : 0.785398第3节--------------------------------------------------------------------------------其它数值处理次方值(EXPT 数值参数次方值)e.g. (EXPT 2 4) Result : 16若参数及次方值两个均为整数,返回值亦是整数;若其中一个为实数,结果为实数开方根(SQRT 数值参数)e.g. (SQRT 30) Result : 5.47723(ABS 数值参数)e.g. (ABS -123) Result : 123余数(REM [数值参数1 数值参数2 ....] )e.g. (REM 50 26 5) = (REM (REM 50 26) 5) Result : 4将参数1整除参数2的余数若参数多于2个时,则会将余数再整除下一个参数,再得出余数;依此类推若其中一个参数为实数时,则结果为实数;否则为整数最大公约数(GCD 数值参数1 数值参数2 )e.g. (GCD 81 57) Result : 3两个参数均必须为整数值型态自然对数(LOG 数值参数)e.g. (LOG 3.5) Result : 1.25276是EXP函数的反函数;传回值为实数型态自然反对数(EXP 数值参数)e.g. (EXP 1.25276) Result : 3.49999是LOG函数的反函数;传回值为实数型态第4节--------------------------------------------------------------------------------数值资料转型实数转整数(FIX 数值参数)e.g. (FIX 12.56) Result : 12只会截去小数部份(小数字不会4舍5入)整数转实数(FLOAT 数值参数)e.g. (FLOAT 12) Result : 12.0整数转字符串(ITOA 数值参数)e.g. (ITOA -17) Result : "-17"数值转字符串(RTOS 数值参数[模式[小数字] ] )e.g. (RTOS 17.23333 2 3) Result : 12.266若不设定模式,则依系统变量LUNITS 的设定值转换数值为字符串若不设定小数字,则依系统变量LUPREC 的设定值转换模式设定值可以是下列数值之一:1 = 科学记号2 = 十进制3 = 英呎及十进制英吋4 = 英呎及分数位英吋5 = 分数当选用的模式为3,4或5,则传回的字符串受系统变量UNITMODE影响(ANGTOS 角度参数[模式[小数字] ] )e.g. (ANGTOS 0.785398 0) Result : "45"e.g. (ANGTOS 0.785398 4) Result : "N 45d E"若不设定模式,则依系统变量AUNITS的设定值转换数值为字符串若不设定小数字,则依系统变量AUPREC的设定值转换模式设定值可以是下列数值之一:0 = 度1 = 度/分/秒2 = 分度量3 = 弪度4 = 土地测量单位当选用的模式为4,则传回的字符串受系统变量UNITMODE影响反函数为ANGTOF;参阅第5篇教程第5节--------------------------------------------------------------------------------数值资料检查数值(NUMBERP 数值参数)e.g. (NUMBERP -3.45) Result : Te.g. (NUMBERP "AutoLISP") Result : nil注意: 在范例的传回值中,T表示函数的结果为真(成立),nil表示结果为假(不成立)负数值(MINUSP 数值参数)e.g. (MINUSP -3.45) Result : Te.g. (MINUSP 0) Result : nile.g. (MINUSP 3.45) Result : nil零值(ZEROP 数值参数)e.g. (ZEROP 0) Result : Te.g. (ZEROP 3.45) Result : nil其它应用最大值(MAX [数值参数1 数值参数2 ....] )e.g. (MAX -88 5 2) Result : 5若没有提供任何参数,则传回值为0最小值(MIN [数值参数1 数值参数2 ....] )e.g. (MIN -88 5 2) Result : -88若没有提供任何参数,则传回值为0第6节--------------------------------------------------------------------------------练习(Exercises)计算下列算式:(+ 1234567890 1234567890) Result : -1825831516上式中两个数值参数均为整数,而结果值大于整数型态所能容许之范围;固导致发生溢位问题,产生无效的结果.修正算式如下: 只要将其中一个参数改为实数型态即可.(+ 1234567890.0 1234567890) Result : 2.46914e+009(+ 9876543210 1234567890) Result : 1.11111e+010上式中两个数值参数均为整数,但其中一个(第一个)参数巳大于整数型态所能容许之范围;系统会自动将此参数先行转为实数型态才计算.计算下列算式:(FIX (SQRT (+ 1 (MAX 20 10 40 30)))) Result : 6---- 最先执行的是最内层的算式(MAX 20 10 40 30) ,求出最大值为40---- 其次执行加函数,将MAX函数所得的最大值加1,结果为41---- 再利函数SQRT,将41开方根,结果为6.4031---- 最后使用FIX函数,截去其小数字,得到最后的结果为6三程序设计第1节--------------------------------------------------------------------------------使用者定义函数是将一群表示式组合成一个函数或指令可应用于绘图模式的指令行提示,Visual LISP主控台,或供其它自定义函数内的表示式呼叫使用AutoLISP原始程序代码均以纯文字格式存盘,扩展名为LSP(2000版可编译成扩展名为FAS的档案可以一般文字编辑器进行开发,如DOS的EDIT,WINDOWS的WORD或WORDPAD等一个自定函数内最少要有一个表达式在原程序文件(LSP)里,自定义函数以DEFUN函数开始;其语法如下:(DEFUN [C:] 函数名称( [自变量串行...] [/ 局部变数串行...] ) 表达式...)在呼叫带有自变量的自定函数时,必须同时提供与定义函数时,同等数量的参数,使各参数传入自定函数的各自变量中自变量被视为一种特殊类型的局部变量,无法用于该自定函数以外的其它函数若自定函数中无须设定任何自变量,亦必须以空串行( )加在函数名称之后若有提供局部变量,必须以斜线/ 加在局部变量的开头(即使前面没有自变量串行)各自变量,斜线,局部变量之间要以空格分隔;但与左右小括号之间则不须以空格分开若自变量串行中有相同名称的自变量出现,则会忽略第一个以后的相同自变量;变数亦是一样若在函数名称前加上C:,表示该函数可以在绘图模式的指令行提示下,其执行方式与内建函数相同;亦可以在任何内建命令(执行中)的提示后,以通透方式执行(但须将函数名称包在一对小括号中) 若在函数名称前没有加上C:,在指令行提示下,必须将函数名称包在一对小括号中才可执行不可以在执行一自定函数时,以通透方式执行另一自定函数第2节--------------------------------------------------------------------------------加载程序自定函数在使用前,都要将其所在的程序文件(扩展名为LSP)加载才可执行ACAD.LSP程序文件(预设在SUPPORT子目录内)会在启动AutoCAD时自动加载(LOAD "程序文件名称" [加载失败] )e.g. (LOAD "TEST")若程序文件之文件名为LSP,则在程序文件名称之后,可以不加上扩展名若有需要,系统会顺序尝试其它的扩展名: VLX FAS LSP若程序文件不在系统的支持目录下,则需在文件名前加上目录路径注意: 必须以正斜线/ 或两个反斜线\\ 作为目录的分隔符可以在加载失败的参数中提供字符串,以供加载失败时显示;亦可提供有效的自定函数,该函数在加载程序文件失败时会被执行注意:在程序文件加载后,在提示行显示的返回值,一般是该程序文件中,最后被定义的函数名称或是在程序文件内没有包含在自定函数中,最后一个表达式的执行结果第3节--------------------------------------------------------------------------------练习(Exercises)启动文字编辑器,编写一AutoLISP程序作两个同心圆(第1个圆半径为50,第2个圆半径为80),程序代码如下所示:(DEFUN C: 2CIRCLE () (SETQ CEN (LIST 0 0) RAD 50)(COMMAND CIRCLE CEN RAD)(COMMAND CIRCLE CEN (+ RAD 30)))---- 输入后以纯文字格式存盘(C:\TEST.LSP)---- 在AutoCAD绘图模式的指令行提示后,用LOAD函数将程序文件加载COMMAND : (LOAD "C:/TEST")---- 在指令行提示后,输入程序(函数)名称执行COMMAND : 2CIRCLE程序说明1 使用DEFUN建立自定函数的名称,并用SETQ函数将中心点(LIST 0 0)存入变数CEN,半径(50)存入变数RAD中2 使用COMMAND函数执行AutoCAD内建指令CIRCLE,并以变量CEN(圆的中心点)及变数RAD(圆的半径)回应3 与第2行大致相同,但在指定其半径时,先将储存半径的变量加30,使划出半径为80的圆;注意最右边的关括号,与第1行DEFUN左边的开括号是一对的启动文字编辑器,开启TEST.LSP程序文件,复制2CIRCLE至新程序2C,并改为传入自变量方式执行;程序代码如下:(DEFUN 2C (CEN RAD) (COMMAND CIRCLE CEN RAD)(COMMAND CIRCLE CEN (+ RAD 30)))---- 输入后以纯文字格式存盘---- 在AutoCAD绘图模式的指令行提示后,用LOAD函数将程序文件重新加载---- 在指令行提示后,输入程序(函数)名称执行COMMAND : (2C (LIST 0 0) 50)第4节--------------------------------------------------------------------------------批注单行批注分号;表示在分号右边(同一行)的字符均为批注,程序执行时会将其忽略多行批注;| |;表示在两个批注符号中间所有字符皆为批注,即使字符跨越多行关系运算在各个关系运算中,都会传回一逻辑值;若关系成立,传回T,否则会传回nil各参数可以是字符串,整数或实数型态;若以字符串进行比较,则会以字符串的ASCII码为准若函数中只有一个参数,传回值恒为T等于函数(= 参数1 [参数2 ....] )会将参数1与其后各个参数比较,若全部相等则传回T,否则传回nil e.g. (= 2 2.0) Result : T不等于函数(/= 参数1 [参数2 ....] )若参数1不等于其后任何一个参数,即传回T e.g. (/= 1 2.0) Result : Te.g. (/= "a" CHR(65)) Result : Te.g. (/= 10 30 40 10 20) Result : T小于函数(< 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均小于右边的参数,即传回Te.g. (< 1 2) Result : Te.g. (< "a" CHR(65)) Result : T大于函数(> 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均大于右边的参数,即传回Te.g. (> 1 2) Result : nile.g. (> "a" CHR(65)) Result : nil小于或等于函数(<= 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均小于或等于右边的参数,即传回Te.g. (<= 1 2) Result : Te.g. (<= 2 2) Result : Te.g. (<= "a" CHR(65)) Result : T大于或等于函数(>= 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均大于或等于右边的参数,即传回Te.g. (>= 1 2) Result : nile.g. (>= 2 2) Result : Te.g. (>= "a" CHR(65)) Result : nil第5节--------------------------------------------------------------------------------逻辑运算且运算(AND [表达式....] )若各表达式的传回值均为T,函数即返回T 值;若其中一个传回值为nil,函数传回nile.g. (AND (< 1 2) (> 8 5)) Result : T或运算(OR [表达式....] )若各表达式的传回值均为nil,函数即返回nil 值;若其中一个传回值为T,函数传回Te.g. (OR (> 1 2) (> 8 5)) Result : T否定运算(NOT 表达式)若表达式的传回值为T,函数即返回nil 值;相反若表达式传回值为nil,函数传回T 可用于检查传回值是否为nil另有一NULL函数与NOT函数功能相似e.g. (NOT (< 1 2)) Result : nil练习(Exercises)COMMAND : (= (- 50 25) (SQRT 625)) Result : T设计一简单程序(名称为AIR),在呼叫程序时,检查传入的数值自变量(为空气污染指数)是否大于200(即严重空气污染)---- 启动文字编辑器,开启TEST.LSP程序文件,输入下列程序代码:(DEFUN AIR (NUM) (> NUM 200))---- 输入后存盘(纯文字格式)---- 在AutoCAD绘图模式的指令行提示符号后,使用LOAD函数重新加载程序文件COMMAND : (LOAD "C:/TEST")---- 在AutoCAD绘图模式的指令行提示符号后,输入自定函数名称及参数执行COMMAND : (AIR 175) Result : nilCOMMAND : (AIR 215) Result : T四流程控制第1节--------------------------------------------------------------------------------条件判断是利用条件函数,配合关系及逻辑运算所设定的一些准则,令程序自行分析,因应情况作出适当行动.单一条件(IF 条件表达式是表达式[否表达式] )函数先检查条件表达式,若其传回值为T,便会执行其后的是表达式若有提供否表达式,且条件表达式的传回值为nil,函数将不会执行(跳过)是表达式而执行否表达式若没有提供否表达式,且条件表达式的传回值为nil时,函数将不作任何事情IF函数可以巢状方式嵌套,即在是或否的表达式中加入另一个IF函数练习(Exercises)判断空气污染指数: 大于100 = Very High, 51至100 = High, 26至50 = Medium, 25或以下= Low---- 启动编辑器,开启C:/TEST.LSP程序文件;新增AIR-1自定函数,程序代码如下:(DEFUN AIR-1 (NUM) (IF (> NUM 100) (PRINC "Very High"))(IF (AND (> NUM 50) (<= NUM 100)) (PRINC "High"))(IF (AND (> NUM 25) (<= NUM 50)) (PRINC "Medium"))(IF (<= NUM 25)) (PRINC "Low"))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用IF函数判断变量NUM是否大于100;若是则显示字符串Very High响应2 用IF函数判断变量NUM是否大于50且(AND)小于或等于100;若是则显示High响应3 用IF函数判断变量NUM是否大于25且(AND)小于或等于50;若是则显示Medium4 用IF函数判断变量NUM是否小于或等于25;若是则显示Low5 是一个没有提供任何自变量的PRINC函数;用以抑制显示答案时尾部符加的nil 或重复的传回值;而最右一个关括号,是用以对应第1行最左边的开括号IF函数的巢状练习: 修改上一课的程序练习,将多个IF函数合并成巢状嵌套---- 启动文字编辑器,开启C:/TEST.LSP程序文件---- 新增程序AIR-2,其程序代码如下:(DEFUN AIR-2 (NUM) (IF (> NUM 50) (PRINC (IF (> NUM 100) "Very high" "High"))(PRINC (IF (> NUM 25) "Medium" "Low")))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用IF函数判断变量NUM是否大于50;若条件成立(变量NUM大于50)时,再用另一个IF函数判断变量是否大于100;若条件成立(变量NUM大于100)时,使用PRINC函数显示字符串Very High,否则显示High2 若在第1个IF函数判断中,条件不成立(变量NUM不大于50)时;再用另一个IF函数判断变量是否大于25;若条件成立(NUM大于25)时,显示字符串Medium,否则显示字符串Low3 是一个没有提供任何自变量的PRINC函数;用以抑制显示答案时尾部符加的nil 或重复的传回值;而最右一个关括号,是用以对应第1行最左边的开括号注意:第1行最后一个关括号是对应前面的PRINC函数,尾2的关括号则是对应IF函数(判断NUM是否大于100)第2行最后一个关括号是对应第1行的IF函数(判断NUM是否大于50),尾2的关括号则是对应PRINC 函数,尾3的关括号则是对应IF函数(判断NUM是否大于25)最右边的关括号是对应第1行最左边的开括号PROGN 函数在以上各范例中,执行的表达式均为单一的函数运算;若要在表达式中顺序执行一连串的函数,便要将各函数包含在一个PROGN函数内;函数的传回值会是该PROGN函数中,最后一个表达式的运算结果---- 修改TEST.LSP程序文件的AIR-1程序,第1个IF函数如下,其余的IF函数请自行修改e.g. (IF (> NUM 100) (PROGN (SETQ DISP "Very High") (PRINC DISP)))注意: 最后一个关括号是对应前面的IF函数(判断变量NUM是否大于100)尾2的关括号是对应PROGN函数(用以包含SETQ及PRINC函数)尾3的关括号是对应PRINC函数的第2节--------------------------------------------------------------------------------条件判断多重条件(COND [ (条件表达式是表达式) ....] )函数会顺序检查各条件表达式;直到其中一个条件成立(传回T),即执行该条件式所对应的是表达式每个条件表达式只对应一个是表达式,而没有否表达式若条件式成立且执行对应的是表达式后,则不会再对余下的其它条件表达式进行检查若只有条件表达式而没有对应之是表达式,则只会传回条件表达式的逻辑值若没有提供任何条件表达式及是表达式,函数传回值恒为nil练习(Exercises)新增程序AIR-3,以改善上一课AIR-1程序;用一个COND函数判断多个条件表达式DEFUN AIR-3 (NUM) (COND((> NUM 200) (PRINC "Severe"))((> NUM 100) (PRINC "Very High"))((> NUM 50) (PRINC "High"))((> NUM 25) (PRINC "Medium"))((> NUM 0) (PRINC "Low"))(T (PRINC "Cannot Check")))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用COND函数进行多重判断2 判断变量NUM是否大于200,若条件成立,则显示Severe 讯息;第3至6行依此类推7 注意条件式为一个T 字母,表示条件式恒为真(成立),显示讯息Cannot Check作用是当以上各条件式均不成立时(变量小于或等于0),即执行此一表达式第3节--------------------------------------------------------------------------------循环(Loop)配合条件判断,关系及逻辑运算,令程序不断重复一些动作,以提高效率及减少重复动作时的人为错误可以多个循环形成巢状(嵌套式)循环,即在一个循环内嵌套另一个(或多个)循环指定的重复次数必须为正整数,亦可以是储存正整数的变量名称重复指定次数(REPEAT 重复次数[表达式....] )e.g. (REPEAT 10 (PRINC "David")) ;重复显示David字符串10次重复(WHILE 条件表达式[是表达式....] )若条件表达式的传回值为T,即会顺序执行函数内各表达式各表达式顺序执行完后,程序会返回函数的开头,重新检查条件表达式的传回值若条件表达式的传回值为nil,函数内各表达式将不会被执行e.g. (SETQ COUNT 1) ;将1存入变数COUNT(WHILE (<= COUNT 10) ;WHILE函数并检查变量COUNT是否<=10(PRINC "David") ;若条件成立则以PRINC函数显示David字符串(SETQ COUNT (1+ COUNT))) ;变量COUNT递增1,并将新值重新存入变量COUNT中取代原值注意: 第4行最右边的关括号,是对应第2行WHILE函数的开括号无限循环又称为死循环,即循环的条件判断式传回值恒为T,令循环不断重复而无法结束;在上例中:---- 若WHILE函数的条件表达式设定为(T) ;即条件永远成立---- 不作SETQ函数,或不将变量COUNT递增;变量COUNT储存值恒久不变,导致条件式永远成立第4节--------------------------------------------------------------------------------练习(Exercises)编写一程序SUM并将自变量存在NUM变量内,计算1+2+3+4 ....至变数NUM的总和(DEFUN SUM (NUM) (SETQ COUNT 1 TOTAL 0)(WHILE (<= COUNT NUM)(SETQ TOTAL (+ TOTAL COUNT)COUNT (1+ COUNT)))(PRINC TOTAL) (PRINC))程序说明1 设定函数SUM并将自变量存入变量NUM,设定变量COUNT以将数目由1开始递增,变量TOTAL(储存总和)初始值为0。

AutoCAD-AutoLISP基本函数

AutoCAD-AutoLISP基本函数

示例
1.75E+04 23.75 1'-5 1/2\" 17 1/2
工程(英尺 + 十进制英寸)5'-4.25"
• 参数precision指定数值的显示精度,对于表5-4中前3种格式,该参数 用来指定小数点后的小数位数。对于后两种格式,用来设定最小分数 的分母。如果没有指定precision的值,将采用系统变量LUPREC来设 定当前精度的值。 • 例如:在命令行中输入 • 命令: (setq x 17.5) • 17.5 • 命令: (setq fmtval (rtos x 1 4)) • "1.7500E+01" • 命令: (setq fmtval (rtos x 2 2)) • "17.50" • 命令: (setq fmtval (rtos x 3 2)) • "1'-5.5\"" • 命令: (setq fmtval (rtos x 4 2)) • "1'-5 1/2\"" • 命令: (setq fmtval (rtos x 5 2)) • "17 1/2" • · (angtos angle [ mode [ precision ] ] )
AutoCAD高级培训教程之二
AutoCAD应用开发
第三部分 AutoLISP基本函• • • • • • • • • • • • 3.1 赋值函数 3.2 数据类型转换函数 3.3 数学几何函数 3.4 关系逻辑函数 3.5 条件分支函数 3.6 循环函数 3.7 表处理函数 3.8 字符串处理函数 3.9 交互式数据输入函数 3.10 打印输出函数 3.11 Command函数 3.12 存取AutoCAD系统变量值函数 3.13 自定义函数和子程序 3.14 参数化编程实例

快速应用CAD中的系统变量和命令

快速应用CAD中的系统变量和命令

快速应用CAD中的系统变量和命令在使用CAD软件时,了解和灵活运用系统变量和命令是非常重要的。

系统变量和命令可以帮助我们更高效地完成绘图任务,提高工作效率。

本文将介绍一些常用的系统变量和命令,并提供一些使用技巧,帮助你更好地应用它们。

首先,让我们来了解一下系统变量。

系统变量是CAD中的一种特殊变量,它们用于控制和调整CAD软件的各种属性和行为。

我们可以通过直接输入系统变量名来设置它们的值。

例如,DWGUNITS是一个常用的系统变量,用于控制CAD中图形的单位。

默认情况下,它的值是0,表示使用英制单位。

你可以将其设置为1,表示使用公制单位。

另外,你还可以通过设置其他值来调整单位的精度和显示格式。

另一个常用的系统变量是LWDISPLAY,它控制CAD中线段的显示方式。

默认情况下,它的值是1,表示显示线段的宽度。

如果你想在绘图过程中隐藏线段宽度,可以将其设置为0。

除了系统变量,CAD还有许多有用的命令。

命令可以通过菜单栏、工具栏或快捷键来调用。

以下是一些常用的命令:1. 放大和缩小命令:在绘图过程中,经常需要放大或缩小图形以便更好地观察细节。

你可以使用ZOOM命令来实现这一目的。

例如,输入"ZOOM EXTENTS"将图形放大到适合屏幕的大小。

2. 移动和复制命令:CAD中的MOVE命令和COPY命令可以帮助你在图纸上移动和复制图形。

你只需选择要移动或复制的对象,并指定移动或复制的目标位置即可。

3. 偏移命令:OFFSET命令可以帮助你在图纸中创建平行线段或轮廓。

你只需选择要偏移的对象,并指定偏移的距离即可。

4. 旋转命令:在CAD中旋转对象是一项常见的操作。

你可以使用ROTATE命令来按指定的角度旋转选定的对象。

5. 标注命令:在完成绘图后,通常需要添加文字和标注。

CAD中的DIM命令可以帮助你添加尺寸标注,而TEXT命令可以用于添加普通的文字标注。

需要注意的是,以上命令和示例只是冰山一角。

AutoCADLisp之数据类型转换函数详情老伙计

AutoCADLisp之数据类型转换函数详情老伙计

AutoCADLisp之数据类型转换函数详情老伙计刚刚接触Lisp编程的小哥哥小姐姐们不知道如何把变量里面的数字变为字串符,或者把字串符转换成数字,或者数字四舍五入。

下面贴出各个函数的使用和功能。

1、整型转换为字符串的函数 (itoa int)例子: (itoa -2021) 返回“-2021”说明:把整型常数、变量或表达式的值转换为字符串,注意参数必须是整数,函数返回值中不带"+"号。

2、字符串转换为整数的函数 (atoi 字符串)例子:(atof "55.9") 返回 55 ,(atof "1997") 返回 1997说明:把字符串常数、变量或表达式转换为整数。

该函数从头扫描字符串,把前面的整数取出作为函数值返回。

如果字符串不是以数字打头,函数返回值为03、字符串转换为实数的函数 (atof 字符串)例子:(atof "197.1") 返回 197.1 ,(atof "6") 返回 6.0说明:把字符串常数、变量或表达式转换为实数。

该函数从头扫描字符串,把前面的数取出作为函数值返回。

如果字符串不是以数字打头,函数返回值为0.0。

4、整型转换为实型的函数 (float n)例子:(float 6) 返回 6.0(float 6.75) 返回 6.75说明:把整型数据转换为实型。

参数可以为整数或实数,函数返回值为实数。

5、实型转换为整型的函数 (fix n)例子:(fix 6) 返回 6(fix 6.7) 返回 6说明:把常数、变量、表达式的值取整。

(1)参数可以为整数或实数,函数返回值为整数。

(2)取整是截断小数部分,而不是四舍五入。

6、整数和实数格式化函数 (rtos number [mode] [precision])解释说明:此函数将依据所给定的mode、precision、AutoCAD 的UNITMODE 系统变量及DIMZIN尺寸变量来返回一字符串以表示number。

AutoCADLISP基本知识及函数

AutoCADLISP基本知识及函数

19.间接自动加载
command:(autoload lisp文件名 命令表);命令表为文件中部分命令

command:(autoload "filel.lsp" '("cmd1" "cmd2"));cmd1、cmd2位部分命令;
20.空气质量的判断
(defun air (num)
(if (> num 100)
(repeat s ;循环次数
(setq n (+ n i)) ;n=n+i计算
(setq i (1+ i)) ;i递增
)
(print n) ;循环结束,打印结果
(princ) ;静默退出,防止结果重复出现
(defun c:2circle () ;定义函数
(setq cen (list 0 0)
rad 50
) ;对圆心和半径赋值
(command "circle" cen rad) ;调用cad函数绘制圆
(command "circle" cen (+ rad 30)) ;绘制同心圆
(princ) ;静默退出
)
22.计算1+2+3+...+s
(defun sum(s) ;定义函数
(setq i 1 n 0) ;初始赋值
个数 0 34 66 100
总价 0 68 33 101
分析公鸡最多34只
程序如下
(defun chicken(/ hen cock chick cost);定义函数和母鸡、公鸡、小鸡、费用局部变量

CAD中自动画管线图的LISP程序

CAD中自动画管线图的LISP程序

(defun c:brel(/myosmode horv p p1 p2 p3)
(setq myosmode (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq p (getpoint "\nSelect point to break:"))
(initget 1P程序
画一些管路原理图时,当代表不同管路的直线在图中相交时,需将在交点处的某一直线断开,再用一半圆连接两断点,使用下面这个LISP编写的程序,只用键入"brel"的命令,其它的就由电脑去完成了。
程序中使用"break"命令截断需要被断开的管线,再用"arc"命令画一半圆连接两断点。变量p读取管线交点;p1、p2为点p的左右或上下两点;p3为连接p1、p2半圆的中点。由于使用"break"命令时若AUTOCAD环境处于对象捕捉方式(OSMODE≠0),则"break"命令截断的p1、p2两点可能为变为p1、p2附近的捕捉点。所以程序开始时用变量myosmode记录系统变量OSMODE,而后设置OSMODE为0,程序结束后再设置还原OSMODE。变量horn判断用户需要断开的是水平线还是垂直线。
(setq p3 (list (car p) (+ (cadr p) 1.5)))
)
(progn
(setq p1 (list (car p) (- (cadr p) 1.5)))
(setq p2 (list (car p) (+ (cadr p) 1.5)))
(setq p3 (list (+ (car p) 1.5) (cadr p)))

AUTO LISP函数参考

AUTO LISP函数参考

AUTO LISP函数参考1(10版本)以下为十年前纯手工录入的函数参考手册,以分享给爱好LISP这方面的朋友参考!AutoLISP提供了大量的预定义函数。

若将函数名(大小写都可)作为表中的第一个元素函数变元(若有的话)作为表中后面的元素,就可以调用那个函数。

本章按字母顺序列出AutoLISP所有基本函数。

用户会发现其中许多函数都是标准函数,可在LISP程序设计语言中找到。

还有一些函数是由 AutoCAD提供的且专用于交互图形环境。

1 FLATLAND 系统变量--与老版本的兼容性AutoLISP版本10支持AutoCAD的最新增强型三维图形功能,则时继续保证与AutoCAD老版本的兼容性。

FLATLAND系统变量就是用来控制该兼容性的。

当FLATLAND为零时,实现新三维功能;否则各函数操作与AutoLISP版本9的一样。

FLATLANDR的设置作用于下列AutoLISP函数:DISTANCE GRREAD POLARENTGET INITGET TBLNEXTGETDIST INTERS TBLSEARCHGETPOINT OSNAP在各函数说明中,已注明FLATLAND对上述函数起作用的方式。

2 ( + <数> <数> ...)这个函数返回所有<数>的总和。

其中的<数>可以是整型或实型的。

如果所有的<数>都是整数,其结果也是整数;如果其中有一个是实型的,那么其它整型数将转换为实型数结果将是实型数。

例如:(+ 1 2) returns 3(+ 1 2 3 4.5) returns 10.5(+ 1 2 3 4.0) returns 10.03 ( - <数> <数> ...)这个函数把第一个<数>减去第二个<数>,返回它们的差。

如果给定的<数>多于两个,那么将第一个<数>减去其后所有数之和,并返回最后的结果。

CAD LSP函数集全表要点

CAD LSP函数集全表要点

第一类数学运算功能函数1.1 (+ 数值数值...) 累计实数或整数数值1.2 (- 数值数值...) 减去数值1.3 (* 数值数值...) 所有数值乘积1.4 (/ 数值数值...) 第一个数值除以第二个以后数值的商1.5 (1+ 数值) 数值+11.6 (1- 数值) 数值-11.7 (abs 数值) 数值的绝对值1.8 (atan 数值) 反正切值1.9 (cos 角度) 角度的余弦值,角度值为弪度1.10 (exp 数值) 数值的指数1.11 (expt 基数指数) 基数的指数值1.12 (fix 数值) 将数值转换为整数值1.13 (float 数值) 将数值转换为实数值1.14 (gcd 数值1 数值2) 二数值的最大公因子1.15 (log 数值) 数值的自然对数值1.16 (max 数值数值...) 数值中的最大值1.17 (min 数值数值...) 数值中的最小值1.18 pi 常数p ,其值约为3.14159261.19 (rem 数值1 数值2) 二数值的相除的余数1.20 (sin 角度) 角度的正旋值,角度值为弪度1.21 (sqrt 数值) 数值的平方根第二类检验& 逻辑运算功能函数2.1 (= 表示式1 表示式2) 比较表示式1是否等于表示式2适用数值及字符串2.2 (/= 表示式1 表示式2) 比较表示式1是否大于等于表示式22.3 (< 表示式1 表示式2) 比较表示式1 是否<小于表示式22.4 (<= 表示式1 表示式2) 比较表示式1 是否<=小于等于表示式22.5 (> 表示式1 表示式2) 比较表示式1 是否>大于表示式22.6 (>= 表示式1 表示式2) 比较表示式1是否大于等于表示式22.7 (~ 数值) 传回:数值的位not值,(1的补码)2.8 (and 表示式1 表示式2…) 逻辑and的结果2.9 (boole 函数整数整数…) 位式布尔运算2.10 (eq 表示式1 表示式2) 比较表示式1与表示式2是否相同, 适用串行比较(实际相同)2.11 (equal 表示式1 表示式2 [差量]) 比较表示式1与表示式2是否相同, 差量可省略(内容相同)第三类转换运算功能函数3.1 (angtof 字符串[模式]) 角度值的字符串转成实数3.2 (angtos 角度[模式[精度]]) 角度转成的字符串值3.3 (atof 字符串) 字符串转成实数值3.4 (atoi 字符串) 字符串转成整数值3.5 (cvunit 数值原始单位转换单位) 数值转换单位后的值转换根据acad.unt 档案3.6 (distof 字符串[模式]) 依模式将字符串转成实数值3.7 (itoa 整数) 整数转成字符串3.8 (rtos 数值模式[精度]) 实数转成字符串3.9 (trans 点原位置新位置[位移]) 转换坐标系统值第四类串行处理功能函数4.1 (append 串行串行...) 结合所有串行成一个串行4.2 (assoc 关键元素联合串行) 依关键元素找寻联合串行中关系资料4.3 (car 串行) 串行中的第一个元素通常用来求x 坐标4.4 (cadr 串行) 串行中的第二个元素通常用来求y 坐标4.5 (caddr 串行) 串行中的第三个元素通常用来求z 坐标4.6 (cdr 串行) 除去第一个元素后的串行4.7 (cons 新元素串行) 将新元素结合到串行4.8 (foreach 名称串行表示式) 将串行的每一元素对应至名称再依表示式执行响应4.9 (length 串行) 串行内的元素数量4.10 (list 元素元素…) 将所有元素结合成一串行4.11 (listp 元素) 判断元素是否为一串4.12 (mapcar 函数串行1 串行2 ...) 将串行1、串行2、…等串行的元素配合函数,求得新串行4.13 (member 关键元素串行) 依关键元素(含)以后的串行4.14 (nth n 串行) 串行的第n个元素4.15 (reverse 串行) 将串行元素依顺序颠倒过来的串行4.16 (subst 新项旧项串行) 替换新旧串行后的串行第五类字符串、字符、档案处理功能函数5.1 (ascii 字符串) 字符串第一个字符的『ASCII』码5.2 (chr 整数) 整数所对应的ASCII 单一字符串5.3 (close 文件名称) 关闭档案5.4 (open 文件名模式) 开启档案代码,准备读取或写入资料5.5 (read 字符串) 串行中的字符串的第一组元素5.6 (read-char [档案代码]) 经由键盘或档案中读取单一字符5.7 (read-line [档案代码]) 经由键盘或档案中读取一行字符串5.8 (strcase 字符串[字样]) 转换字符串大小写5.9 (strcat 字符串1 字符串2 ...) 将各字符串结合成一字符串5.10 (strlen 字符串) 字符串构成的字符数(即字符串长度)5.11 (substr 字符串起始长度) 取出子字符串5.12 (wcmatch 字符串格式) T或nil,将字符串与通用字符进行比对5.13 (write-char 数值[档案代码]) 将一ASCII字符写到档案或屏幕5.14 (write-line 字符串[档案代码]) 将字符串写到档案或屏幕上第六类等待输入功能函数6.1 (getangle [基点] [提示]) 请求输入十进制角度数值,响应一弪度值提示及参考点可有可无6.2 (getcorner 基点[提示]) 请求输入另一矩框对角点坐标6.3 (getdist [基点] [提示]) 请求输入一段距离6.4 (getint [提示]) 请求输入一整数值6.5 (getkword [提示]) 请求输入『关键词』6.6 (getorient [基点] [提示]) 请求输入十进制角度,响应一弪度值不受angbase、angdir 影响6.7 (getpoint [基点] [提示]) 请求输入一个点坐标6.8 (getreal [提示]) 请求输入一实数6.9 (getstring [提示]) 请求输入一字符串6.10 (initget [位] 字符串) 设定下次getxxx 函数的有效输入第七类几何运算功能函数7.1 (angle 点1 点2) 取得二点的角度弪度值7.2 (distance 点1 点2) 取得二点的距离7.3 (inters 点1 点2 点3 点4 [模式]) 取得两条线的交点7.4 (osnap 点模式字符串) 依辅助抓点模式取得另一坐标点7.5 (polar 基点弪度距离) 依极坐标法取得另一坐标点7.6 (textbox 像素串行) 取得文字符串的二对角点坐标第八类像素处理功能函数8.1 (entdel 像素名称) 删除或逆删除像素8.2 (entget 像素名称[应用程序串行]) 取出像素名称的资料串行8.3 (entlast) 取出图形数据中的最后一个像素8.4 (entmake 像素串行) 建立一个新的像素串行8.5 (entmod 像素串行) 依更新的资料串行更新屏幕上元体8.6 (entnext [像素名称]) 找寻图面中的下一个像素8.7 (entsel [提示]) 请求选取一个像素,响应包含像素名称及选点坐标的串行8.8 (entupd 像素名称) 更新屏幕上复元体图形8.9 (handent 图码) 图码的元体名称8.10 (nentsel [提示]) BLOCK所含副元体像素数据串行8.11 (nentselp [提示] [点]) BLOCK所含副元体像素数据(以4 x 4矩形表示) .第九类选择集、符号表处理功能函数9.1 (ssadd [像素名称] [选择集]) 将像素加入选择集或建立一新选择集9.2 (ssdel 像素名称选择集) 将像素自选择集中移出9.3 (ssget [模式] [点1] [点2]) 取得一个选择集9.4 (ssget "X" [过滤串行]) 取得依过滤串行所指定范围的选择集9.5 (sslenth 选择集) 计算选择集的像素个数9.6 (ssmemb 像素名称选择集) 响应像素名称是否包含于选择集内9.7 (ssname 选择集索引值) 依索引值取出选择集中的像素名称9.8 (tblnext 符号表名称[T]) 检视符号表,有效的符号表:"LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"9.9 (tblsearch 符号表名称符号) 在符号表中搜寻符号第十类AutoCAD 相关查询、控制功能函数10.1 (command "AutoCAD 指令" ...) 呼叫执行AutoCAD指令10.2 (findfile 檔名) 传回:应该文件名的路径及文件名10.3 (getfiled 标题内定档名扩展名旗号) 透过标准AutoCAD档案对话DCL交谈框求得档案10.4 (getenv "环境变量") 取得该环境变量的设定值,以字符串表示10.5 (getvar "系统变量") 取得该系统变量的设定值,以字符串表示10.6 (setvar "系统变量" 值) 设定该系统变量的值10.7 (regapp 应用类项) 将目前的AutoCAD图形登记为一个应用程序名称第十一类判断式、循环相关功能函数11.1 (if <比较式> <表示式1> [表示式2]) 检算比较式结果,如果为真,执行<表示式1>否则,执行<表示式2>11.2 (repeat 整数[<表达式> <表达式> ...]) 重复执行<整数>次数11.3 (while 标题内定檔名扩展名旗号) 透过标准AutoCAD 档案对话DCL交谈框求得档案11.4 (cond "环境变量") 取得该环境变量的设定值,以字符串表示11.5 (progn 表达式1 表达式2 ...) 连结其内的表达式为一组,常用于配合if、cond等函数第十二类函数处理、定义、追踪& 错误处理功能函数12.1 (*error* 字符串) 程序错误时的警示讯息12.2 (alert 字符串) 以交谈框式显示出警告字符串12.3 (apply 功能函数串行) 将功能函数与串行结合后执行12.4 (defun 名称自变量串行表示式...) 自定函数或子程序12.5 (eval 表示式) 传回:表示式的执行结果12.6 (exit) 强制退出目前的应用程序12.7 (lambda 自变量表示式) 定义未具名的函数12.8 (progn 表达式1 表达式2 ...) 连结其内的表达式为一组,常用于配合if、cond 等函数12.9 (quit) 强制退出目前的应用程序12.10 (tablet 代码[列1 列2 列3 方向]) 取用或建立对数字板的校调12.11 (trace 函数…) 对函数设定追踪旗号,辅助除错12.12 (untrace 函数…) 对函数设定解除追踪旗号第十三类显示、打印控制功能函数13.1 (graphscr) 作图环境切换到图形画面13.2 (grclear) 暂时清除模前的屏幕画面13.3 (grdraw 起点终点颜色[亮显]) 暂时性的画出一条线13.4 (grread [追踪]) 由输入设备读取追踪值13.5 (grtext 位置字符串[亮显]) 将字符串显示在状态列或屏幕菜单上13.6 (grvecs 向量串行[转置矩阵]) 暂时性的画出多条线13.7 (menucmd 字符串) 提供在AutoLISP中呼叫各菜单13.8 (prin1 [表示式[档案代码]) 将表示式打印于命令区或已开启的档案,句柄字符则以"\" 为前缀展开13.9 (princ [表示式[档案代码]) 除句柄字符则不以"\" 为前缀展开外其余同prin1 13.10 (print [表示式[档案代码]) 除表示式会往下一新行列出,及一空格外其余同prin113.11 (prompt 讯息) 将讯息显示于屏幕的命令区,并随后响应一个nil讯息13.12 (redraw [像素名称[模式]]) 重绘整张图或依像素名称重绘该图形13.13 (terpri) 在屏幕上显示新列13.14 (textscr) 作图环境切换到文字画面13.15 (textpage) 清除文字画面文字类似DOS的cls指令13.16 (vports) 传回:窗口组态串行第十四类符号、元素、表示式处理功能函数14.1 (atom 元素) 如果元素不是串行,响应T,否则为nil14.2 (atoms-family 格式[符号串行]) 传回:一组已定义函数的符号串行14.3 (boundp 表示式) 传回:T或nil,响应表示式是否有值存在14.4 (minusp 元素) 传回:T 或nil,元素是否为负值14.5 (not 元素) 传回:T 或nil,判定元素是否为nil14.6 (null 元素) 传回:T或nil判定元素是否被赋予nil值14.7 (numberp 元素) 传回:T或nil,元素是否为整数或实数14.8 (... '表示式) 响应表示式未检算前状态14.9 (quote 表示式) 响应表示式未检算前状态,同『'』功能14.10 (set 符号表示式) 将表示式结果设定给带单引号' 符号14.11 (setq 符号1 表示式1 [符号2 表示式2]...) 设定表示式结果给各符号14.12 (type 元素) 传回:元素的资料型态143.13 (zerop 元素) 传回:T 或nil,元素是否为0 值第十五类ADS、AutoLISP 加载与释放函数15.1 (ads) 传回:目前加载ADS程序串行15.2 (ver) 传回:目前AutoLISP版本字符串15.3 (load LSP檔名[加载失败]) 加载AutoLISP档案(*.lsp)15.4 (arxload <应用程序名称> [错误响应]) 加载一个ARX应用程序文件15.5 (arxunload <应用程序名称> [错误响应]) 释放ARX应用程序文件15.6 (autoarxload <文件名称> <指令定义>) 加载一个关连式的ARX檔15.7 (autoload ADS 定义的函数& 指令) 加载一个关连式的AutoLISP檔15.8 (autoxload <文件名称> <指令定义>) 加载一个关连式的ADS檔15.9 (xload 应用程序[出错处理]) 加载ADS应用程序15.10 (xunload 应用程序[出错处理]) 释放ADS应用程序第十六类内存空间管理函数16.1 (alloc 数值) 以节点数值设定区段大小16.2 (expand 数值) 以区段数值配置节点空间16.3 (gc) 强制收回废内存16.4 (mem) 显示目前的内存使用状态16.5 (vmon) 释放ADS应用程序16.6 (xdroom 像素名称) 传回像素延伸资料允用得内存空间16.7 (xdsize 串行) 传回像素延伸资料所占用的内存空间第十七类ARX 定义的函数17.1 (acad_colordlg 颜色码旗号) 显示出标准AutoCAD颜色选择交谈框17.2 (acad_helpdlg 求助文件名主题) 显示出标准AutoCAD 求助交谈框------------------- -------------------------------------- -执行结果+ (加) 返回所有数的和–(减) 将第一个数减去其他数的和并返回差值* (乘) 返回所有数的乘积/ (除) 将第一个数除以其他数的乘积并返回商= (等于) 比较参数是否相等/= (不等于) 比较参数是否值不相等< (小于) 如果每个参数值都小于它右边的参数则返回T,否则返回nil<= (小于或等于) 如果每个参数值都小于或等于它右边的参数则返回T,否则返回nil> (大于) 如果每个参数值都大于它右边的参数则返回T,否则返回nil>= (大于或等于) 如果每个参数值都大于或等于它右边的参数则返回T,否则返回nil~ (按位非) 返回参数的按位非(即1 的补码)1+ (增1) 将参数加11–(减1) 将参数减1abs 返回参数的绝对值acad_colordlg 显示标准的AutoCAD 颜色选择对话框acad_helpdlg 启动帮助工具(已废弃)acad-pop-dbmod 恢复DBMOD 系统变量的值到最近用acad-push-dbmod 保存的值acad-push-dbmod 储存DBMOD 系统变量的当前值acad_strlsort 以ASCII码字母顺序对字符串表进行排序acad_truecolorcli 从命令行中选择AutoCAD 真彩色acad_truecolordlg 显示AutoCAD 真彩色选择对话框acdimenableupdate 控制关联标注的自动更新acet-layerp-mode 查询和设置LAYERPMODE 配置acet-layerp-mark 放置图层先前记录的开始和结束标记acet-laytrans 转换图形中的图层为其它图形或标准文件中所定义的标准acet-ms-to-ps 从模型空间单位转换实数值到图纸空间单位acet-ps-to-ms 从图纸空间单位转换实数值到模型空间单位action_tile 为某一对话框控件指定一个动作表达式,用户在对话框中选中这个控件时,就会执行该动作表达式add_list 在当前激活的对话框的列表框中增加一个字符串或修改其中的一个字符串alert 显示一个警告框,其中显示一条出错或警告信息alloc 设置段长度以供expand 函数使用and 返回表达式的逻辑与(AND) 运算结果angle 以弧度为单位返回两点之间连线与当前UCS 下X 轴之间的夹角angtof 将表示角度的字符串转换为实数(浮点数)形式的弧度值angtos 将一个以弧度为单位的角度值转换成字符串append 将任意多个表组合成一个表apply 将参数表传给指定的函数arx 返回当前已加载的ObjectARX 应用程序名表arxload 加载ObjectARX 应用程序arxunload 卸载ObjectARX 应用程序ascii 将字符串中的第一个字符转换成其ASCII 码(整数)后返回assoc 从关联表中搜索一个元素,如果找到则返回该关联表条目atan 返回一个数的反正切值(以弧度为单位)atof 将一个字符串转换成实数atoi 将一个字符串转换成整数atom 验证一个项是否是原子atoms-family 返回由当前已定义的符号组成的一个表autoarxload 预定义可自动加载某相关ObjectARX 应用程序的命令名autoload 预定义可自动加载某相关AutoLISP 应用程序的命令名Boole 用作一个通用的按位逻辑运算函数boundp 检验符号是否被设置为某个值caddr 返回表的第三个元素cadr 返回表的第二个元素car 返回表的第一个元素cdr 返回去掉了第一个元素的表chr 将代表字符ASCII 码的整数转换成包含相应的单一字符的字符串client_data_tile 将特定应用数据与一个对话框控件相关联close 关闭一个已打开的文件command 执行一条AutoCAD 命令cond 多条件、多处理结果函数cons 向表的头部添加一个元素,或构造一个点对cos 返回弧度角度的余弦值cvunit 在不同测量单位之间进行换算defun 定义函数defun-q 将函数定义为表defun-q-list-ref 返回用defun-q 定义的函数的表结构defun-q-list-set 将符号设置为以表形式定义的函数dictadd 在指定词典内添加非图形对象dictnext 查找词典中的下一个条目dictremove 从指定词典中删除一个条目dictrename 重命名词典条目dictsearch 在词典中搜索某个项dimx_tile 返回控件的宽度dimy_tile 返回控件的高度distance 返回两个点之间的距离distof 将一个表示实(浮点)数的字符串转换成一个实数done_dialog 中断对话框end_image 结束当前激活的对话框图像控件的操作end_list 结束对当前激活的对话框列表的操作entdel 删除对象(图元)或恢复先前删除的对象entget 获得对象(图元)的定义数据entlast 返回图形中最后那个未删除的主对象(图元)名称entmake 在图形中创建一个新图元entmakex 创建一个新对象或图元,赋给它一个句柄和图元名(但不指定所有者),并返回新图元的名称entmod 修改对象(图元)的定义数据entnext 返回图形中的下一个对象(图元)名entsel 提示用户通过指定一个点来选择单个对象(图元)entupd 更新对象(图元)的屏幕显示eq 确定两个表达式是否具有相同的约束条件equal 确定两个表达式的值是否相等*error* 可由用户定义的错误处理函数eval 返回AutoLISP 表达式的求值结果exit 强行使当前应用程序退出exp 返回常数e (2.718282...) 的指定次幂(自然反对数)expand 为AutoLISP 分配附加空间expt 返回以某指定数为底数的若干次幂的值fill_image 在当前激活的对话框图像控件中画一个填充矩形findfile 在AutoCAD 库路径中搜索指定文件或目录fix 截去实数的小数部分,将它转换成整数后返回该整数float 将一个数转换为实数后返回foreach 将表中的所有成员以指定变量的身份带入表达式求值function 通知Visual LISP 编译器将参数作为内置函数进行链接和优化gc 强制收集无用数据,释放不再使用的节点gcd 返回两个整数的最大公约数get_attr 获取对话框指定控件的某个属性值get_tile 获取对话框指定控件的当前运行时的值getangle 暂停以等待用户输入角度,然后以弧度形式返回该角度getcfg 从acad.cfg 文件的AppData 段中检索应用数据getcname 获取AutoCAD 命令的本地化名或英文名getcorner 暂停等待用户输入矩形第二个角点的坐标getdist 暂停以等待用户输入距离getenv 以字符串方式返回指定的环境变量的值getfiled 用标准的AutoCAD 文件对话框提示用户输入一个文件名,并返回该文件名getint 暂停以等待用户输入一个整数并返回该整数getkword 暂停以等待用户输入一个关键字并返回该关键字getorient 暂停以等待用户输入角度,并返回该角度getpoint 暂停以等待用户输入点,并返回该点getreal 暂停以让用户输入一个实数并返回该实数getstring 暂停以等待用户输入字符串,并返回该字符串getvar 获取一个AutoCAD 系统变量的值graphscr 显示AutoCAD 图形屏幕grclear 清除当前视口(已废弃)grdraw 在当前视口中的两个点之间显示一条矢量线grread 从AutoCAD 的任何一种输入设备中读取数值grtext 将文本写到状态行或屏幕菜单区grvecs 在图形屏幕上绘制多个矢量handent 根据对象(图元)的句柄返回它的对象(图元)名help 调用帮助工具if 根据对条件的判断结果,对两个表达式求值initdia 强制显示下一个命令的对话框initget 为随后的用户输入函数调用创建关键字inters 求两条直线的交点itoa 将整数转换成字符串,并返回转换结果lambda 定义无名函数last 返回表的最后一个元素layoutlist 返回当前图形中所有图纸空间布局组成的表length 以整数形式返回表中元素的数目list 将任意数目的表达式组合成一个表listp 检查某个项是否是表load 对一个文件中的AutoLISP 表达式求值load_dialog 加载DCL 文件log 返回一个实数的自然对数logand 返回一个整数表中的各数按位逻辑与(AND) 的结果logior 返回一个整数表中的各数按位逻辑或(OR) 的结果lsh 返回某整数作指定次逻辑移位后的结果mapcar 将作为本函数参数的一个或多个表的各个元素提供给指定函数进行求值,并将由求值结果构成的表返回max 返回给定各数中的最大者mem 显示AutoLISP 内存的当前状态member 搜索表中是否包含某表达式,并从该表达式的第一次出现处返回表的其余部分menucmd 发出菜单命令,或设置并检索菜单项状态menugroup 检查是否加载了指定的菜单组min 返回给定各数中的最小者minusp 检查某个数是否是负数mode_tile 设置对话框控件的状态namedobjdict 返回当前图形的命名对象词典的图元名,它是所有非图形对象的根nentsel 提示用户指定点来选择对象(图元),得到这个对象所指片段的对象名nentselp 在没有用户输入的情况下,本函数的功能与nentsel 函数类似new_dialog 开始一个新的对话框并显示该对话框,而且能指定一个缺省操作not 检查一个项的求值结果是否为nilnth 返回表中的第n 个元素null 检查某项的值是否设置为nilnumberp 检查某个项是否是实数或整数open 打开一个文件,供其他AutoLISP I/O 函数访问or 返回对表达式进行逻辑或(OR) 运算的结果osnap 将某种对象捕捉模式作用于指定点而获得一个点,并返回该点polar 在UCS 坐标系下,求某点的指定角度和指定距离处的点,并返回该点prin1 在命令行打印一个表达式或将表达式写入已打开的文件中princ 在命令行打印表达式,或将表达式写入已打开的文件中print 在命令行打印表达式,或将表达式写入已打开的文件中progn 顺序地对每一个表达式进行求值,并返回最后那个表达式的值prompt 在屏幕提示区显示一个字符串quit 强制退出当前应用程序quote 返回表达式而不对其求值read 返回字符串中的第一个表或第一个原子read-char 从键盘输入缓冲区或打开文件中读入一个字符,并将该字符转换成十进制的ASCII 码值后返回read-line 从键盘或已打开文件中读取行结束符前的字符串redraw 重画当前视口或当前视口中的一个指定对象(图元)regapp 为当前AutoCAD 图形注册一个应用名,为使用扩展对象数据作准备rem 将第一个数除以第二个数,并返回余数repeat 对循环体中的每一个表达式进行指定次数的求值计算,并返回最后一个表达式的值reverse 将表的元素顺序倒置后返回rtos 将数字转换成字符串set 将引号中的符号名的值设置成一个表达式的值set_tile 设置对话框控件的值setcfg 将应用数据写到acad.cfg 文件的AppData 段中setenv 将系统环境变量设为指定值setfunhelp 给帮助工具注册一个用户定义函数,这样,用户在请求该命令的帮助时,就会调用正确的帮助文件和主题setq 将一个或多个符号的值设置为相应表达式的值setvar 设置AutoCAD 系统变量为指定值setview 为指定视口建立一个视图sin 以实数形式返回角度的正弦值(以弧度为单位)slide_image 在当前激活的对话框图像控件中显示AutoCAD 幻灯片snvalid 检查组成符号表名的各字符的有效性sqrt 以实数形式返回一个数的平方根ssadd 将对象(图元)加入到选择集中,或创建新的选择集ssdel 从选择集中撤消对象(图元)ssget 根据选定对象创建选择集ssgetfirst 判断哪些对象是被选取的和被夹取的sslength 求出一个选择集中的对象(图元)数目,并将其作为一个整数返回ssmemb 测试某对象(图元)是否是选择集的成员ssname 返回选择集中由序号指定的那个对象(图元)的图元名ssnamex 获取关于选择集创建方式的信息sssetfirst 设置哪些对象既是被选取的又是被夹取的startapp 启动Windows 应用程序start_dialog 显示对话框并将控制交给对话框start_image 开始对对话框控件中的一个图像控件进行操作start_list 开始处理对话框中的列表框或弹出式列表框中的列表strcase 将字符串中的所有字母转换成大写或小写后返回strcat 将多个字符串拼接成一个长字符串后返回strlen 以整数形式返回一个字符串中字符的个数subst 在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表substr 返回字符串中的一个子字符串tablet 获取和设置数字化仪校准tblnext 在符号表中查找下一项tblobjname 返回指定符号表条目的图元名tblsearch 在指定的符号表中搜索符号名term_dialog 终止当前所有的对话框,就象用户取消了它们一样terpri 在命令行上输出一个换行符textbox 测量一个指定文本对象的尺寸,并返回围住该文本的一个矩形框的对角坐标textpage 从图形屏幕切换至文本屏幕textscr 切换至文本屏幕(相当于AutoCAD Flip Screen 功能键)trace 调试AutoLISP 程序时的辅助函数trans 将一个点(或位移量)从一个坐标系转换成另一个坐标系type 返回指定项的数据类型unload_dialog 卸载DCL 文件untrace 清除指定函数的跟踪标志vector_image 在当前激活的对话框图像控件上显示一个矢量线ver 返回当前AutoLISP 版本号的字符串VL- 函数VLAX- 函数vlisp-compile 将AutoLISP 源代码生成为FAS 文件VLR- 函数vports 返回表示当前视口配置的视口描述符表wcmatch 将模式字符串与某指定的字符串进行匹配比较while 对测试表达式进行求值,如果它不是nil,则执行循环体中的表达式,重复这个过程,直到测试表达式的求值结果为nilwrite-char 将一个字符写到屏幕上或一个已打开的文件中write-line 将字符串写到屏幕上或一个已打开的文件中xdroom 返回对象可供使用的扩展数据(Xdata) 空间的大小xdsize 返回一个表作为扩展数据连接到对象(图元)上时所占用的空间大小(以字节表示)zerop 检查一个数的值是否为0。

CAD系统变量参数解析(最全最详细)

CAD系统变量参数解析(最全最详细)

CAD系统变量参数详细解析变量名称说明ACADLSPASDOC 0 仅将acad.lsp 加载到AutoCAD 任务打开的第一个图形中; 1 将acad.lsp 加载到每一个打开的图形中ACADPREFIX 存储由ACAD 环境变量指定的目录路径〔如果有的话〕,如果需要则附加路径分隔符ACADVER 存储AutoCAD 的版本号。

这个变量与DXF 文件标题变量$ACADVER 不同,"$ACADVER" 包含图形数据库的级别号ACISOUTVER 控制ACISOUT 命令创建的SAT 文件的ACIS 版本。

ACISOUT 支持值15 到18、20、21、30、40、50、60 和70。

AFLAGS 设置ATTDEF 位码的属性标志:0无选定的属性模式:1.不可见2.固定4.验证.8.预置ANGBASE 类型:实数;保存位置:图形初始值:0.0000 相对于当前UCS 将基准角设置为0 度。

ANGDIR 设置正角度的方向初始值:0;从相对于当前UCS 方向的0 角度测量角度值。

0 逆时针1 顺时针APBOX 打开或关闭AutoSnap 靶框。

当捕捉对象时,靶框显示在十字光标的中心。

0 不显示靶框1 显示靶框APERTURE 以像素为单位设置靶框显示尺寸。

靶框是绘图命令中使用的选择工具。

初始值:10AREA AREA 既是命令又是系统变量。

存储由AREA 计算的最后一个面积值。

ATTDIA 控制INSERT 命令是否使用对话框用于属性值的输入:0.给出命令行提示1.使用对话框中国热模网首发ATTMODE 控制属性的显示:0 关,使所有属性不可见;1.普通,保持每个属性当前的可见性;2.开,使全部属性可见ATTREQ 确定INSERT 命令在插入块时默认属性设置。

0.所有属性均采用各自的默认值;1.使用对话框获取属性值AUDITCTL 控制AUDIT 命令是否创建核查报告(ADT) 文件:0.禁止写ADT 文件 1.写ADT 文件AUNITS 设置角度单位:0.十进制度数1.度/分/秒2.百分度3.弧度4.勘测单位AUPREC 设置所有只读角度单位〔显示在状态行上〕和可编辑角度单位〔其精度小于或等于当前AUPREC 的值〕的小数位数。

AUTOCAD中的几个LISP程序

AUTOCAD中的几个LISP程序

AUTOCAD中的几个LISP程序李敬--------------------------------------------------------------------------------机械制图中,常常得做许多大量的重复工作。

下面这几个用Lisp编写得程序,是我画图时经常使用的,节省了我的不少时间,希望也能帮助广大使用AUTOCAD的工程师们。

1.自动求和机械制图中材料表的填写是毕不可少的,填写完后还需根据材料表求出总重量。

一般一幅图中常有几十个物体,将这些重量一项一项相加个繁琐的过程,而且容易出错。

使用下面这个程序,只需用鼠标选定需要相加的数,其和就会自动的显示在命令行中。

因为在AUTOCAD中没有“数”这种实体,所有的数都以实体“TEXT”存在,所以程序中使用了“atof”函数,将以字符串形式表示的数转换为实数。

(defun c:total( / cmdmode sset ssl nsset temp ssl1 total)(if *error* quit)(setq cmdmode (getvar "cmdecho"))(setvar "cmdecho" 0)(prompt "\nSelect numbers to add: ")(setq sset (ssget))(if (null sset)(princ "\nError: Nothing selected!\n");过滤出选中的“text”实体,并报告有多少“text”实体被选中。

(progn(setq ssl (sslength sset))(setq nsset (ssadd))(while (> ssl 0)(setq temp (ssname sset (setq ssl(1- ssl))))(if (= (cdr (assoc 0 (entget temp))) "TEXT")(ssadd temp nsset)))(setq ssl (sslength nsset))(print ssl)(princ "text entities are found.");选出所有可转化为数的“TEXT”,并求和。

LISP语言在CAD工程制图中的应用_谢威

LISP语言在CAD工程制图中的应用_谢威

C/C++ 的 ObjectARX。这里推荐使用 LISP 语言是因为在 AutoCAD 中集
成了两种语言的开发环境,并且有详细的帮助文件。LISP 语言是人工智
能学科领域中广泛采用的一种程序设计符号语言。这种语言在参数化
绘图中有很大的灵活性,并且可以实现一定的人工智能。LISP 开发出的
程序可以像运行 CAD 普通命令一样在命令行中直接键入自己定义的命令运行,保Fra bibliotek了用户的绘图习惯。
工程制图人员采用 LISP 语言编写出适合工作需要的工具,使工程制
图人员如虎添翼,大大提高了工作效率,在更加广阔的天地里施展才华。
参考文献 [1]《AutoLISP 程序员参考手册》 [2]《AUTOCAD 使用手册 》 [3]《南方 CASS 使用手册》
— 627 —
科技信息
计算机与网络
LIS P 语言在 CAD 工程制图中的应用
辽宁省第六地质大队 谢 威 辽宁省第二水文地质工程地质大队 杨 娇
[摘 要]针对 CAD 技术在测量制图工作中的重要性,而 LISP 程序是 CAD 技术的重要拓展,结合自已的工作体会,提出一种工具 程序设计,并用 LISP 语言编程,实现计算机的自动设计、计算、制图功能,使工程制图工作更有效的顺利进行。 [关键词]LISP 工程制图 CAD 技术
一、引言 LISP(List Processor)程序语言是由 Autodesk 公司开发的一种程序 语言。AutoCAD 软件包中包含大多数用于产生图形、处理图形的命令, 但仍有某些命令末被提供。通过 AutoLISP,可以使用 AutoLISP 程序语 言编制能够在图形文本对象内编写工具或作全局选择性改变程序。 在工程测量中,内业资料计算占有很重要的比重,内业资料计算的 速度直接决定了测量工作的快速、顺利地完成。计算机辅助设计 (Computer Aid Design 简写 CAD,常称 AutoCAD)是 20 世纪 80 年代初 发展起来的一门新兴技术型应用软件。如今在各个领域均得到了普遍 的应用。而 AutoCAD 配合 AutoLISP 语言编制出的程序,使测量内业资 料整理更加有效的顺利进行,从而大大减少内业工作量。以下通过编写 “图块过滤”的 LISP 程序工具来说明程序在制图中的应用。 二、工程制图 LISP 实用程序 1、主程序 (defun c:gltk () (princ "** 使用此程序时必须全图显示 **") (setvar "cmdecho" 0) (SETVAR "pickstyle" 0) (setq B (assoc 2 (entget (car (entsel "< 请选择需要过滤图块:>"))))) (setq xisijl

AutoCAD系统变量详解

AutoCAD系统变量详解

AutoCAD系统变量详解AutoCAD系统变量详解AACADLSPASDOC 控制AutoCAD 是将acad.lsp 文件加载到所有图形中,还是仅加载到在AutoCAD 任务中打开的第一个文件中ACADPREFIX 存储由ACAD 环境变量指定的目录路径(如果有的话),如果需要则添加路径分隔符ACADVER 存储AutoCAD 版本号ACISOUTVER 控制ACISOUT 命令创建的SAT 文件的ACIS 版本AFLAGS 设置ATTDEF 位码的属性标志ANGBASE 设置相对当前UCS 的0 度基准角方向ANGDIR 设置相对当前UCS 以0 度为起点的正角度方向APBOX 打开或关闭AutoSnap 靶框APERTURE 以像素为单位设置对象捕捉的靶框尺寸AREA 存储由AREA、LIST 或DBLIST 计算出来的最后一个面积ATTDIA 控制-INSERT 是否使用对话框获取属性值ATTMODE 控制属性的显示方式ATTREQ 确定INSERT 在插入块时是否使用缺省属性设置AUDITCTL 控制AUDIT 命令是否创建核查报告文件(ADT)AUNITS 设置角度单位AUPREC 设置角度单位的小数位数AUTOSNAP 控制AutoSnap 标记、工具栏提示和磁吸BBACKZ 存储当前视口后剪裁平面到目标平面的偏移值BINDTYPE 控制绑定或在位编辑外部参照时外部参照名称的处理方式BLIPMODE 控制点标记是否可见CCDATE 设置日历的日期和时间CECOLOR 设置新对象的颜色CELTSCALE 设置当前对象的线型比例缩放因子CELTYPE 设置新对象的线型CELWEIGHT 设置新对象的线宽CHAMFERA 设置第一个倒角距离CHAMFERB 设置第二个倒角距离CHAMFERC 设置倒角长度CHAMFERD 设置倒角角度CHAMMODE 设置AutoCAD 创建倒角的输入模式CIRCLERAD 设置缺省的圆半径CLAYER 设置当前图层CMDACTIVE 存储一个位码值,此位码值标识激活的是普通命令、透明命令、脚本还是对话框CMDECHO 控制AutoLISP 的(command) 函数运行时AutoCAD 是否回显提示和输入CMDNAMES 显示活动命令和透明命令的名称CMLJUST 指定多线对正方式CMLSCALE 控制多线的全局宽度CMLSTYLE 设置多线样式COMPASS 控制当前视口中三维坐标球的开关状态COORDS 控制状态栏上的坐标更新方式CPLOTSTYLE 控制新对象的当前打印样式CPROFILE 存储当前配置文件的名称CTAB 返回图形中的当前选项卡(模型或布局)名称。

cad_lisp基础教程

cad_lisp基础教程
e.g. (SETQ OCCUPATION NIL) 要显示变量所储存的数据,可以使用内建函数 PRINC(可用于绘图模式的指令行或 AutoLISP 程序),其语法如下 :
(PRINC 变量名称 ) e.g. COMMAND : (PRINC NAME) Result : David"David" 在绘图模式中,亦可于指令行中使用感叹号 ! 来显示变量内容,或作为指令选项的输 入值;语法如下 : !变量名称 e.g. COMMAND : !NAME Result : "David" 在 Visual LISP 的主控台窗口中,于提示符号 _$ 后键入要显示的变量名称 _$变量名称 e.g. _$NAME
字符串 (STR) 一般文字,其前后必须加上双引号 " e.g. "AutoCAD" 控制字符或脱逸码必须为小写,且须在字符前加上反斜线 \ e.g.
"\AutoCAD"
像素名称 (ENAME) 是指定给图文件内对象的指针(Pointer,为 16 进位的数字卷标)
e.g. <Entity name:14e5180> 像素名称在图文件内是唯一的,不会重复 对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象
2
符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外: 左括号 ( 右括号 ) 句点 . 单引号 ' 双引号 " 分号 ;
表 (LIST) 亦称为串行,是放在一对小括号 ( ) 内,一个或多个元素的有序集合
e.g. (1.0 "Lisp" ( ) (5.6 7)) 元素可以是字符串,符号,整数或实数;也可以是另一个表 元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格 为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为 0,

LISP语言在CAD工程制图中的应用

LISP语言在CAD工程制图中的应用


2、 函数说 明 ()tr 1s v 函数用于给 A tC D系统变量赋值。系统变量名必须置 ea uo A
于双 引号 中 。
st r函数 格 式 为 :sta r be n m a e ev a (e r ai l- a e l ) v v a vu
二 、 程 制 图 LS 工 IP实 用 程 序
其 中 vr ln m …………Auo A ai e a e b a t D系统变量 C v u … …………………赋予系统变量 的值 ae l ( )m eh 系统变量 : 制 Auo IP的 cmmad函数运行时 A — 2 c dc o 控 t S L o n u tC o AD是否 回显提示 和输入。 ()t 3 s q函数用 于给变量赋值 , e 其格式如下 : (e a evle N me a e … ) st m au[ a l ] qn vu 其中N e m a …………………变量名 v u … … … … … … …赋 予 变 量 的值 l ae ( )eds 函数 暂停程 序的运行 , 4 gti t 等候用户输 人距 离 , 随后 以实数 形式返 回该距 离。gti 函数格 式为 : e s dt (e i[ o t r pj g d t i 儿Po t) tsP n m 其中 Pit on…………………距离 的第一点坐标 Po p………………须在屏幕上显示的提示信息 r t m ( )r 函数用于与 i 5po n g f 函数搭配 , 以求解 多个表达式 。其格式为 : (rg 表 达 式 ) po n 当 测 试 条 件 返 回“ ” , 函数 只 能求 解 一个 表 达式 。 po 函数 真 时 证 rg n 可用于与 i函数搭配以求解 多个表达式 。 f 3 程 序使用方法 、 假设 有一片果 园 , 充符号过密 , 填 通过使用本程 序实现 以 3 O米间 距 填充 。 () 1 打开基于 C D基础开发 的 C S A A S软 件 , 绘制一片果 园, 1所 图

CAD系统变量与LISP函数摘要

CAD系统变量与LISP函数摘要
本系统变量显示当前的主拼写词典的文件名。该文件被放置在support目录下,因此不显示完整路径。
可以使用SETVAR指定缺省的主拼写词典。当出现提示之后,可以输入关键字为DCTMAIN指定新值。
DELOBJ
类型:整型
保存方式:图形
初始值:1
本系统变量控制是从图形数据库中将用于创建其他对象的对象删除还是将其保留。
CVPORT
类型:整型
保存方式:图形
初始值:2
本系统变量设置当前视口的标识号。如果要改变此值从而改变当前的视口,则需满足以下条件:
·指定的标识号表示一个活动的视口。
·执行中的命令没有锁定光标阻止它移向该视口。
·数字化仪模式为关闭。
D
DATE
(只读)
类型:实型
保存方式:无
本系统变量存储当前日期和时间,此值用一种专用格式表示:
BLIPMODE
类型:整型
保存方式:图形
初始值:0
本系统变量控制点标记是否可见。
0关闭点标记模式
1打开点标记模式
C
CDATE
(只读)
类型:实型
保存方式:无
本系统变量设置日历的日期和时间。
CECOLOR
类型:字符串
保存方式:图形
初始值:"BYLAYER"
本系统变量设置新对象的颜色。
CELTSCALE
类型:实型
保存方式:无
本系统变量存储由ACAD环境变量指定的目录路径(如果有的话),如果需要则添加路径分隔符。
ACADVER
(只读)
类型:字符串
保存方式:无
本系统变量存储AutoCAD版本号,其值可能为14或14a。这个变量与DXF文件标题变量$ACADVER不同,$ACADVER包含图形数据库的级别号。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型:实型
保存方式:无
初始值:0.0000
本系统变量设置缺省的圆半径。0表示无缺省半径。
CLAYER
类型:字符串
保存方式:图形
初始值:"0"
本系统变量设置当前图层。
CMDACTIVE
(只读)
类型:整型
保存方式:无
本系统变量存储一个位码值,此位码值标识激活的是普通命令、透明命令、脚本还是对话框。本变量包含以下位码:
1激活普通命令
2激活普通命令和透明命令
4激活脚本
8激活对话框
16激活AutoLISP(仅ARX定义的命令)
CMDDIA
类型:整型
保存方式:注册表
初始值:1
本系统变量控制是否为PLOT和外部数据库命令打开对话框。
0关闭对话框
1打开对话框
CMDECHO
类型:整型
保存方式:无
初始值:1
本系统变量控制在AutoLISP函数(command)运行时,AutoCAD是否回显提示和输入。
AUDITCTL
类型:整型
保存方式:注册表
初始值:0
本系统变量控制AUDIT是否创建ADT文件(核查报告)。
0禁止生成ADT文件
1生成ADT文件
AUNITS
类型:整型
保存方式:图形
初始值:0
本系统变量设置角度的单位。
0十进制度
1度/分/秒
2百分度
3弧度
3勘测单位
AUPREC
类型:整型
保存方式:图形
初始值:0
保存方式:图形
本系统变量以绘图单位存储当前视口中后剪裁平面到目标平面的偏移值。仅当VIEWMODE中的后剪裁位打开时,本系统变量的值才有效。后剪裁平面到相机点之间的距离可以通过相机到目标的距离减去BACKZ得到。
BLIPMODE
类型:整型
保存方式:图形
初始值:0
本系统变量控制点标记是否可见。
0关闭点标记模式
1不可见
2常数
4验证
8预置
ANGBASE
类型:实型
保存方式:图形
初始值:0.0000
本系统变量设置相对于当前用户坐标系的基准角为0的指向。
ANGDIR
类型:整型
保存方式:图形
初始值:0
本系统变量设置相对于当前用户坐标系从0度角以何种方向旋转特定角度。
0逆时针。
1顺时针。
ห้องสมุดไป่ตู้APBOX
类型:整型
保存方式:注册表
0关闭回显
1打开回显
CMDNAMES
(只读)
类型:字符串
保存方式:无
本系统变量显示当前被激活的命令和透明命令的名称。例如,LINE'ZOOM表示ZOOM命令在LINE命令执行期间被透明执行。
此命令被设计用于编程接口,例如AutoLISP、DIESEL和ActiveX Automation。
下面的简单样例示范了如何使用DIESEL在状态行中显示当前命令。
(只读)
类型:实型
保存方式:无
本系统变量存储由AREA、LIST或DBLIST计算的最后一个面积值。
ATTDIA
类型:整型
保存方式:图形
初始值:0
本系统变量控制INSERT是否使用对话框获取属性值。
0在命令行中显示提示。
1使用对话框。
ATTMODE
类型:整型
保存方式:图形
初始值:1
本系统变量控制属性的显示方式。
0关,不显示所有属性。
1普通,保持每个属性当前的可见性:可见的属性继续显示,不可见的属性不显示。
2打开,显示所有属性。
ATTREQ
类型:整型
保存方式:图形
初始值:1
本系统变量判定INSERT在插入块时是否使用缺省属性设置。
0所有属性都采用各自的缺省值。
1如同ATTDIA所指定的设置,在提示或对话框中获取属性值。
命令:modemacro
本系统变量设置在命令行中显示时或列示对象时,角度单位中小数的位数。
AUTOSNAP
类型:整型
保存方式:注册表
初始值:7
本系统变量控制AutoSnap标记和捕捉提示的显示和AutoSnap磁吸的打开与关闭。包含以下位值:
0关闭标记、捕捉提示和磁吸
1打开标记
2打开捕捉提示
4打开磁吸
B
BACKZ
(只读)
类型:实型
CELTYPE
类型:字符串
保存方式:图形
初始值:"BYLAYER"
本系统变量设置新对象的线型。
CHAMFERA
类型:实型
保存方式:图形
初始值:10.0000
本系统变量设置第一个倒角距离。
CHAMFERB
类型:实型
保存方式:图形
初始值:10.0000
本系统变量设置第二个倒角距离。
CHAMFERC
类型:实型
保存方式:图形
初始值:20.0000
本系统变量设置倒角长度。
CHAMFERD
类型:实型
保存方式:图形
初始值:0
本系统变量设置倒角角度。
CHAMMODE
类型:整型
保存方式:无
初始值:0
本系统变量设置用于AutoCAD创建倒角的输入模式。
0需要倒角的两个距离。
1需要一个倒角距离,一个角度。
CIRCLERAD
ACISOUTVER
类型:整型
保存方式:图形
初始值:16
本系统变量控制使用ACISOUT命令创建的SAT文件的ACIS版本。当前ACISOUT支持的值只有15到18、20、21和30。
AFLAGS
类型:整型
保存方式:无
初始值:0
本系统变量设置ATTDEF位码的属性标记。包括以下标记:
0选定无属性模式
初始值:0
本系统变量打开或关闭AutoSnap靶框。当捕捉一个对象时,靶框显示在十字光标的中心。只有在选中标记、磁吸或捕捉提示时,在能使用此选项。
0不显示靶框。
1显示靶框。
APERTURE
类型:整型
保存方式:注册表
初始值:10
本系统变量以像素为单位设置APERTURE命令目标捕捉靶框的高度。
AREA
CAD系统变量与LISP函数摘要
二○○○年二月
AutoCAD
A
ACADPREFIX
(只读)
类型:字符串
保存方式:无
本系统变量存储由ACAD环境变量指定的目录路径(如果有的话),如果需要则添加路径分隔符。
ACADVER
(只读)
类型:字符串
保存方式:无
本系统变量存储AutoCAD版本号,其值可能为14或14a。这个变量与DXF文件标题变量$ACADVER不同,$ACADVER包含图形数据库的级别号。
1打开点标记模式
C
CDATE
(只读)
类型:实型
保存方式:无
本系统变量设置日历的日期和时间。
CECOLOR
类型:字符串
保存方式:图形
初始值:"BYLAYER"
本系统变量设置新对象的颜色。
CELTSCALE
类型:实型
保存方式:图形
初始值:1.0000
本系统变量设置当前对象的线型比例因子,设置新对象的相对于LTSCALE设置的线型比例。在LTSCALE=0.5的图形中以CELTSCALE=2设置绘制的直线与在LTSCALE=1的图形中以CELTSCALE=1设置绘制的直线相同。
相关文档
最新文档