autocad-lisp教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Lisp教程一.Lisp基础知识二.对话框基础一.基本知识第1节--------------------------------------------------------------------------------基本知识AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50年代末期出现,是一种擅于处理串行文字(ListofProcessing),属第四代「人工智能(ArtificialIntelligence)」的计算机语言.目的是令使用者充份利用AutoCAD进行开发,直接增加及修改AutoCAD指令.AutoLisp语言建基于普通的LISP语言上,并扩充了许多适用于CAD的特殊功能而形成.是一种能以直译方式(不须先行编译)亦可于AutoCAD内部执行的直译性程序语言.程序容易学习及撰写,程序即使出错亦不会对操作系统(如DOS,WINDOWS)有不良影响.数据及程序均统一以串行(List)结构表示.可直接调用几乎全部的AutoCAD命令.既具备一般高级语言的基本结构和功能,亦有一般高级语言没有的强大图形处理能力.内建于AutoCAD应用程序,不须另行购买;亦不须使用特定的编辑器或开发环境.可配合AutoCAD提供的PDB,建立DCL(DialogControlLanguage)文件创建对话框.缺点:执行速度较ObjectArx(旧称ARX,以C或C++程序开发,取代以前的ADS)程序慢;原程序不易保护;对低阶的硬件数据不易存取.第2节--------------------------------------------------------------------------------函数(Function)在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下:(函数名称参数1参数2....)e.g.(PRINCAutoLISPProgramming)每一个完整的函数必须包在一对小括号()内,左边为开括号,右边为关括号;如有若干数量的开括号,则一定有同等数量的关括号对应.左边开括号后紧随函数名称.函数名称与参数之间,或参数与参数之间须最少留一个空格.函数可有一个或多个参数(也可能没有参数),视该函数而定.函数名称不分大小写,即大小写字母视为相同.第3节--------------------------------------------------------------------------------数据型态(DataType)整数(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.Entityname:14e5180像素名称在图文件内是唯一的,不会重复对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象档案(FILE)以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量选集(PICKSET)用SSGET等函数建立的一个或多个对象的集合或群组转化(VARIANT)可将像素名称转换为可与ActiveX配搭使用的VLA-Object对象符号(SYM)用以储存静态数据的名称;例如内建或使用者定义的函数符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外:左括号(右括号)句点.单引号'双引号分号;表(LIST)亦称为串行,是放在一对小括号()内,一个或多个元素的有序集合e.g.(1.0Lisp()(5.67))元素可以是字符串,符号,整数或实数;也可以是另一个表元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为0,依此类推表的大小即为其顶层元素的数量(内层嵌套式的表,视为单一元素)点对(DottedPair)亦是表的一种;表内有2个元素,中间以一圆点分隔,且元素与圆点之间亦须以空格分开若表内没有任何元素,称为空串行或空表;以()或(NIL)表示第4节--------------------------------------------------------------------------------变数(Variable)为程序执行中动态储存数据的符号名称;主要分为2类:区域(Local)变量又称为局部变量;该变量只在该程序段落中有效,不能为其它程序使用全域(Global)变量又称为整体变量;变量在所有程序段落中均可使用变量名称与符号的限制相同,使用时宜采用有意义及易于辨别的名称变量在赋值或使用前无须先行设定相同的变量可以储存不同型态的数据(但同一时间内只可储存一种型态)在指定新的数据之前,变量储存的内容会保持不变赋值将数据给予指定的变量储存以内建函数SETQ进行(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(SETQ变量名称1资料1[变量名称2资料2....])e.g.(SETQNAMEDavidAGE37WEIGHT72.5POINT(LIST1020))在函数名称之后,各参数以两个一组,每组左边为变量名称,右边为存入变量的数据亦可将变量名称赋以空值(NIL):e.g.(SETQOCCUPATIONNIL)要显示变量所储存的数据,可以使用内建函数PRINC(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(PRINC变量名称)e.g.COMMAND:(PRINCNAME)Result:DavidDavid在绘图模式中,亦可于指令行中使用感叹号!来显示变量内容,或作为指令选项的输入值;语法如下:!变量名称e.g.COMMAND:!NAMEResult:David在VisualLISP的主控台窗口中,于提示符号_$后键入要显示的变量名称_$变量名称e.g._$NAME要检查变量所储存的数据型态,可使用内建函数TYPE;语法如下:(TYPE变量名称)e.g.COMMAND:(TYPENAME)Result:STR若检查的变量没有储存数据,则会传回NIL第5节--------------------------------------------------------------------------------练习(Exercises)将四个坐标分别存入四个变量中,并以LINE或PLINE指令,配合四个坐标变量,画出正四边形.COMMAND:(SETQPOINT1(LIST00)POINT2(LIST010)POINT3(LIST1010)POINT4(LIST100))COMMAND:LINE;直线段指令COMMAND:!POINT1;第一点(左下角起点)COMMAND:!POINT2;第二点(左上角)COMMAND:!POINT3;第三点(右上角)COMMAND:!POINT4;第四点(右下角)COMMAND:C;自动联机至起点以关闭四边形画圆:将圆心坐标及半径长度分别存入两个变量中(变量名称及数据型态自订)COMMAND:(SETQCEN(LIST00)RAD20);将圆心点设为坐标0,0;半径为20COMMAND:CIRCLE;执行划圆指令Specifycenter....:!CEN;在提示后以变量CEN响应输入Specifyradius....:!RAD;在提示后以变量RAD响应输入将不同型态的数据,分多次存入相同的变数内;每次均以PRINC及TYPE函数显示变量内容及其数据型态COMMAND:(SETQTEMP1.2);将实数1.2存入变数TEMPCOMMAND:!TEMPResult:1.2COMMAND:(TYPETEMP)Result:REALCOMMAND:(SETQTEMPAutoLISP);将字符串存入变量TEMPCOMMAND:!TEMPResult:AutoLISPCOMMAND:(TYPETEMP)Result:STR二数值资料第1节--------------------------------------------------------------------------------基本运算加函数(+[数值参数1数值参数2....])e.g.(+2.546)Result:12.5函数的结果为各参数之总和若仅提供一个参数,则以0加上此参数的结果为返回值若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数减函数(-[数值参数1数值参数2....])e.g.(-1023)Result:5结果为第一个(最左边)参数减去其右边各参数的总和若只提供一个参数,返回值为0减去该参数的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数乘函数(*[数值参数1数值参数2....])e.g.(*234)Result:24结果为所有参数的乘积若只提供一个参数,则返回值为该参数乘以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数除函数(/[数值参数1数值参数2....])e.g.(/2423)Result:4结果为第一个(最左边)参数除以其右边各参数的乘积若仅提供一个参数,则返回值为该参数除以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数注意:在本篇教程中,各函数的数值参数,均可以变量(储存值只可以是整数或实数,且不可以是空值nil)取代第2节--------------------------------------------------------------------------------练习(Exercises)计算式(2+4)*3COMMAND:(*3(+24))Result:18计算式(50-8*5)/4COMMAND:(/(-50(*85))4)Result:2注意:上式的正确答案应是2.5,因为函数中的各参数均为整数,所以传回的结果亦为整数递增及递减递增(1+数值参数)e.g.(1+2)Result:3递减(1-数值参数)e.g.(1-4)Result:3三角函数(TrinagularFunction)正弦值(SIN弧度参数)e.g.(SIN1)Result:0.841471余弦值(COS弧度参数)e.g.(COS1)Result:0.540302反正切值(ATAN弧度参数)e.g.(ATAN1)Result:0.785398第3节--------------------------------------------------------------------------------其它数值处理次方值(EXPT数值参数次方值)e.g.(EXPT24)Result:16若参数及次方值两个均为整数,返回值亦是整数;若其中一个为实数,结果为实数开方根(SQRT数值参数)e.g.(SQRT30)Result:5.47723绝对值(ABS数值参数)e.g.(ABS-123)Result:123余数(REM[数值参数1数值参数2....])e.g.(REM50265)=(REM(REM5026)5)Resu

1 / 80
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功