先简单介绍两条命令:
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 '把当前图层设为已经存在的图层