今年明显能感觉到,大环境真的变了,建筑行业确实是每况愈下了。

能察觉到,同行们没那么忙了,时间似乎一下子变多了,有的单位就开始卷了,有的单位就卷得更厉害了。

卷的表现有好多种,买课,考证,学编程,学各种东西。

学编程这个事情,我在好几个平台上收到了类似的私信,都在问怎么学习autolisp,大家都想写出自己的cad插件。 可能出发点有所不同,有的人大约是真的想提高画图的效率,有的人可能只是想写点代码发发文章, 还有的也许是想弄点代码搞评选,博眼球提高印象分。

不管怎么说,愿意学习总归是好事。只是,“怎么学习xx”这个问题太大了,简直是没法回答。

又有人问了更具体的,说autolisp的语法,能否谈谈?

这个问题倒是挺容易回答的,如果不追求严谨的话。往糙了说,autolisp大约可以说是没有语法的。 具体一点的话,可以说说她的表达式写法,函数和变量的命名约定。除了这两点,似乎跟其他编程语言也没有太大的区别。

至于类及其属性和方法,根本就不涉及,因为autolisp不是面向对象的编程语言。

在lisp世界里边,函数名和变量名几乎没有限制,除了不允许使用( ) ' " . ;这6个符号以外。 再有就是,不允许使用纯阿拉伯数字作为函数名和变量名,这一点,应该是编程语言共同的要求吧。

那么,命名冲突呢?autolisp解决命名冲突的方式,十分简单粗暴,就是后面的定义覆盖前面的。 你完全可以自己写一个与内置函数同名的函数,这样的话,就把系统内置函数给覆盖掉了, 此后对该函数的调用,就都是调用的自定义的那个了。

再说说表达式写法。

lisp的表达式写法很简单,一对圆括号包裹起来的,就是一条语句(表达式)。 和其他编程语言的区别,就在于lisp是前缀表示法,也就是说,“动作”、“方法”、“函数”、“操作符”写在最前边。 比如,计算1+1,lisp写作(+ 1 1),计算1+1+2,lisp写作(+ 1 1 2)。这里的+,既是一个操作符, 也是一个内置函数。

对于自定义函数来说,表达式的写法也是如此的。比如,有一个名为foo的自定义函数,接受2个值作为参数, 调用这个foo函数时,lisp写作(foo a b)

到这里,基本上就把autolisp的语法给讲完了,因为她确实没有多少语法。不过,本文的内容, 对于完全没有学过编程语言的人来说,从头看到尾,可能还是云里雾里的。 所以,如果你完全没有任何编程语言的学习经历的话,还是找几本基础的教材, 仔细研究一下吧。对于有志于学习autolisp的朋友,推荐看看高校的c语言教材,比如谭浩强编写的那本。