cad二次开发中介绍vba
源代码在线查看: cad世界__autocad vba初级教程 (第八课图层操作).htm
CAD世界__Autocad VBA初级教程 (第八课:图层操作)
BODY {
BACKGROUND-IMAGE: url(image/pagebg.gif)
}
.style1 {
FONT-WEIGHT: bold; COLOR: #ff0066
}
.style2 {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Times New Roman, Times, serif, "黑体"
}
.style3 {
COLOR: #336699
}
.style4 {
COLOR: #333333
}
.style6 {
COLOR: #f76c8c
}
.style15 {
COLOR: #ff0033
}
.style16 {
FONT-WEIGHT: bold; COLOR: #ff0000
}
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/headadA.js">
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/headmenuA.js">
align=center>
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/mu_search_red.gif"
width=159>
value=all name=datesearch> name=AreaSearch>
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/leftmenu2_01_red.gif"
width=159>
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/class2.js">
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/leftmenu2_02_red.gif"
width=160>
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/lttop6.js">
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/mu_mail_red.gif"
width=160>
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/tougaoA.js">
background="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/lbg1.gif">
-->
当前位置:ICAD >> 数字化设计 >> CAD >>
正文
style="FONT-SIZE: 16px">Autocad VBA初级教程 (第八课:图层操作) height=12 src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/zi.jpg"
width=15>
作者:普天同庆 | 阅读次数:2153 转自: color=#cc0000>CAD世界网-论坛
时间:2005年5月30日15:41
size=3>
先简单介绍两条命令:
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 = "新建图层" Then '如果找到图层名
findlay = 1 '把变量改为1标志着图层已经找到 msgstr =
lay0.Name + "已经存在" + vbCrLf msgstr = msgstr +
"图层状态:" + IIf(lay0.LayerOn = True, "打开", "关闭") +
vbCrLf msgstr = msgstr + "图层" +
IIf(lay0.Freeze = True, "已经", "没有") + "冻结" +
vbCrLf msgstr = msgstr + "图层" + IIf(lay0.Lock
= True, "已经", "没有") + "锁定" + vbCrLf msgstr =
msgstr + "图层颜色号:" + CStr(lay0.Color) + vbCrLf
msgstr = msgstr + "图层线型:" + lay0.Linetype +
vbCrLf msgstr = msgstr + "图层线宽:" +
CStr(lay0.Lineweight) + vbCrLf msgstr = msgstr
+ "打印开关" + IIf(lay0.Plottable = False, "关闭", "打开") + vbCrLf +
vbCrLf msgstr = msgstr +
"是否设置为当前图层?" If MsgBox(msgstr, 1) = 1 Then
'如果用户点击确定 If Not
lay0.LayerOn Then lay0.LayerOn = True
'打开 ThisDrawing.ActiveLayer
= lay0 '把当前图层设为已经存在的图层 End
If Exit For '结束寻找 End IfNext
lay0
If findlay = 0 Then '没有找到图层 Set lay1 =
ThisDrawing.Layers.Add("新建图层") '增加一个名为“临时图层”的图层 lay1.Color
= 2 '图层设置为黄色 ltfind = 0
'找到线型的标志,0没有找到,1找到 For Each entry In ThisDrawing.Linetypes
'在现有的线型中进行循环 If StrComp(entry.Name, "HIDDEN")
= 0 Then '如果线型名为"HIDDEN" ltfind =
1 '标志为已找到线型 Exit For
'退出循环 End If Next entry '结束循环
If ltfind = 0 Then '没有找到线型
ThisDrawing.Linetypes.Load "HIDDEN", "acadiso.lin" '加载线型
End If lay1.Linetype = "HIDDEN" '设置线型
ThisDrawing.ActiveLayer = lay1 '将当前图层设置为新建图层End If
End Sub
在寻找图时时我们用到for each……next 语句它的语法是这样的:For Each 变量 In
数组或集合对象……exit for ……next
变量它的作用是在数组或集合对象中进行循环,每循环一次,变量就成为数组或集合对象中的一个元素。本例在所有的图层对象中进行循环,每循环一次layo变量就代表一个图层在循环体中遇到exit
for 语句则退出循环,如果没有 exit for,循环将在所有的元素都操作一遍后结束。
If lay0.Name = "新建图层" Thenlay0.name代表这处图层的图层名
IIf(lay0.LayerOn = True, "打开",
"关闭")这是一个简单判断语句,语法如下:iif(判断表达式,返回值1,返回值2)当判断表达式成立,函数值=返回值1,如果表达式不成立,函数值=2
MsgBox(msgstr, 1)
Mgbox显示一个对话框,第一个参数是对话框显示的内容第二个参数可以控制对话框上的按钮。0
只有确认按钮1 确认、取消2 终止、重试、忽略3 是、否、取消4
是、否MsgBox获得值如下:确认:1取消:2终止:3重试:4忽略:5是:6否7初学者不需要死记硬背,能有所了解就行了
ACAD图层中最麻烦的就是线型问题了,本例先寻找一个HIDDEN线型,如果找不到就加载这个线型,用这条语句:ThisDrawing.Linetypes.Load
"HIDDEN", "acadiso.lin"
ThisDrawing.Linetypes.Load后需要两个参数,一个是线型的名称,另外一个是线型文件的名称。
其他课程回顾:
href="http://www.icad.com.cn/html/2005-4-25/2005425163833.asp"> color=#666666>Autocad VBA初级教程 (第一课:入门)
href="http://www.icad.com.cn/html/2005-4-25/2005425163954.asp"> color=#666666>Autocad VBA初级教程 (第二课 编程基础)
href="http://www.icad.com.cn/html/2005-4-26/2005426112553.asp"> color=#666666>Autocad VBA初级教程 (第三课 编程基础二)
href="http://www.icad.com.cn/html/2005-4-26/2005426112638.asp"> color=#666666>Autocad VBA初级教程 (第四课 程序的调试和保存)
href="http://www.icad.com.cn/html/2005-5-8/20055893119.asp"> color=#666666>Autocad VBA初级教程 (第五课 画函数曲线)
href="http://www.icad.com.cn/html/2005-5-8/20055893328.asp"> color=#666666>Autocad VBA初级教程 (第六课 数据类型的转换)
href="http://www.icad.com.cn/html/2005-5-9/200559102708.asp"> color=#666666>Autocad VBA初级教程 (第七课
写文字)站长致:
各位学习完以后,一定要去论坛顶帖,支持一下普老师(编辑:zhaozh)
if (window.print) {
document.write('【打印本文】 ');
}
// End -->
【 href="http://old.icad.com.cn/review/index.asp?article=2005530154133"
target=_blank>发表评论】【 href="javascript:window.close()"> color=#cc0000>关闭窗口】
上一篇: href="http://old.icad.com.cn/html/2005-5-30/2005530154041.asp"
target=_blank>[文章]Autocad VBA初级教程 (第七课 写文字)下一篇: href="http://old.icad.com.cn/html/2006-6-1/200661105959.asp"
target=_blank>[文章]CATIA车座设计中文教程(二)
src="CAD世界__Autocad VBA初级教程 (第八课图层操作).files/endA.js">