养成良好的AutoLISP书写习惯

合集下载

autolisp培训教程48页word

autolisp培训教程48页word

AutoLISP培训教程单元一:AutoLISP主角潇洒登场一. AutoLISP 是何方神圣?1、AutoLISP是AutoCAD的最佳拍檔!2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张!5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷!二. AutoLISP 程序语言的特质分析:学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序!语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已!撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感!横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行!三.撰写AutoLISP 的动机?1、欲强化AutoCAD 原有指令时.2、欲创造更有用的AutoCAD 新指令.3、欲简化繁琐的环境设定或绘图步骤时.4、欲处理参数式绘图时.5、欲做图面资料读文件、写文件.6、欲做AutoCAD 演示文稿展示时.7、欲达到真正灵活掌控AutoCAD 时.8、欲提升自己跨上AutoCAD 高手列车时.四.AutoLISP 的效益评估?1. 对公司负责人或设计主管而言:A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』!B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?!C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。

AutoLISP入门2 - AutoLISP 的关键、基本结构及语法

AutoLISP入门2 - AutoLISP 的关键、基本结构及语法
3: 运算元再往前提: kk = (- (+ 10.25 17) (/ 13.2 7))
4: 转换完成: (setq kk (- (+ 10.25 17) (/ 13.2 7)))
解法技巧 B :
1:运用『二分法、加括号』: (10.25 + (17 - (13.2 / 7)))
2:运算元往前提: kk = (+ 10.25 (17 - (13.2 / 7)))
自定函式:由设计者自行定义的新函式或副程式
1.2 运算子 ( 又称引数或元素 ) 包括 :
A.整数(Integer):如8,-17,500,9999 …
正常范围: 2的16次方,介于-32768 与+32767之间
特殊范围:若以float函数将其转为实 数,则范围2的32次方,介 于-2147483648与+2147483647之间
B.实数(Real):如8.5,-17.456 …
正常范围:带有小数点的数,精度可达 14位有效数字
C.字串(String):如"AutoCAD","123","Enter Real:","7.5", …
正常范围:以双引号内夹『字元』为认 定,字元数不受限制
D.串列(List):如("a" "b" "c"),(xy),(xyz), ("a" 8 3.5),....
(setq ffw (open "abc.txt" "w"))回 应<file:#34812>
G.选择群集代码:如<Selection set:1> 、 <Selection set:1> …

AutoLisp语言的学习和使用(1)

AutoLisp语言的学习和使用(1)

AutoLisp语⾔的学习和使⽤(1)第七节AutoLISP语⾔及其程序设计LISP(List Processing)是⼀种计算机的表处理语⾔。

LISP语⾔是⼈⼯智能领域中⼴泛应⽤的⼀种程序语⾔。

AutoLISP语⾔是⼀种运⾏在AutoCAD环境下的LISP编程语⾔,或称为AutoCAD的⼀种嵌⼊式语⾔。

它采⽤了与CommandLISP(⼀种通⽤的LISP语⾔版本)相近的语法及习惯约定,并吸收了LISP语⾔的主要函数,同时增加了针对AutoCAD特点的许多功能,如:可以把AutoLISP和AutoCAD的绘图命令透明地结合起来,使设计和绘图完全融为⼀体。

利⽤AutoLISP语⾔编程可以实现对AutoCAD当前图形数据库进⾏直接访问和修改。

在LISP语⾔中,最基本的数据类型是符号表达式。

LISP语⾔的特点是程序和数据都采⽤符号表达式的形式,即⼀个LISP程序可以把另⼀个LISP程序作为它的数据进⾏处理。

因此使⽤LISP语⾔编程⼗分灵活,看起来是⼀个⼀个的函数调⽤。

⽀持递归定义也是Auto LISP语⾔的重要特性。

AutoLISP语⾔是提供给⽤户的主要⼆次开发⼯具之⼀。

⽤AutoLISP语⾔编写应⽤程序,可以为AutoCAD增加新的命令或修改AutoCAD,以适应⽤户的特殊需要。

AutoCAD软件的开发者——AutoDesk公司许诺,将保证今后AutoCAD软件对AutoLISP 语⾔的⽀持。

