先简单介绍两条命令:

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后需要两个参数,一个是线型的名称,另外一个是线型文件的名称

cad vba 打开文件对话框_Autocad VBA初级教程 (第八课:图层操作)相关推荐

  1. cad vba 打开文件对话框_AutoCAD VBA选择文件夹的代码

    'AutoCAD VBA 选择文件夹的代码 ' 流沙之泉编写于 2018 年 11 月 30 日,于 AutoCAD2017 64 位上测试通过. ' 将此份文档另存为纯文本格式文件 MdFileBr ...

  2. cad vba 打开文件对话框_cad vba 打开文件对话框_CAD打开不了,显示文件缺失?老师傅教你1分钟搞定所有问题......

    作为一名设计狗,见CAD的时间比见任何人都多,而最扎心的事莫过于CAD出现大大小小的问题了.今天就列举CAD最容易出现的2个问题:「打开不了」和「显示文件缺失」,教教大家怎么解决. 一.CAD显示文件 ...

  3. cad vba 打开文件对话框_CAD文件损坏?无法打开?别急,这八种方法或许能帮到你...

    身为画图狗,加班画图不可怕,最怕加班画的图打不开,重头再画!为了提高出图率,为了工作量,重头再画是不可能的,这辈子都不可能的. 当然,就算要重头再来,也要先试试这八种修复方法,说不定就好了呢? 01命 ...

  4. cad vba 打开文件对话框_CAD每次打开系统都会新建一个Acad.vlx文件,如何解决呢?...

    最近的CAD每次打开系统都会新建一个Acad.vlx文件,为了保持桌面整洁,我每次打开一张图纸,都需要手动去删除这个文件, 现在给大家找到一个解决方式,如下 这个实际上不是Autodesk提供的Aut ...

  5. VBA 打开文件对话框

    Dim FilePath With Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False '能否复选 .Fi ...

  6. CorelDRAW VBA - 打开文件(另存为)对话框

    本文介绍在 CorelDRAW VBA中使用官方原生工具 CorelScriptTools 调用文件对话框,选择文件并获得文件路径的VBA代码.其提供的 GetFileBox 方法可用来打开文件对话框 ...

  7. JS实现HTML上用button打开文件对话框

    JS实现HTML上用button打开文件对话框 在HTML上有一button,点这个button的话,可以弹出文件选择的对话框,用ActiveX实现的,源码如下: Code  1<HTML> ...

  8. 如何找到文件的家-打开文件对话框openFileDialog

    private void button1_Click(object sender, EventArgs e){openFileDialog1.Filter = "*.txt|*.txt&qu ...

  9. vc 添加打开文件对话框并读取文件

    1.创建打开文件对话框:                                   CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对 ...

最新文章

  1. 用于道路目标检测的少镜头学习
  2. linux ugo 权限 ugo即user group other
  3. 关于showmodaldialog的问题处理
  4. NuStore使用说明
  5. html鼠标划过显示图片,jquery实现鼠标滑过小图查看大图的方法
  6. 程序员面试金典 - 面试题 17.26. 稀疏相似度(哈希map)
  7. iOS获取设备UUID和IDFA
  8. Windows RDP协议重大漏洞后发现黑客开始大规模扫瞄
  9. M3U8下载,直播源下载,FLASH下载(二)-ffmpeg安装手册(linux)
  10. 004. 看似“完美”的类目+属性
  11. ERP原理与应用名词解释
  12. Android实例(一)—— 3D画廊
  13. c语言程序设计教学工作总结,c语言教学的工作总结.docx
  14. 生成的html怎么做成桌面背景,定时改换图片的桌面背景 html页面
  15. Mac查看电池健康情况、电池损耗的方法
  16. ProxySQL+MGR实现读写分离和主节点故障无感知切换
  17. 二维码第三方支付介绍
  18. 二维数组的几种定义方法
  19. turlebot3 ROS相关求助
  20. AAC音频文件添加ADTS头

热门文章

  1. 如何打造个人技术影响力
  2. Java word和txt文件转换图片
  3. 2020中国5G发展及行业应用探索报告(上)|中国5G逆势发力,成为全球5G产业链重要力量,引领之势凸显...
  4. 中专一年级学计算机吗,中专一年级计算机专业语文试卷.doc
  5. 小米4 第三方re奇兔_小米、vivo、一加等宣布Android 11 beta版本适配计划
  6. tomcat四大容器
  7. 电子压力开关基本原理
  8. 数据库实验指导书+实验报告(2015)
  9. python3 elf文件解析
  10. 手机里的文件被覆盖如何恢复