CADVBA初级教程全全Word下载.docx
- 文档编号:19366983
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:25
- 大小:32.86KB
CADVBA初级教程全全Word下载.docx
《CADVBA初级教程全全Word下载.docx》由会员分享,可在线阅读,更多相关《CADVBA初级教程全全Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
Fori=1To1000Step10'
开始循环
CallThisDrawing.ModelSpace.AddCircle(cc,i*10)'
画圆
Nexti
EndSub
也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
第二课编程根底
本课主要任务是对上一课的例程进展详细分析
下面是源码:
先看第一行和最后一行:
SubC100()
……
C100是宏的名称,也叫过程名称,当用户执行C100时程序将运行sub和endsub之间的所有指令。
第二行:
后半段“'
声明坐标变量〞自动变为绿色字体,它是代码语句的注释,它不会影响程序运行,它的作用是告
诉阅读者程序员的想法。
对于简单的程序,一般不需要写注释,如果要编写非常复杂的程序,最好要多加
注释,越详细越好,对于程序员来说,这是一个好习惯。
电脑真正编译执行的是这条语句:
Dimcc(0To2)AsDouble
它的作用就是声明变量。
Dim是一条语句,可以理解为计算机指令。
它的语法:
Dim变量名As数据类型
本例中变量名为CC,而括号中的0to2声明这个CC是一个数组,这个数组有三个元素:
CC(0)、CC
(1)、
CC
(2),如果改为CC(1to3),如此三个元素是CC
(1)、CC
(2)、CC(3),有了这个数组,就可以把坐标数值放
到这个变量之中。
Double是数据类型中的一种。
ACAD中一般需要定义坐标时就用这个数据类型。
在ACAD中数据类型的有很
多,下面两个是比拟常用的数据类型,初学者要有所理解。
Long〔长整型〕,其X围从-2,147,483,648到2,147,483,647。
Variant它是那些没被显式声明为其他类型变量的数据类型,可以理解为一种通用的数据类型,这是最常
用的。
下面三条语句
它们的作用是给CC变量的每一个元素赋,值其顺序是X、Y、Z坐标。
Nexti'
完毕循环
这两条语句的作用是循环运行指令,每循环一次,i值要增加10,当i加到1000时,完毕循环。
i也是一个变量,虽然没有声明i变量,程序还是认可的,VB不是C语言,每用一个变量都要声明,不声
明就会报错。
简单是简单了,这样做也有坏处,如果不小心打错了一个字母,程序不会报错,如果程序很
长,那就会出现一些意想不到的错误。
step后面的数值就是每次循环时增加的数值,step后也可以用负值。
例如:
Fori=1000To1Step-10
很多情况下,后面可以不加step10
如:
Fori=1to100,它的作用是每循环一次i值就增加1
Nexti语句必须出现在需要完毕循环的位置,不然程序没法运行。
下面看画圆命令:
CallThisDrawing.ModelSpace.AddCircle(cc,i*10)
Call语句的作用是调用其他过程或者方法。
ThisDrawing.ModelSpace是指当前CAD文档的模型空间
AddCircle是画圆方法
Addcicle方法需要两个参数:
圆心和半径
CC就是圆心坐标,i*10就是圆的半径,本例中,这些圆的半径分别是10、110、210、310……
本课到此完毕,下面请完成一道思考题:
1.以(4,2)为圆心,画5个A
utocadVBA初级教程
(第三课编程根底二)
有一位叫自然9172的网友提出了下面的问题:
绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入
本课将讲解这个问题。
为了简化程序,这里用多条直线来代替多段线。
以下是源码:
Submyl()
Dimp1AsVariant'
申明端点坐标
Dimp2AsVariant
p1=ThisDrawing.Utility.GetPoint(,"
输入点:
"
)'
获取点坐标
z=ThisDrawing.Utility.GetReal("
Z坐标:
用户输入Z坐标值
p1
(2)=z'
将Z坐标值赋予点坐标中
OnErrorGoToErr_Control'
出错陷井
Do'
p2=ThisDrawing.Utility.GetPoint(p1,vbCr&
"
输入下一点:
获取下一个点的坐标
p2
(2)=z'
CallThisDrawing.ModelSpace.AddLine(p1,p2)'
画直线
p1=p2'
将第二点的端点保存为下一条直线的第一个端点坐标
Loop
Err_Control:
先谈一下本程序的设计思路:
1、获取第一点坐标
2、输入第一点Z坐标
3、获取第二点坐标
4、输入第二点Z坐标
5、以第一、二点为端点,画直线
6、下一条线的第一点=这条线的第二点
7、回到第3步进展循环
如果用户没有输入坐标或Z值,如此程序完毕。
首先看以下两条语句:
)‘获取点坐标
这两条语句的作用是由用户输入点用鼠标选取点坐标,并把坐标值赋给p1、p2两个变量。
〔〕在ACAD中这是最常用的方法之一,它需要两个参数,在逗号前面的参
数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,后一个端点跟随鼠标
移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须保存。
逗号后面使用一串字符,程序在命令行显示这串字符,这不难理解。
VbCr通常代表一个回车符,而在这个语句中,它的作用是在命令行不显示“命令:
〞
&
的作用是连接字符。
举例:
“爱我中华〞&
〞抵制日货〞&
〞从我做起〞
由用户输入一个实数
OnError是出错陷井语句,在程序出错时将执行OnError后面的语句
GoToErr_contorl是程序跳转语句,它的作用是在程序中寻找Err_control:
,并执行这一行后面的语句,
本例中Err_Control:
后就是完毕宏,所以只要出现错误,程序中止。
Loop‘完毕循环
这个循环就历害了,它会无休止地进展循环,好在本例中已经有了一个出错陷井,当用户输入回车时,由
于程序没有得到点或坐标,程序出错,跳出循环,中止程序。
如果要人为控制跳出循环,可以在代码中用
ExitDo语句跳出循环。
在For变量和Next变量之间如果要跳出循环,那么只要在循环体内加一个Exit
for就可以跳出循环,关于这方面的例程以后会讲到。
画直线方法也是很常用的,它的两个参数是点坐标变量
本课到此完毕,请做思考题:
连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出
同心圆,其半径为1-5
AutocadVBA初级教程(第四课程序的调试和保存)
人非圣贤,孰能无过,初学者在编写复杂程序时往往会出现一些意想不到的错误,所以程序的调试显得尤
为重要,随着学习的深入,以后我们需要经常进展程序调试。
事实上,对于那些资深程序员来说,调试程
序也是一项不可或缺的重要工作。
首先,在程序输入阶段,应该充分利用VBA编辑器的智能功能。
当你在写代码时,输入一些字母后,编辑
器可以自动列出适宜的语句、对象、函数供你选择,可以用上下键选择,然后按TAB键〔它位于“Q〞键左
边〕确认。
当输入一个回车符后程序会自动对这条语句进展分析,如果出现错误就会提示。
我们经常碰到的麻烦是程序的运行结果和预计的不一样,一般我会这样做:
首先要想一想可能是哪一个变
量有问题,然后去监视这个变量(或表达式),在程序适宜的位置设置断点,这样可以使程序停下来看一看
这个变量有没有按照我的设想在变化。
下面我举一个简单的例子,先看源代码:
subtest()
nexti
endsub
这是一个非常简单的循环,每一次循环i便会增加,当循环3次后i值就变为,但问题是每一次循
环时i值变为多少?
在菜单中选“调试〞—“添加监视〞,在表达试中填“i〞,点击确定,这时你会看到临视窗口中
会多一行。
把光标移到代码窗口中的“nexti〞行,按一下“F9〞,于是每当程序运行到这里时就会暂停了。
好,一切就绪,请按F5执行程序,在监视窗口中C值立刻变为2,再按F5继续,C值为,再按几次F5,
直到程序完毕,这样我们就成功监视了C值的变化。
在nexti行再按一次F9,去除断点。
监视的表达式的右键菜单项选择择“删除监视〞。
另外,还可以用“逐语句〞、“逐过程〞、“运行到光标处〞等方法进展调试,这些都在调试菜单中,操
作比拟简单,请读者自行领悟。
到目前为止,我们所做的工程都是“嵌入式工程〞,它只是嵌入在当前的Autocad图形文件中,以后打开
这个文件时代码才会加载,如果别的dwg文件也要使用,那就需要把代码导出为.bas文件,供其他dwg文
件导入。
在VBA编辑器的“文件〞菜单中有这两个功能,一试便知。
ACADVBA还有一种工程叫“通用式工程〞,只要进入ACAD就可以运行,程序可以在不同用户、不同的图
形文件中共享,但是由于VBA功能太强,有时候会出现一些意想不到的事情,所以在学习阶段请暂时不要
这样做。
本课完毕,请做思考题;
监视如下代码中的i和j的值,注意,此题虽然要监视2个变量,但是在代窗口
中只要设置1个断点就足够了。
nextj
AutocadVBA初级教程(第五课画函数曲线)
先画一组如下图抛物线。
Dimp(0To49)AsDouble'
定义点坐标
DimmylAsObject'
定义引用曲线对象变量
co=15'
定义颜色
Fora=0.01To1Step0.02'
开始循环画抛物线
Fori=-24To24Step2'
开始画多段线
j=i+24'
确定数组元素
p(j)=i'
横坐标
p(j+1)=a*p(j)*p(j)/10'
纵坐标
至此p(0)-p(40)所有元素已定义,完毕循环
Setmyl=ThisDrawing.ModelSpace.AddLightWeightPolyline(p)'
画多段线
myl.Color=co'
设置颜色属性
co=co+1'
改变颜色,供下次定义曲线颜色
Nexta
Endsub
为了鼓励大家积极思考,从本课开始,我不再解释每一条语句的作用,只对以前没有提过的语句进展一些
解释,也许你一时很难明白,建议用上一课提到的跟踪变量、添加断点的方法领悟每一条语句的作用,如
果有问题不懂请跟贴提问。
在跟踪变量p时请在跟踪窗口中单击变量p前的+号,这样可以看清数组p中每一个元素的变化。
ACAD没有现成的画抛物线命令,我们只能用程序编写多段线画近似抛物线。
理论上,抛物线的X值可以是
无限小、无限大,这里取值X围在正负24之间。
程序第二行:
Object也是一种变量类型,它可以把变量定义为对象,本例中myl变量将引用多段线,所以要定义为Objet
类型。
看画多段线命令:
其中括号中的p是一个数组,这个数组的元素数必须是偶数,每两个元数作为一个点坐标。
等号前面局部“Setmyl〞的作用就将myl变量去引用画好的多段线。
设置颜色属性。
在ACAD中,颜色可以用数字表示,本例中co会增值,这样就会有五彩
缤纷的效果。
本课第二X图:
正弦曲线,下面是源码:
Subsinl()
Dimp(0To719)AsDouble'
Fori=0To718Step2'
p(i+1)=2*Sin(p(i))'
ThisDrawing.ModelSpace.AddLightWeightPolyline(p)'
ZoomExtents'
显示整个图形
横坐标表示角度,后面表达式的作用是把角度转化弧度
ZoomExtents语句是缩放命令,它的作用是显示整个图形,消除图形以外的区域
本课思考题:
画一条抛物线:
y=0.5*x*x+3,其中X取值X围在正负50之间
AutocadVBA初级教程(第六课数据类型的转换)
上一节课我们用一个简单的公式把角度转化为弧度,这样做便于大家理解。
不过VBA中有现成的方法可以
转换数据类型。
我们举例说明:
jd=ThisDrawing.Utility.AngleToReal(30,0)
这个表达式把角度30度转化为弧度,结果是.523598775598299。
AngleToReal需要两个参数,前面是表示要转换角度的数字,而后面一个参数可以取值为0-4之间的整数,
有如下意义:
0:
十进制角度;
1:
度分秒格式;
2:
梯度;
3:
弧度;
4:
测地单位
例:
id=ThisDrawing.Utility.AngleToReal("
62d30'
10"
1)
这个表达式计算62度30分10秒的弧度
再看将字符串转换为实数的方法:
DistanceToReal
需要两个参数,前一个参数是表示数值的字符串,后面可以取值1-5,表示数据格式,有如下意义:
科学计数;
十进制;
工程计数——英尺加英寸;
建筑计数——英尺加分数英寸;
5:
分数格式。
以下表达式得到一个12.5的实数
temp1=ThisDrawing.Utility.DistanceToReal("
1.25E+01"
temp2=ThisDrawing.Utility.DistanceToReal("
12.5"
2)
temp3=ThisDrawing.Utility.DistanceToReal("
121/2"
5)
而realtostring方法正好相反,它把一个实数转换为字符串。
它需要3个参数
第一个参数是一个实数,第二个参数表示数据格式,含义同上,最后一个参数表示准确到几位小数。
temp1=ThisDrawing.Utility.RealToString(12.5,1,3)
得到这个字符串:
“1.250E+01〞,
下面介绍一些数型转换函数:
Cint,获得一个整数,例:
Cint(3.14159),得到3
Cvar,获得一个Variant类型的数值,例:
Cvar("
123"
&
00"
),得到〞12300〞
Cdate,转换为date数据类型,例:
MyShortTime=CDate("
11:
13:
14AM"
)
下面的代码可以写出一串数字,从000-099。
Subtest()
Dimadd0AsString
DimtextAsString
Dimp(0To2)AsDouble
p
(1)=0'
Y坐标为0
p
(2)=0'
Z坐标为0
Fori=0To99'
Ifi<
10Then'
如果小于10
add0="
'
需要加00
Else'
否如此
0"
需要加0
EndIf
text=add0&
CStr(i)'
加零,并转换数据
p(0)=i*100'
X坐标
CallThisDrawing.ModelSpace.AddText(text,p,4)'
写字
重点解释条件判断语句:
If条件表达式Then
Else
Endif
如果满足条件那么程序往下执行,到else时不再往下执行,直接跳到Endif后面
如果不满足条件,程序跳到else后往下运行。
这是写单行文本,需要三个参数,分别是:
写的内容、位置、字高
AutocadVBA初级教程(第七课写文字)
客观地说,ACAD写字功能不够历害,而用VBA可以使写字效率更高。
比拟正规的做法是把定义文字样式,
用样式来控制文字的特性。
我们还是用实例来学习,先看下面一段代码,它的作用是先创建一个文字样式,
然后用这个文字样式写一段多行文本。
Subtxt()
DimmytxtAsAcadTextStyle'
定义mytxt变量为文本样式
Dimp(0To2)AsDouble'
定义坐标变量
p(0)=100:
p
(1)=100:
p
(2)=0'
坐标赋值
Setmytxt=ThisDrawing.TextStyles.Add("
mytxt"
添加mytxt样式
mytxt.fontFile="
c:
\windows\fonts\simfang.ttf"
设置字体文件为仿宋体
mytxt.Height=100'
字高
mytxt.Width=0.8'
宽高比
mytxt.ObliqueAngle=ThisDrawing.Utility.AngleToReal(3,0)'
倾斜角度〔需转为弧度〕
ThisDrawing.ActiveTextStyle=mytxt'
将当前文字样式设置为mytxt
Settxtobj=ThisDrawing.ModelSpace.AddMText(p,1400,"
{做到老,学到老}\P"
此心自光明正大,
过人远矣"
txtobj.LineSpacingFactor=2'
指定行间距
txtobj.AttachmentPoint=3'
右对齐〔1为左对齐,2为居中〕
我们看这条语句
添加文本样式并赋值给mytxt变量,只需要一个参数:
文本样式名
fontfile、height、width、ObliqueAngle是文本样式最常用的属性
CallThisDrawing.ModelSpace.AddMText(p,1400,"
此心自光明正大,过人远
矣"
这条语句是写文本,需要三个参数。
第一个参数p是坐标,1400是宽度,最后一个参数是文本内容,其中
\p是一个回车符
扩大字符间距用\T数字,例:
\T3abc,使文字abc的间距扩大3部,n取值X围是
在论坛中有一个经常被同好提与的问题:
如何使用文字叠加。
举例说明:
\S是格式字符,^是分隔符,前面的数字在上,后面的数字在下。
\C是颜色格式字符,C后面跟一个数字表示颜色
\A是对齐方式,\A0,\A1,\A2分别表示底部对齐、中间对齐和顶部对齐
AutocadVBA初级教程(第八课:
图层操作)
先简单介绍两条命令:
1、这条语句可以建立图层:
ThisDrawing.Layers.Add("
新建图层"
在括号中填写图层的名称。
2、设置为当前的图层
ThisDrawing.ActiveLayer=图层对象
注意,等号右边的变量不能用图层名称,必须使用一个有效的图层变量
以下一些属性在图层比拟常用:
LayerOn打开关闭
Freeze冻结
Lock锁定
Color颜色
Linetype线型
看一个例题:
1、先在已有的图层中寻找一个名为“新建图层〞的图层
2、如果找到这个图层,显示该图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CADVBA 初级教程