掌握使⽤和编制AutoLISP应⽤程序的⽅法和技术将⼤⼤提⾼⽤户的⼯作效率和⼆次开发⽔平,增强AutoCAD的灵活性,并将得到长期、稳定的技术⽀持。

1.1 AutoLISP语⾔的基本知识1.1.1 AutoLISP语⾔的特性AutoLISP语⾔是⼀种解释型语⾔,它的特点如下:1.解释型语⾔编程语⾔有两种基本类型:解释型和编译型。

AutoLISP属于解释型语⾔。

在解释型语⾔中,⽤户编写的源程序直接由解释器解释并执⾏。

AUTOLISP程序设计技巧

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.优化:编写高效的代码可以提高程序的性能。

使用较少的迭代步骤、减少不必要的计算、选择合适的数据结构等都可以提高程序的效率。

AUTOLISP培训教程_4

AUTOLISP培训教程_4

AUTOLISP培训教程_4在工程设计和绘图领域,AUTOLISP 作为一种强大的编程语言,为我们提供了许多高效和便捷的工具。

接下来,让我们一起深入了解更多关于 AUTolisp 的知识和应用技巧。

首先,我们来谈谈 autolisp 中的数据类型。

AUTOLISP 支持多种数据类型,比如整数、实数、字符串、列表等等。

整数就是我们常见的没有小数部分的数字,实数则包含小数部分。

字符串就是被引号括起来的一系列字符。

而列表则是用括号括起来的一组数据,可以包含不同的数据类型。

理解这些数据类型是编写有效 autolisp 程序的基础。

函数是 autolisp 编程中的重要组成部分。

例如,(setq x 10) 这个语句,其中“setq”就是一个函数,用于给变量 x 赋值为 10 。

再比如,(+ 5 3) 会返回 8 ,这里的“+”就是一个用于加法运算的函数。

在实际编程中,我们经常需要进行条件判断。

比如,(if (> x 5) (princ "x 大于 5")(princ "x 不大于 5"))这个语句,如果变量 x 的值大于 5 ,就会输出“x 大于5”,否则输出“x 不大于5”。

通过合理使用条件判断,我们可以让程序根据不同的情况执行不同的操作。

循环结构在 autolisp 中也非常有用。

像(while (< x 10) (princ x) (setq x (+ x 1))),只要 x 小于 10 ,就会执行循环体中的操作,不断输出 x 的值,并将 x 的值增加 1 。

循环结构能够帮助我们处理需要重复执行的任务,提高编程效率。

接下来,我们说一说 autolisp 与 AutoCAD 的交互。

通过 autolisp ,我们可以获取 AutoCAD 中的图形对象信息,例如点、线、圆等的坐标、长度、半径等属性。

还可以使用 autolisp 来创建、修改和删除这些图形对象。

例如,要创建一个圆,可以使用(command "circle" "0,0" 5) 这个语句。

AutoLisp入门教程

AutoLisp入门教程

