cad插件有很多种,光是加载插件的命令就有几条,常用的有appload、netload。netload是专用于加载.net技术开发的cad插件的,大家常用的插件多是appload加载的。
appload命令,可以加载的插件有6种,包括arx、dbx、dvb、fas、lsp、vlx。后3种,都是用autolispo/visual lisp语言开发的。
所以,请不要混淆了lisp插件和lsp插件,lisp语言开发的插件都可以称作lisp插件,而lsp插件是其中一种。
那么,lsp插件和fas、vlx有什么异同呢?
先说相同点:
- 都是lisp语言开发的,不管是autolisp还是visual lisp,实际上现在的visual lisp包含了autolisp。
- 可以实现相同的功能,lsp插件可以“变成”fas、vlx。
不同点大概有以下几点:
- 文件格式不同(有点像是废话),文件的内容不同,lsp可以用记事本打开,看得到里边的内容,也可以修改。fas、vlx也是可以强行用记事本打开的,只是内容是乱码、一堆乱七八糟的符号,想修改更是不可能的。
- lsp文件就是源代码,经过编译器编译之后,就成为fas文件了。
- 把fas文件、dcl文件以及txt文件,进行打包,就可以得到单独的一个vlx文件。
- fas插件执行起来,比lsp插件的速度更快。
- vlx插件,除了执行速度跟fas一样快之外,它有自己的命名空间,其他的插件想访问vlx内部的变量、函数或者其他资源,是访问不了的。
- lsp、fas文件,都没有自己的命名空间。在打开某个dwg之后,加载的所有的lsp、fas文件,互相之间都是可以访问对方的变量、函数的,一点隐私都没有。
那么,为什么不要用lsp插件呢?
因为,lsp插件之间没有隐私,没有隐私就会导致冲突。
比如,a.lsp里边有个函数c:tt,命令行输入tt就能运行,哪知道b.lsp里边也有这样的一个函数,也叫c:tt。当你把a.lsp和b.lsp都用appload加载了之后,输入tt,运行的到底是哪个文件里边的函数呢?执行的到底是哪个插件呢?
不知道。无法搞清楚,因为,同名的话autocad只承认最后一个,哪个文件最后加载,它就认哪个。这就是lsp插件最大的弊端。
下一次,当你发现某个插件突然抽风的时候,检查一下是不是加载了多个lsp,试试只加载一个lsp,看看是不是问题就消失了,如果是的,就说明出现名称冲突了。
这个时候,终极解决方案,就是把你的lsp插件编译成vlx。
用上vlx,莫名其妙的插件抽风就荡然无存了。所以,是时候告别lsp插件了。