先简单介绍两条命令:
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 If
Next 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 = "新建图层" Then
lay0.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后需要两个参数,一个是线型的名称,另外一个是线型文件的名称
相关文章
- 2021-08-30从零开始AutoCAD 2014中文版机械制图基础培训教程 [李
- 2021-08-30从零开始AutoCAD 2014中文版建筑制图基础培训教程 [朱
- 2021-08-30电气CAD实例教程AutoCAD 2010中文版 [左昉 等编著] 20
- 2021-08-30高等院校艺术设计案例教程中文版AutoCAD 建筑设计案例
- 2021-08-29机械AutoCAD 项目教程 第3版 [缪希伟 主编] 2012年PDF
- 2021-08-21AutoCAD 2013建筑设计与施工图绘制实例教程中文版 [麓
- 2021-08-21AutoCAD 2013机械绘图实例教程中文版 [陈志民 等编著]
- 2021-08-20AutoCAD 2011建筑制图案例教程中文版 [夏志新,沙新美,彭
- 2021-08-18天正TArch2013与AutoCAD 建筑制图实战教程 [景学红,耿
- 2021-08-18图形图像设计专家Maya金典案例教程PDF下载