單元一:AutoLISP主角瀟灑登場一. AutoLISP 是何方神聖?1.AutoLISP是AutoCAD的最佳拍檔!2.AutoLISP內含於AutoCAD軟體內,不用另外花錢買!3.AutoLISP是強化AutoCAD最好、最直接的『程式語言』!4.AutoLISP易學、易用,即使不會程式設計的AutoCAD使用者,都能在最短的時間內,寫出令人驚訝、讚嘆的功能!5.若說AutoLISP的出現,是替AutoCAD 創造一片天的『最大功臣』,實不為過一點也不誇張!6.AutoLISP希望您去學習它、改善它、發揮它、享受它.真的!它的威力、魅力無窮!二. AutoLISP 程式語言的特質分析:學習AutoLISP是非常容易的,對初學者而言,即使沒有學習過任何的程式語言,都能很快的上手,寫出精彩漂亮的AutoLISP程式!三.撰寫AutoLISP 的動機?1.欲強化AutoCAD 原有指令時.2.欲創造更有用的AutoCAD 新指令.3.欲簡化繁瑣的環境設定或繪圖步驟時.4.欲處理參數式繪圖時.5.欲做圖面資料讀檔、寫檔.6.欲做AutoCAD 簡報展示時.7.欲達到真正靈活掌控AutoCAD 時.8.欲提昇自己跨上AutoCAD 高手列車時.四.AutoLISP 的效益評估?1. 對公司負責人或設計主管而言:A.也許某員工或幹部花了20個小時撰寫一個AutoLISP程式,表面上,這將近三天的時間,他連一張圖都沒有畫,甚至可能偶有發呆、沈思,若此程式一天可以替公司繪圖部門節省1小時繪圖時間,那算一算,只要20天就抵銷開發成本,而20天以後都是賺的,『用的愈久,省的愈多』!B.若員工皆有此動力,在不影響正常工作,『鼓勵』都來不及,那有『壓抑』的道理,甚至還要派遣優秀人員出去受訓,學習更好的設計技巧與創意呢?!C.千萬不要因為您的不懂或壓抑,SHOW您的權威與POWER,如此,不但對員工造成打擊,甚至您可能成為阻礙了公司電腦化進步的罪魁禍首D.當然,若要撰寫的程式很多,內部設計人員的程式功力距離太遠,達成需求的時間反而變得遙遙無期,那倒不如求助於市面上已有的相關AutoCAD 支援軟體。

python书写规范

python书写规范

python书写规范Python是一种简洁、优雅且易于学习的编程语言,但良好的书写规范对于代码的可读性和可维护性至关重要。

下面是一些关于Python书写规范的指导原则和最佳实践。

1. 使用有意义的命名:好的命名应该具有描述性,让其他人能够轻松理解变量或函数的用途。

避免使用单个字母或缩写作为变量名。

2. 选择适当的缩进:Python使用缩进来表示代码块,通常使用四个空格作为缩进。

避免使用制表符,因为它们在不同的编辑器中可能具有不同的宽度。

3. 空格的使用:在括号、逗号和操作符周围使用空格,以提高代码的可读性。

例如:- 函数定义时,函数名和括号之间加一个空格。

- 在逗号之后加一个空格,使得逗号与下一个元素对齐。

- 操作符前后加上空格。

4. 函数和类的文档注释:使用文档字符串(docstring)来解释函数和类的用途以及参数的含义。

文档字符串应该位于函数或类的定义之后,并以三个双引号包围。

5. 行的长度限制:一行代码的长度应该限制在80个字符以内。

如果一行不够容纳,可以使用括号或反斜杠换行符来进行换行。

6. 导入语句的顺序:导入语句应该按照从最通用到最特定的顺序排列,每个导入语句应该单独占一行。

例如:- 首先导入标准库模块。

- 然后导入第三方库模块。

- 最后导入本地模块。

7. 避免使用全局变量:全局变量会增加代码的复杂性,降低代码的可维护性。

尽量使用函数和类来封装状态。

8. 模块级别的代码:模块级别的代码应该放在文件的顶部,用于执行一些初始化操作。

这些代码应该放在一个if __name__ == "__main__"的条件中,以确保只有当模块作为主程序运行时才会执行。

9. 异常处理:在代码中适当地处理异常是一个好的编程习惯。

不要使用裸露的except语句来捕获所有异常,而应该根据具体的异常类型来做相应的处理。

10. 使用适当的空行:使用适当的空行来分隔代码块,提高代码的可读性。

例如: - 在函数和类之间使用两个空行。

养成良好的AutoLISP书写习惯

养成良好的AutoLISP书写习惯

养成良好的AutoLISP书写习惯众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。

⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等专用编辑器,此类编辑器可以对函数突出显示。

⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。

⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。

autolisp的入门教程+autolisp函数!Lisp是一门历史悠久的语言,全名叫LISt Processor,也就是“表处理语言”,它是由John McCarthy于1958年就开始设计的一门语言。

和Lisp同时期甚至更晚出现的许多语言如Algo 等如今大多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了Fortran和COBOL。

但唯独Lisp,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从Lisp分支出来的Scheme、ML等语言在很多场合的火爆程度甚至超过了许多老牌明星。

