Autocad VBA初级教程(2)

2020-02-21 15:28

但是在代窗口中只要设置1个断点就足够了。 sub test()

for i=2 to 4 step 0.6 for j=-5 to 2 step 5.5 next j next i

end subAutocad VBA初级教程 (第五课 画函数曲线)

先画一组下图抛物线。

下面是源码: Sub myl()

Dim p(0 To 49) As Double '定义点坐标 Dim myl As Object '定义引用曲线对象变量 co = 15 '定义颜色

For a = 0.01 To 1 Step 0.02 '开始循环画抛物线 For i = -24 To 24 Step 2 '开始画多段线 j = i + 24 '确定数组元素 p(j) = i '横坐标

p(j + 1) = a * p(j) * p(j) / 10 '纵坐标

Next i '至此p(0)-p(40)所有元素已定义,结束循环

Set myl = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) '画多段线 myl.Color = co '设置颜色属性

co = co + 1 '改变颜色,供下次定义曲线颜色 Next a End sub

为了鼓励大家积极思考,从本课开始,我不再解释每一条语句的作用,只对以前没有提过的语句进行一些解释,也许你一时很难明白,建议用上一课提到的跟踪变量、添加断点的办法领悟每一条语句的作用,如果有问题不懂请跟贴提问。 在跟踪变量p时请在跟踪窗口中单击变量p前的+号,这样可以看清数组p中每一个元素的变化。

ACAD没有现成的画抛物线命令,我们只能用程序编写多段线画近似抛物线。理论上,抛物线的X值可以是无限小、无限大,这里取值范围在正负24之间。

程序第二行:Dim myl As Object '定义引用曲线对象变量

Object也是一种变量类型,它可以把变量定义为对象,本例中myl变量将引用多段线,所以要定义为Objet类型。

看画多段线命令:

Set myl = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) '画多段线 其中括号中的p是一个数组,这个数组的元素数必须是偶数,每两个元数作为一个点坐标。 等号前面部分“Set myl”的作用就将myl变量去引用画好的多段线。

myl.Color = co '设置颜色属性。在ACAD中,颜色可以用数字表示,本例中co会增值,这样就会有五彩缤纷的效果。

本课第二张图:正弦曲线,下面是源码: Sub sinl()

Dim p(0 To 719) As Double '定义点坐标 For i = 0 To 718 Step 2 '开始画多段线

p(i) = i * 2 * 3.1415926535897 / 360 '横坐标 p(i + 1) = 2 * Sin(p(i)) '纵坐标 Next i

ThisDrawing.ModelSpace.AddLightWeightPolyline (p) '画多段线 ZoomExtents '显示整个图形 End Sub

p(i) = i * 2 * 3.1415926535897 / 360 '横坐标

横坐标表示角度,后面表达式的作用是把角度转化弧度

ZoomExtents语句是缩放命令,它的作用是显示整个图形,消除图形以外的区域

本课思考题:画一条抛物线:y=0.5*x*x+3,其中X取值范围在正负50之间Autocad VBA初级教程 (第六课 数据类型的转换)

上一节课我们用一个简单的公式把角度转化为弧度,这样做便于大家理解。不过VBA中有现成的方法可以转换数据类型。

我们举例说明:

jd = ThisDrawing.Utility.AngleToReal(30, 0)

这个表达式把角度30度转化为弧度,结果是.523598775598299。

AngleToReal需要两个参数,前面是表示要转换角度的数字,而后面一个参数可以取值为0-4之间的整数,有如下意义:

