谈谈新人如何入门AutoLISP开发
本帖最后由 灰石Jeremy 于 2020-4-30 13:27 编辑默默的,在论坛里不知不觉,也混了有一年多的时间,但还是一个从来没发过贴的新人。一是觉得作为一个学徒,只要默默学习就好,二来,的确没有可以拿的出手的作品,能够和大家分享。不过片叶不沾身总感觉不太好,尤其是在翻看前人精贴受益匪浅时,备受感激,也想为接下来的新人做点什么,想了又想,只能谈谈我从入门学习lisp的经验吧。
入门一种编程语言,还是有点难度的,尤其是像lisp这种,非常规的编程语言形式。所以在学习lisp之前,最好能够先熟悉其他比如Python、PHP等这些简单常规的编程语言。因为常规编程语言的教程比较多,也比较好上手。不用学的太深,大概了解基础知识就可以。编程语言的体系都大同小异,这样在学习lisp的时候,就稍微比较轻松一些。本人就是在php的基础下,学习的lisp,感觉上手就容易的多。
论坛有CADghost从《晓东CAD空间》转载的《编程心得》包含了一些刚开始入门需要了解和掌握的基础知识,没有完全读懂不要紧,可以在学习的过程中再回顾,会发现其奇妙之处。
在学习一种语言的时候,教程是必要的,尤其是结合实例的教程,学习起来会更容易理解。我这里推荐一本入门的书籍《AUTOCAD完全应用指南AUTOLISP+DCL+VISUAL LISP程序设计篇》,在论坛的下载区域有资源,这本书讲解很全面,尤其是每章导言部分的内容,能够很好的让读者知道如何学习及需要注意什么,我这里就不细说了。
刚开始上手的时候,不要急于解决某一问题,就从最简单的点的移动,图形的创建开始,一步步来,不要急于求成。一个问题的解决,最主要的是编程的思路问题,如果思路对了,好多东西就可以迎刃而解。不要嫌弃程序的冗长,只要能够解决问题,就是一个好的程序。哪怕是拼接来的程序,只要能够从里边学到东西,那么这个程序就是成功的。程序不可能刚开始就是尽善尽美,需要后期在使用的过程中,慢慢的调试完善,也是在我们的学习中,逐渐完善的。
在熟悉了lisp的基本函数,并能写一些小的开发程序之后,就可以试着使用vla对象来开发一些程序。vla对象对lisp函数效率提高可不止一点点,尤其是对dxf组码的使用上,避免了繁琐的操作,可以慢慢体会。可能你会觉得突然要记那么多函数有点困难,不过一般我们能够使用到的函数并不是很多,并且在记得时候有很多规律可循,其实并没有想象中那么难。总之,刚开始的确挺难转变的,慢慢习惯就好。
然后进阶教程的话,就是一些函数的参考手册,有好多种,这里推荐《AutoLisp葵花宝典A》,里边不但有基础的函数,还有自贡黄明儒版主收集的常用函数,基本上涵盖了常用的功能。本人就是在使用的时候,查询相关的函数,结合自己需要的功能进行调用。如果可以逐一的分析,一条条学下来,不是大神也算是半个大师了。
如果想要制作自己的工具箱,需要注意的地方就特别多了,我这里简单的列举几点,有补充的回头我更新在下面1、出错函数*errer*的运用,可以在论坛搜索,有函数解释,也有总结好的模板直接使用2、自定义函数的命名方式,常见的有:分割或者_分割,然后标注功能类型等等,形成自己的模式3、快捷键的命名方式,避免重复,尽量在两到三个字符4、对于函数的定义上,特别注意之后的调用问题,做到最大化的自由度5、文字的处理上,优先选择正则处理,熟悉了会发现容易很多6、注意文件的加载顺序,会影响到程序编译后是否可以使用问题7、对于天正二次开发的时候,注意天正图元崩溃问题
本人景观界小学生一枚,如果有志同道合的朋友,可以一起学习一起加油哈!~~~
几点想法:1.自学一个编程语言如果不想21天从入门到放弃,最好的办法就是尽快写程序,很多人的信心都是磨灭在学习各种概念上了.大部分人还是有需求了才来学的,向着目标硬凑过去,能实现基本的功能,不用很完善,就能坚持自己学下去.2.不太建议太早接触Vlisp,原因和上面一样,函数多,属性多,直接去看会有些摸不到头脑的感觉,我觉得以Alisp为主,碰到Alisp难以解决的问题,才能发现Vlisp的美.3.函数、变量和程序的命名,建议有自己的特色,避免和别人的函数冲突,例如我自己写的函数,会以wyl:开头,命名方式有大小驼峰(以首字母大写为分隔),蛇形命名(以_分隔)等,有自己的习惯,让自己能一眼看明白就好,并没有特别的要求.4.函数名、变量尽量用英文命名,避免用拼音命名(太长,不好认),杜绝用拼音首字母命名.5.程序的命名,尽量不要太简单,避免冲突,快捷键在pgp文件里设置就好.6.详细的注释是必不可少的,否则过两个月你就不认识他了,例如比较特别的函数写上作用,比较长的if、while等函数,在函数的右括号后面写上;end if,能减少大量的debug的时间.7.函数尽量小而精,一个函数原则上只处理一个步骤,能提高复用性,对于通用函数,超过30行就自己看看能不能拆分成多个独立的函数,太长的函数就不通用了.8.专用函数尽量写在程序里面,避免和其他函数冲突.9.少用全局变量(程序名后面括号里斜杠后面没有的变量就是全局变量),必须要用就把名字起的复杂一点.避免冲突.10.不熟悉cons的话,尽量少用,cons的两个参数如果都是原子(atom),生成的是点对而不是列表.(cdr (cons 1 1))和(cdr (list 1 1))返回值不同,(cons 1 (cons 1 1))和(cons 1 (list 1 1))返回值也不同.
ntwison 发表于 2020-4-27 22:53
总结的好,不过看到帖子里有吧内字样,难道楼主从xx贴吧copy的?
我们这不是叫贴吧吗?。。。好吧,好像叫论坛。。。大概就这么个意思 谢谢分享经验 我也想发点什么,可是已经没有权限,发不了主题贴的路过 我也想发点什么,可是已经没有权限,发不了主题贴的路过 本帖最后由 ntwison 于 2020-4-27 23:02 编辑
总结的好,不过看到帖子里有吧内字样,难道楼主从xx贴吧copy的?:lol 好贴!经验分享,资源整合! 谢谢分享~~~~ 新手学习路过,支持!
页:
[1]
2