那么这颗常青树永葆青春的奥秘究竟在哪里呢?如果你只接触过C/C++、Pascal这些“过程式语言”的话,Lisp可能会让你觉得十分不同寻常,首先吸引你眼球(或者说让你觉得混乱的)一定是Lisp程序中异常多的括号,当然从现在的角度来讲,这种设计的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当务之急了。

Lisp的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如规则最简单的围棋却有着最为复杂的变化一样,Lisp使用最基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

养成良好的AutoLISP书写习惯众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。

⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等专用编辑器,此类编辑器可以对函数突出显示。

⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。

⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。

autolisp的入门教程+autolisp函数!Lisp是一门历史悠久的语言,全名叫LISt Processor,也就是“表处理语言”,它是由John McCarthy于1958年就开始设计的一门语言。

和Lisp同时期甚至更晚出现的许多语言如Algo 等如今大多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了Fortran和COBOL。

但唯独Lisp,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从Lisp分支出来的Scheme、ML等语言在很多场合的火爆程度甚至超过了许多老牌明星。

那么这颗常青树永葆青春的奥秘究竟在哪里呢?如果你只接触过C/C++、Pascal这些“过程式语言”的话,Lisp可能会让你觉得十分不同寻常,首先吸引你眼球(或者说让你觉得混乱的)一定是Lisp程序中异常多的括号,当然从现在的角度来讲,这种设计的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当务之急了。

Lisp的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如规则最简单的围棋却有着最为复杂的变化一样,Lisp使用最基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。

废话少说,现在我们就来看看Lisp语言中的基本元素。

Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如:abc()(abc xyz)(a b (c) d)最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。

正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。

如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

正如欧几里德的几何世界中有五个公理一样,我们在这里给出Lisp世界中的7个公理(基本操作符):(quote x)返回x,我们简记为'x(atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。

在Lisp中我们习惯用原子t表示真,而用空表()表示假。

