AutoLISP避坑指北
有人觉得,现在都什么时候了,房子卖不动了,设计院倒闭了,工程师失业了,还在谈什么autolisp? 哪里还有人学autolisp啊?
有需要就去学
这种说法,不能说没有道理,只能说有点以偏概全。
autocad的用户,在这哈儿肯定是房地产行业为主的,房地产现在这样子的形势,autocad用户肯定减少了。 但是,用户数量减少了,并不是没有用户了,也不能说明剩下的用户他(她)就不需要通过autolisp提高效率啊。
在我看来,现有的autocad用户,尤其是设计院的用户,比以往更加需要autolisp和各种cad插件。 原因很简单,竞争更激烈了,设计费更低了,老板要压缩成本,就只有降薪和裁员两条路了,这个时候, 老板和工程师(设计师)也就比以往更加需要通过cad插件之类的工具提高效率了。
在cad方面,想要提高效率,首选的自然是autolisp手搓插件了,因为autolisp对于绝大部分cad用户来说是最简单易学的。 不过,简单归简单,学autolisp的坑还是不少的,避坑是很有必要的。
避坑建议之一:看官方文档,切勿逛简中论坛
最近开始学、打算学autolisp的,我猜测这些人中间,有很多喜欢逛autolisp相关的简中论坛,比如晓东、mjtd。 这种现象,似乎在简中圈子特别流行。这一类论坛,似乎也是千篇一律的内容。这两点,真的是一种十分鲜明的特色。
只不过,想要学得进去,真的打算学autolisp的话,建议不要逛这些论坛,完全是浪费时间。
学习autolisp,最简单、最有效的方式,就是一边动手写代码一边阅读官方文档,包括教程、函数参考资料, 边用边学学以致用。
不逛论坛,是为了防止被某些半桶水带偏。非要逛论坛不可的话,建议直接管autocad官方的英文论坛, 氛围更好,被带偏的概率更低。
避坑建议之二:尽量不用嵌套函数(局部函数)
嵌套函数,就是在1个函数内部,在它函数体部分去写另外一个函数,有人管它叫局部函数,因为就像是局部变量一样。
不建议用这种东西的原因,有2点:
- 性能不太好
- 编译的时候容易出错
性能不好的原因在于,可能会影响autolisp解释器的gc。
嵌套函数在打开了编译器的编译优化开关之后,很容易出错,表现就是编译时出现长时间卡顿、无响应。 如果不打算使用编译优化,只执行标准编译,倒是也无所谓。只是,愿意这么干的肯定是少之又少的, 毕竟,编译优化真的能够带来性能提升。
避坑建议之三:尽量不用lambda函数
不用lambda函数的原因,和上一条是类似的。
autolisp的编译器存在bug,lambda函数在打开了编译优化开关的时候也容易出现编译卡死的问题。 绝大多数情况下,使用lambda并不会比使用具名函数有多少优势,考虑到代码复用的话,具名函数是更好的选择。
避坑建议之四:尽量不用递归
这个其实不必过多解释。
非要说的话,还是autolisp的解释器、编译器的锅,没有对递归进行优化,使用递归比循环迭代性能更差。
文章作者 Jack Hsu
上次更新 2023-12-01
许可协议 Copyright © Jack Hsu. All Rights Reserved.