0:十进制角度;1:度分秒格式;2:梯度;3:弧度;4:测地单位 例:id= ThisDrawing.Utility.AngleToReal(\这个表达式计算62度30分10秒的弧度

再看将字符串转换为实数的方法:DistanceToReal

需要两个参数,前一个参数是表示数值的字符串,后面可以取值1-5,表示数据格式,有如下意义:

1:科学计数;2:十进制;3:工程计数——英尺加英寸;4:建筑计数——英尺加分数英寸;5:分数格式。

例:以下表达式得到一个12.5的实数

temp1 = ThisDrawing.Utility.DistanceToReal(\temp2 = ThisDrawing.Utility.DistanceToReal(\temp3 = ThisDrawing.Utility.DistanceToReal(\

而realtostring方法正好相反,它把一个实数转换为字符串。它需要3个参数

第一个参数是一个实数,第二个参数表示数据格式,含义同上,最后一个参数表示精确到几位小数。

temp1= ThisDrawing.Utility.RealToString(12.5, 1, 3) 得到这个字符串:“1.250E+01”,

下面介绍一些数型转换函数:

Cint,获得一个整数,例:Cint(3.14159) ,得到3

Cvar,获得一个Variant类型的数值,例:Cvar(\,得到”12300” Cdate,转换为date数据类型,例:MyShortTime = CDate(\

下面的代码可以写出一串数字,从000-099。

Sub test()

Dim add0 As String Dim text As String

Dim p(0 To 2) As Double p(1) = 0 'Y坐标为0 p(2) = 0 'Z坐标为0

For i = 0 To 99 '开始循环 If i < 10 Then '如果小于10 add0 = \需要加00 Else '否则

add0 = \需要加0 End If

text = add0 & CStr(i) '加零,并转换数据 p(0) = i * 100 'X坐标

Call ThisDrawing.ModelSpace.AddText(text, p, 4) '写字 Next i

End Sub

重点解释条件判断语句: If 条件表达式 Then …… Else …… End if

如果满足条件那么程序往下执行,到else时不再往下执行,直接跳到End if后面 如果不满足条件,程序跳到else后往下运行。

Call ThisDrawing.ModelSpace.AddText(text, p, 4) '写字

这是写单行文本,需要三个参数,分别是:写的内容、位置、字高Autocad VBA初级教程 (第七课 写文字)

客观地说,ACAD写字功能不够历害,而用VBA可以使写字效率更高。比较正规的做法是把定义文字样式,用样式来控制文字的特性。我们还是用实例来学习,先看下面一段代码,它的作用是先创建一个文字样式,然后用这个文字样式写一段多行文本。

Sub txt()

Dim mytxt As AcadTextStyle '定义mytxt变量为文本样式 Dim p(0 To 2) As Double '定义坐标变量 p(0) = 100: p(1) = 100: p(2) = 0 '坐标赋值

Set mytxt = ThisDrawing.TextStyles.Add(\添加mytxt样式

mytxt.fontFile = \设置字体文件为仿宋体 mytxt.Height = 100 '字高 mytxt.Width = 0.8 '宽高比

mytxt.ObliqueAngle = ThisDrawing.Utility.AngleToReal(3, 0) '倾斜角度(需转为弧度)

ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxt

Set txtobj = ThisDrawing.ModelSpace.AddMText(p, 1400, \做到老,学到老}\\P\此心自光明正大,过人远矣\

txtobj.LineSpacingFactor = 2 '指定行间距

txtobj.AttachmentPoint = 3 '右对齐(1为左对齐,2为居中)

End Sub

我们看这条语句

Set mytxt = ThisDrawing.TextStyles.Add(\

添加文本样式并赋值给mytxt变量,只需要一个参数:文本样式名

fontfile、height、width、ObliqueAngle是文本样式最常用的属性

Call ThisDrawing.ModelSpace.AddMText(p, 1400, \做到老,学到老}\\P\此心自光明正大,过人远矣\

这条语句是写文本,需要三个参数。第一个参数p是坐标,1400是宽度,最后一个参数是文本内容,其中\\p是一个回车符

扩大字符间距用\\T数字,例:\\T3abc,使文字abc的间距扩大3 部,n取值范围是0.75-3

在论坛中有一个经常被同好提及的问题:如何使用文字叠加。举例说明:123\\S+0.12^-0.34 \\S是格式字符,^是分隔符,前面的数字在上,后面的数字在下。

\\C是颜色格式字符,C后面跟一个数字表示颜色

\\A是对齐方式,\\A0,\\A1,\\A2分别表示底部对齐、中间对齐和顶部对齐Autocad VBA初级教程 (第八课:图层操作)

先简单介绍两条命令:

1、这条语句可以建立图层:

ThisDrawing.Layers.Add(\新建图层\在括号中填写图层的名称。

2、设置为当前的图层

ThisDrawing.ActiveLayer=图层对象

注意,等号右边的变量不能用图层名称,必须使用一个有效的图层变量

以下一些属性在图层比较常用: LayerOn 打开关闭 Freeze 冻结 Lock锁定 Color 颜色 Linetype 线型

看一个例题:

1、先在已有的图层中寻找一个名为“新建图层”的图层

2、如果找到这个图层,显示该图层的信息,并提示用户是否需要设置为当前图层,如果用户确认,则设置为当前图层。

3、如果图层没有找到,新建一个名为“新建图层”的图层,设置为黄色,HIDDEN线型,并把这个图层设置为当前图层

Sub mylay()

Dim lay0 As AcadLayer '定义作为图层的变量 Dim lay1 As AcadLayer

findlay = 0 '寻找图层的结果的变量,0没有找到,1找到

For Each lay0 In ThisDrawing.Layers '在所有的图层中进行循环

If lay0.Name = \新建图层\如果找到图层名 findlay = 1 '把变量改为1标志着图层已经找到 msgstr = lay0.Name + \已经存在\

msgstr = msgstr + \图层状态:\打开\关闭\


Autocad VBA初级教程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公开选拔乡镇副科级领导干部笔试题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: