CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 7035|回复: 15

[开发] autocad二次开发(VBA)就这么简单(转贴)

[复制链接]
发表于 2008-8-6 23:28 | 显示全部楼层 |阅读模式
运行autocad,创建一个新文件,Alt+F11(或者在菜单栏点“工具”→“宏”→“Visual Basic 编辑器”),在新出现的窗口菜单栏点“插入”→“模块”,输入下面的代码:
- H& G  I# B+ k! _; t* _# [; q) ?0 j7 b! I, d  ]# B
Sub 我的第一个程序()
) b1 I) b+ S" `+ T2 D* X0 G* B    Dim 直线1 As AcadLine$ D0 z% l, g% ?) s9 {3 f. i9 t
    Dim 起点(2) As Double& c- [" ^5 |+ L' b$ R
    Dim 端点(2) As Double
" Y9 u. y1 P& }8 T: c% u    " O* m8 U/ z6 d, c9 M9 W! \
    起点(0) = 106 z/ v5 u0 M4 i: U# n$ U
    起点(1) = 20
% b$ K$ j4 V1 f2 b% Y    端点(0) = 80
! k0 i! V' N/ E1 u    端点(1) = 1003 u+ v6 I6 V, A; u; C
    ) P! m4 A6 U+ a& ~
    Set 直线1 = ThisDrawing.ModelSpace.AddLine(起点, 端点)
8 a5 L4 L+ k. N* n' i8 [End Sub
  n8 {1 ~5 U. F# R( _2 ~$ {$ Q8 C# D2 N7 l" M' y6 B
检查一下,确信没有问题后按F5: e4 V* _. p* J, y* x
回到autocad窗口,看见了吗?一条直线,起点坐标(10,20),端点坐标(80,100)
7 o# y( {2 Z: y, q0 H5 e& t
! E, q* O& O3 l# R7 d  i( |这个程序的第一行里,“SUB”和“()”是必须有的(人家微软就是这么规定的,我也没办法),“我的第一个程序”是这个程序的名字(如果你不喜欢也可以改个别的名字,我无所谓)。7 V! O8 K4 U' l, a( k$ j1 i8 ]$ T
第二行里,“Dim”是定义一个变量,“直线1”是要画的直线的名字(随便改,中英文都行),后面的英文必须有,意思是说:这是一条autocad直线。
& L" W6 N; s1 @) r9 s; X1 K第三行里,“起点(2)”是一个数组(因为我要用它给直线赋予起点,所以取了个直观的名字,又因为点的坐标是三维的,所以必须用能容纳三个数据的数组),后面的英文意思是“这个数据是双精度类型”。
3 [# w2 x  \, L" K8 X2 u( u第四行和第三行差不多,是用来给直线赋予端点的。+ S/ G$ u  Z0 l  I$ ?$ i) ]2 `6 q
第五行和第六行是分别赋值给起点的x和y坐标(因为起点的z坐标是0,而定义这个数组的时候,默认数据就是(0,0,0),所以就不用管z坐标了)。
/ c+ |* A8 q. e/ v3 `! ]/ _6 a第七行、第八行赋值给端点x和y坐标。
/ H: ?7 V4 Z8 [" }# p& v, Z" e2 g第九行画直线,在“当前文件”的“模型空间”“画直线(按起点和端点)”。
: g& G& i/ T% a7 ?* t' b第十行,完事了。
) G6 d$ ^" `: }4 z3 q7 y
. m8 _4 j! S% K1 [有的网友一看见英文,头就会变大。别怕,如果你是用“复制/粘贴”把这段代码拷贝到VB编辑器里,就不会知道autocad有多么友善。试试用键盘把这段代码输入进去,你会发现,每到关键时刻,VBA就会提醒你下面该做什么了。) c" _: J9 u% B
别听旁人瞎说autocad这不行、那不行,那是因为autocad的两个万能命令(一个是VBA,一个是lisp)你还没学会。这两个命令你只要学会一个(不用太精通,差不多就行),就没人敢说你不是高手。
发表于 2008-8-7 08:11 | 显示全部楼层

还是看不太明白版主的意思
发表于 2008-8-7 08:22 | 显示全部楼层
回去试试, r! O6 d; k8 z$ G# M  _$ W
发表于 2008-8-7 19:35 | 显示全部楼层
这个需要vb编程基础的吧……
发表于 2008-8-7 20:29 | 显示全部楼层
谢了   我一定好好学VBA
发表于 2008-8-7 20:31 | 显示全部楼层
楼主重复了吧,本论坛CAD版主发过
发表于 2009-6-15 17:50 | 显示全部楼层
这。。貌似只谈到一些比较初级的东西吧
发表于 2009-6-16 14:48 | 显示全部楼层
vba是跟vb一样的吗?
发表于 2010-5-18 09:12 | 显示全部楼层
对高手确实简单,但是 像我们这种才开始学的还是有点难的
发表于 2010-5-19 20:55 | 显示全部楼层
用汉字是不是太麻烦了
发表于 2010-12-7 09:50 | 显示全部楼层

回复 #1 007 的帖子

这都是很基础的东西
发表于 2010-12-7 17:11 | 显示全部楼层
能不能做个东西看下。
发表于 2011-7-3 15:07 | 显示全部楼层
看懂了,如果是块,又怎么画呢?
发表于 2011-7-4 13:51 | 显示全部楼层
谢谢了,学习一下,
发表于 2011-7-8 15:14 | 显示全部楼层
la扯远了。。。。。。。。。。。。。哥们没到那程度
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2024-11-19 01:24

CAD设计论坛,为工程师增加动力。

© 2005-2024 askcad.com. All rights reserved.

快速回复 返回顶部 返回列表