首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

敲开VBA for CAD二次开发之门

序带给测量人员的方便是显而易见的,我们有时候为解决某些难以人工计算的技术问题,有时候也为提高功效而设计程序。本文和大家一起走入VBA f or CAD的入门之路。

01

VBA是什么

VBA(Visual Basic for Application)是专为某类应用程序设计的basic语言,它是BASIC语言的一个子集,极大的方便了应用程序的二次开发。

在microsoft office系列软件中,都可以看到VBA的身影,很多人用VBA进行第二次开发,以解决某些特定的问题。AutoCAD在早期是不支持VBA的,二次开发用的AutoLisp语言,这门语言我从来没有学过,很高兴AutoCAD VBA的引入。

02

进入AutoCAD VBA编辑器

打开Autocad程序,在“工具”-“宏”的下一级菜单可以看到VBA编辑器,点击进入。一些AutoCAD软件在安装时并没有安装这部分,软件会提示下载,并可以从官方网站上下载不同AutoCAD版本的VBA,下载好安装即可。进入VBA,如下图所示:

03

添加程序

一般来说,有三种程序添加方式:

1、添加窗体,并在窗体的各控件下编写程序

2、添加模块。主要用于常用函数的编写

3、添加类模块。用于各种类的编写。(要理解类,您需要了解面向对象程序设计的相关知识)

04

举个简单的例子

现在我们举一个简单的例子,我们要在当前图形文档里画一条直线,下面一步一步跟我做:

1、添加一个窗体(也可以添加模块再在cad里加载,具体可百度,很多)

画一个按钮(从工具箱拖过来,您可以调整位置和大小,把名字改成“绘直线”,熟悉了怎么改都行),双击按钮,进入程序编写。

2、编写程序

AutoCAD中的点是按三个元素的一维数组表示的,数组的下标从0开始,因此只能定义如a(2)表示三个元素的数组,其值有a(0),a(1),a(2)三个数据。如上图中为b点赋值x=500,y=500,z=0分别按b(0) = 500: b(1) = 500: b(2) = 0来进行。如果只想平面绘图,定义两个元素的数组可以不?不行,CAD中对点的定义就是这样,宁愿一个空着(实际默认为0)。

点、直线、多段线、曲线等在AutoCAD中都是对象,绘图指明对象属性即可,比如直线指明两个端点坐标,点指明一个坐标即可。对象有很多(准确说有很多类,类实例化后才是对象),输入时会自动提示,可以选择。

绘图需要指明在哪个文档中绘图,比如thisdrawing就是在当前文档中绘制,也可以定义并加载其他文档,然后再在其中绘图。除了指明文档外,还需要指明在模型空间绘制还是布局中绘制,比如上面例子中的thisdrawing.modelspace.Addline就表示在当前文档的模型空间绘制一条直线。

程序编写好后,点击运行,如下图所示:

点击按钮,就会按要求绘制一条直线。

05

入门之后要干的事

前面1-4您都可以依样画葫芦做下来,然而我们仅仅是打开了VBA for CAD的门缝儿,还没有真正踏进去,要进一步入门,还需要以下过程:

1、切实去了解VBA的语法,一种语言而已,这个可以很快学会,VBA有中文的帮助文档,不过我看了下,仅仅针对VBA,对于如何使用AutoCAD中的对象却没有,在AutoCAD的帮助文档里有,不过是英文,如果您对英文不熟悉,可以买一本相关的书来看,很多,也可以百度。

2、需要去掌握一定的程序设计基本知识或者基本算法,比如排序,查找等等,这方面的能力基本和语言无关,任何语言可能都会用到。缺乏这些能力,编程难如登天。可以去看看《数据结构及算法》相关书籍。

3、提高分析问题的能力。编程并不是一件困难的事,困难在于问题分析,怎样清楚地去描述问题,采用什么样的方案去解决问题才是编程的核心所在。对于一件任务,别急于去编写程序,先思考框架,然后解决模块的问题,编程水到渠成。

4、编程大多和数学有关,如果数学基础不好,则需要补充一定的数学知识,这个过程十分漫长,您可能在遇到问题时才会去学习,这比不学胡乱搞一通要好得多。

入门易,深化难。

请关注工程测量之家公众号,在以后的文章里我们会介绍更多的工程测量技术应用,让我们一道走在熟手的成长征途中。识别图中二维码,关注“工程测量之家”公众号。

如果您认为这篇文章对您有帮助,请在下方点赞。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180530G003WN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券