您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > AutoLisp编程入门
1基本指南:两数求和在命令行输入:(+23)(-23)(*23)(/23)如果直接输入(/23)则会显示0因为2和3是整型所以AutoLisp把这些数字译为整型(AutoLisp进行了四舍五入)所以输入(setqx(/2.03))就可得到0.666667六位小数在命令行输入:!p则会显示p这个变量的值SETQ和变量Setq是来保存计算的结果的,相当于给一个变量赋值例:(setqx(/2.03))这边x是变量就是把2.0/3的值赋给xSetq能完成多项“设置相等”例如:(setqx1.0y2.0z3.0)就是分别赋给xyz赋值AutoLISP函数1.数学函数(min73511)就是取73511这四个数的最小值(setqminbr(min73511))(sinminbr)数学函数功能+加-减*乘/除1+自增11-自减1FLX截取实数的整数部分FLOAT整数变为实数REM返回除法的余数EXPT指数SIN求弧度角的正弦COS求弧度角的余弦ATAN求两个数字的反正切注意:AutoLISP的角是弧度值而不是角度值。例如:45度的角的正弦值(setqrad(*(/45180.0)pi))2.几何函数(setqp1'(1.35.7))‘表示指定2个(3个)的坐标值,这样AutoLISP就不会计算这些值了(setqp2'(7.53.1))(setqp3'(94))(setqp4'(0.12.5))2(distancep1p2)(anglep1p2)(intersp1p2p3p4)(osnapp1mid)TEXTBOX(查找一行文字的矩形外框)POLAR(指定距离和角度返回一个3D点)几何函数功能AngleX轴和由2个点定义的直线间的(弧度)夹角Distance2点之间的3D距离Polar在某一个(弧度)角度上的3D点Osnap对某一个点应用对象捕捉模式后的3D点Inters4个点定义的3D交叉点2.条件函数例:在一个绘制楼梯间的AutoLISP例程中,一部分程序检查层高是否大于8英寸:如果大于,就绘制出14级台阶,如果小于就绘制13级台阶。(if(height96)(setqsteps14)(setqsteps13))条件函数注释=等于/=不等于小于=小于或等于大于=大于或等于If如果——那么——否则Cond查找真的表达式Repeat重复n次表达式While重复验证表达式直到假命题出现ForEach计算表达式中所有数值的表达式值3.字符串和转换函数(strlen“UsingAutoCAD”)STRLEN函数将报告UsingAutoCAD为13个字符,计算空格。可以看到UsingAutoCAD被引号括起来表明它是字符串。如果输入(strlenUsingAutoCAD),AutoLISP会试图查询变量Using和AutoCAD所包含字符串的长度。(strlenautocad“Asoftwarepackage”)(strlenusing“theplanetEarth”)(strlenusingautocad)返回34STRCAT函数通过混合变量和文字将字符串连接在一起并创建返回信息。(strcatautocad“usedallover”using)返回“AsoftwarepackageusedallovertheplanetEarth”字符串函数功能StrCase把所有的文字转换成大写或小写StrCat连接所有的字符串StrLen返回字符串中的字符数SubStr返回字符串的一部分3WcMatch在字符串中匹配通配符如何把45度37分11秒即AutoCAD表示的45d37’11’’呢?这就要用到一个名称为ANGTOF的转换函数。它把包含格式化的角度的字符串转换为弧度(实数),如下例:(angtof“45d37’11\’’”1)返回0.796214d表示度‘表示分\’’表示秒之所以这样用是为了不至于与后引号(”)混淆,后引号表示字符串的结束。ANGTOF函数能完成几种AutoCAD支持的单位之间的转换,而用状态值来表示转换的类型,本例中的1是状态值。几个用到模式值的AutoLISP函数如表:模式说明示例0十进制度45.37111度-分-秒45d37’11’’2分度100.12343弧度0.39644测绘单位N45d37’11’’E模式数值与AUNITS系统变量的数值一致。当您不知道单位的设置时,可以用该系统变量求得模式的数值。(angtof“45d37’11\’’”(getvar“aunits”))返回0.796214GETVAR函数可获取系统变量的数值。转换函数功能字符串转换AtoF字符串转换为实数AtoI字符串转换为整数RtoS数字转换为字符串ItoA整数转换为字符串Ascii把首字符转换为ASCIIChr把ASCII码转换为字符数值转换CvUnit基于acad.nut数值的单位转换4.命令和系统变量任何在命令提示行中完成的操作都可以很轻松地用COMMAND函数来完成。例如:(command“circle”“2,2”“D”“1.5”)该命令行的意思是创建以一个圆心坐标为(2,2)直径为1.5的圆其实这表示的意思都是我们平常画圆操作的顺序。我们可以看到所有的文字都用引号括起来,所有的内容都被认为是字符串,即使是数字也是如此。(command“text”“5,10”“1.5”“”“UsingAutoCAD”)其中那个红色引号的意思是旋转文字属性按enter键结束就是不旋转文字的意思。另一方面通常代表ENTER来退出TEXT命令会以闭括号结束。然而,对于那些自动回复的命令如LINE命令,“”是需要的。(command“line“1,2”“3,4”“”)当您最后忘记””时候,AutoCAD会留下下一点的信息不会结束命令。要高效地应用CAMMAND函数,你必须知道AutoCAD的300条命提示顺序。可以看下“参考书”注意的是“任何在COMMAND函数提示下输入信息可用于CAOMMAND。”注意“输入”这个词。该函数不能对对话框和工具栏宏起作用。用对话框的命令不能用在COMMAND中。4获取系统变量AutoLSIP提供了2个更直接的函数:GETVAR(获取一个系统变量的值)和SETVAR(设置或者修改这个值)系统变量SPLFRAME用于确定样条多段线控制框是否显示。默认值是0意思是不显示。(getvar“splframe”)返回值为0(setvar“splframe”1)就是设置splframe显示控制框Get函数GETSTRING函数提示用户输入文字,并把它保存在txtstr在命令行输入:(setqtxstr(getstringT“Whatdoyouwanttowrite?”))在命令行出现:Whatdoyouwanttowrite?然后输入UsingAutoCAD返回UsingAutoCAD注意这里附加的AutoLISP标识符T,它是一个AutoLISP操作,可允许GETSTRING中的字符串的包含空格。如果省去T,GETSTRING只会接纳首空格之前的文字,在COMMAND:提示下也是同样的情况(结尾只有Using而没有AutoCAD)GETREAL函数提示用户输入一个高度值。例如:(setqtxtHt(getreal“Howbigdoyouwanttheletter?”)在命令行出现:Howbigdoyouwanttheletter?输入2在命令行返回2.0GETREAL函数会自动把2(整数)转化为实数2.0,你也可以不用输入数值,直接在工作窗口单击2点让AutoLISP自动读取2个点的距离。如果你误输入了文字,AutoCAD会重新叫你输入。(setqTxtAng(getangle“Tiltthetextbyhowmuch?”)GETANGLE函数提示用户输入一个角度,并把它转换成弧度值。与上面函数一样可以在工作窗口单机2点。(setqTxtIns(getpoint“Wheredoyouwantthetexttostart?”))在命令行出现:Wheredoyouwantthetexttostart?这时你就选取一个点假如我选取的是(27,30,20)GETPOINT函数提示用户输入文字的起点坐标:可以输入一个值,一个二维坐标或者三维的,或者在制作窗口单击一点。若只输入一个值则认为是0,0点到当前点的极轴距离。若输入文字则会返回错误信息。通过以上的变量参数可以执行TEXT命令:(command“text”TxtInsTxtHtTxtStr)会出现UsingAutoCADAutoLISP所有GET函数如下表:GET函数功能字符串、数值、角度GetAngle用户选取的(弧度)角GetOrient独立于ANGBASE和ANGDIR的角(弧度)GetString用户输入的文字GetInt用户输入的整型值GetReal用户输入的实型值InitGet限制用户输入数据GetKWord基于INITGET限制获取输入数据选取的点5GetPoint用户输入或单击点的x,y,z坐标GetCorner矩形的第二个角点GetDist两点之间的距离5.选择集函数AutoCAD的SELECT命令一次只可对一个选择集进行操作,但是AutoLISP的SSxxx命令却可对最多128个选择集操作。AutoLISP创建和检验选择集函数如下表:SS函数功能SsGet选择图形中的对象SsAdd将对象添加到选择集SsDel从选择集中删除对象SsLength报告选择集中对象的数目SsMemb检查一个对象是否在选择集中SsName报告选择集中第n个对象的名称对象操作函数大部分对象操作函数以ent开头,是entity的简写,是AutoCAD对象的原名。要创建并操作对象,ENT函数要作用于DXF格式的变体。该变体被称为“点对”。比如,作用于一个名为RightOfWay的层,就要用以下的格式、“2.RightOfWay”引号表明数据的开始与结束。中间的点(.)用于分隔两个值:2是层名的DXF代码:而RightOfWay是层名。要应用对象操作函数就需要对DXF格式有较好的理解。AutoLISP的对象操作函数如表:Ent函数功能EntMake新建对象EntGet获取描述对象数据TblObjName从符号表中获取对象名HandEnt返回对象的识别码(id)EntNext获取数据库中的下一个对象EntLast获取新建对象EntSel提示用户选择一个对象NEntSel提示用户选择一个对象并返回选取点的坐标EntMod修改对象EntUpd对象修改后刷新屏幕EntDel删除对象高级AutoLISP函数AutoDesk公司提供了差不多4打函数来控制AutoCAD图形中的对象与外部数据库中的记录之间的ASE(AutoCAD结构化查询语言扩展名)连接。这些函数不难定位:他们都以Ase_开头,如ASE_LSUNITE和ASE_DOCMP还有2打AutoLISP函数用来载入和控制对话框。如LOAD_DIALOGUE和NEW_DIALOGUE.有一组5个函数用来进行内存管理。但它们用途很小,所以Autodesk公司建议不必使用。6.编写AutoLISP函数指南:步骤1——选取点6在COMMAND函数中用ID命令,如(command“id”);在GETVAR函数中用LASTPOINT系统变量,如(getvar“lastpoint”);在GETPOINT函数,如(getpoint”Pickapoint”)1.在command:提示下输入:(commandid)选取一个点假如x=2.3y=3.0z=5.0然后输入(setqxyz(getvar“lastpoint”))则会出现(2.33.05.0)“LASTPOINT”是被引号括起来的系统变量名,因为他是字符串。2.(setqxyz(getpoint“Point:”))getpoint将显示提示文字point:,并等待用户选取一个点。假设x=2.3y=3.0z=5.0指南:步骤2——放置文字要把文字放在图形中有一个简单的办法:用COMMAND函数与text命令结合
本文标题:AutoLisp编程入门
链接地址:https://www.777doc.com/doc-3517838 .html