为什么用AutoCAD VBA
很多人说VBA是老古董,新手上路CAD二次开发都是推荐C#。我的情况是这样的:我工作的内网机,无法联网。(你能想象装一个vs要下载离线安装包拷到内网的痛苦吗,同理vscode)绘图常用的辅助工具是excel。vba属于开箱即用,能无缝衔接excel的工具(excel自带,高版本cad不自带,但拷一个百来M的vba安装文件也不大)。缺点,我认为一个是自带的vba的IDE太垃圾了,另一个是cad向vba开放的api接口太少了,甚至不如visual lisp,譬如vba缺乏graphic相关api,无法做JIG的相关开发。
AutoCAD VBA开发遇到的坑
边学VBA用VBA写了一个几百行的小程序,遇到不少坑,想到哪写到哪,也是自己心得体会的一个总结:
- 在网上搜索一些语法时,经常混淆vb和vba,vba时子集,很多vb的功能没有,建议查看Excel相关vba知识或者Microsoft Learn的VBA或者vba编辑器帮助菜单里的vba文档;
- Variant。variant是万用数据类型,AutoCAD暴露的相关api大都是用variant传递的。我的建议是variant一把梭(函数的参数和返回值都variant),利用vartype函数来做判断。只要你写了几个自定义function或者sub就能体会到这点。
- 数据类型的隐式转换。vba是弱类型语言,各个数据类型之间会隐式转换,这是个坑点,多打断点,利用debug.assert