> (atom 'a)t> (atom '(a b c))()> (atom '())t现在我们有了第一个需要求出自变量值的操作符,让我们来看看quote操作符的作用——通过引用(quote)一个表,我们避免它被求值。

一个未被引用的表达式作为自变量,atom将其视为代码,例如:> (atom (atom 'a))t反之一个被引用的表仅仅被视为表> (atom '(atom 'a))()引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用quote来区分它们。

(eq x y)当x和y的值相同或者同为空表时返回t,否则返回空表()> (eq 'a 'a)t> (eq 'a 'b)()> (eq '() '())t例如:我们有时想捕捉任意两点的中点,而不只是一条线上的中点,用系统自己的捕捉中点(它要有辅助线)就不行了,我们可以参考“捕捉虚中点.lsp”程序来实现。

除程序中的语句要学外,动画中的自动找到所有的全局变量并把它们改为局部变量的方法很有用!动画中先画了一个六边形,再画一个圆与它接,圆心就是捕捉虚中点!AutoLisp 概述AutoLisp的数据类型,它有10种数据类型,常见的有五种:整型INT实数型REAL符号型SYM字符串STR表 LISP在AutoLisp中,最基本的数据类型称为符号表达式,也称为S-表达式,它是原子和点对的总称,点对通常表示为表。

原子是一个一般符号系列,有两种类型的原子,一种称为数子原子(简称“数”),AutoLIsp可处理整数和实数,其它不是“数”原子称为非数字原子,它包括符号原子(或称为文字原子)和串原子。

注意:0.4不能写成.4。

符号原子的大小写是等效的。

符号原子可以包含下列字符以外的任何可打印字符。

正反括号用于定义表句号用于作点对分号用于注释的开始‘用作QUOTE函数的简写双引号用作字符串常数的定界符符号原子的长度没有限制,且所有的字符都是有意义的,但尽量不要超过6个字符。

约束是一对符号和值,当将一个值赋给符号时,就说符号被约束到那个值。

值(而不是符号)决定所代表信息的类型,故一个符号可以接受任何类型的值,其初始值为nil.在AutoLisp中,有两个特殊的符号原子,即T和nil.字符串的个数(不包括定界符)称为字符串的长度。

字符串可以是任意长度,它们的存储空间是动态分配的,但字符串常量的最大长度不超过100,长度为0字符串称为空串。

可以用“\nnn”的方式表示字符,其中nnn为八进制。

\e Esc \n 换行\r 回车 \t 制表符(Tab节)点对是由一个左括号,后接一个S-表达式和空格再接一个句点和空格和一个右括号。

表是指放在一对相匹配的左右括号中的元素有序集合。

表中的项称为表的元素,表中的元素可以是任意类型的S-表达式,序号0到n-1。

如果嵌套,0层,1层...表的长度,顶层元素的个数。

只有nil是表(’())又是原子。

表有两种类型:标准表,引用表。

引用表是在表的前面冠以引用符号(’或Quote)对该表不求值。

标准表:第一个元素的值必须是一个合法的已经存在的AutoLisp函数定义,后跟调用该函数的参数。

AutoLisp采用”前缀表示法“即把运算符放在操作数之前,而不是中间,并把运算符(函数名)和操作数(调用函数的参数)用圆括号括起来,以表的方式表示。

一个完整的AutoLisp程序往往是由一系列按顺序排列的S-表达式组成的。

如:(defun plus (x y)(+ ( + x y) x))(SetQ a 2.0)(SetQ b 2.0)(plus a b)一个S-表达式可以分多行写,一行也可以写多个表达式。

注释以分号开始,并在一行的末尾结束,AutoLisp的求值器忽略注释。

AutoLisp是一种求值型语言,求值程序第一次碰到一个求值代码块时,整个块被转换成压宿代码,如果程序中再次碰到那个块,只是简单的运行它。

求值过程:1,整形,实数,字符串,文件指针,系统部函数,以及两个特殊的符号原子,对它们求值就是它们本身。

2,符号原子是以当前的约束值作为它们的求值。

3,表是根据它的第一个元素的数据类型进行求值的。

(1)第一个元素的值为表,该表就假定为用户定义的函数。

(2)如果表的第一个元素的求值结果为一个部函数,则剩余元素作为参数传给该函数,并执行该函数的代码,由函数的类型确定是否对传给它的参数进行求值。

输入距离Lisp语言中输入距离的函数为getdist,但我们有时需要输入负值,有时需要在输入距离的同时得到角度,使用getdist函数就显得无能为力,这时,我们可以灵活使用其它交互输入函数如getpoint、getcorner等,通过计算得到我们所需要的值。

例1是一段输入长度的同时得到默认角度的代码,使用getpoint函数。

************************************************;;例1(setq pt0 (getpoint "\n直线基点: ")pt1 (getpoint pt0 "\n直线长度: ") ;长度及角度可用键盘或鼠标定位dst (distance pt0 pt1) ;计算长度ang (angle pt0 pt1) ;计算默认角度ang1 (getangle pt0 (strcat "\n直线方向<" (angtos ang 1) ">: ")))************************************************例2是可以按阵列方式输入行列间距的代码,输入距离为正值,修改部分代码可输入负值,使用getcorner函数,同时使用initget的控制位128。

************************************************;;例2(defun lc_dist ()(initget 128) ;允许任意输入(setq disr (getpoint "\n指定单位单元或输入行间距: "))(if (= (type disr) 'LIST) ;鼠标输入(progn(initget 1)(setq dis (getcorner disr "\n指定对角点: ") ;鼠标输入对角disc (abs (- (car dis) (car disr))) ;正值行距disr (abs (- (cadr dis) (cadr disr))) ;正值列距) ;计算行列间距)(if (= (type disr) 'STR) ;键盘输入行距(if (setq dis (distof disr)) ;判断输入的是否距离(progn(initget 6)(setq disc (getdist "\n输入列间距: ")) ;输入列距)(progn ;键盘输入格式不符返回(princ "\n需要正数值或两个二维角点。

")(lc_dist)))(progn ;空输入返回(princ "\n需要正数值或两个二维角点。

")(lc_dist)))))AutoCAD中特定角度及长度捕捉的实现方法一、引言在AutoCAD中的角度捕捉只有当正交状态打开时的直和水平方向,对于其他特殊角度无能为力;另外,其网点捕捉也是相对于X轴和Y轴,无法实现其他方向的特殊长度捕捉,给绘图带来极大的不方便。

相关文档
最新文档