惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
博客园 - Franky
博客园_首页
T
Tailwind CSS Blog
雷峰网
雷峰网
罗磊的独立博客

博客园 - MichaeL

【转】单例模式的几种实现方式及其特点 Google Web Toolkit (GWT)是什么? 天下难事,必作于易;天下大事,必作于细。 [工具篇]eclipse 中设置 Java/JSP/JS/HTML/CSS 智能提示 [Liferay 学习笔记]PRUser 中的prUser.setGender("");方法找不到的原因 MessageFormat.format(arg0, arg1)的用途--多语处理 Eclipse Java 开发常见的虚拟内存设置及位置 用微软的Live Writer 离线编写 CNBLOG上的日志 [liferay 学习笔记]搭建liferay的开发环境 [Liferay 学习笔记]liferay portal 安装部署 单反全教程 [原创]HP DV2 1005AU 装机偶得 Ubuntu 8.04LTS 下中文输入法FCITX的安装与汉字显示方块的解决方法 [原创]偶遇Ubuntu 【原创】C#.Net中对中英文混排的字符串按照指定宽度截取排版 【原创】C#.Net 中枚举类型的数据在PropertyGrid控件中的显示中文描述 【原创】简单的XML文档读取与操作 【原创】实现Word模板文件中的BookMark允许多次填写修改(含代码) [原创]C#.Net 下的注册表操作(含代码)
【原创】从AutoCAD中提取明细栏和标题栏中的数据
MichaeL · 2008-07-23 · via 博客园 - MichaeL

AutoCAD中提取明细栏和标题栏中的数据

AutoCAD中的明细栏和标题栏通常是采用定义块然后添加相应的属性值。那么如何在AutoCAD中提取到这些属性值呢?下面是实现的方法(通过AutoCAD VBA实现的)。

  1. 获取当前Dwg文档中已定义的块

-block 命令查看用户定义的块。

VBA 代码实现。

Dim objBlock As AcadBlock

For i = 0 To ThisDrawing.Blocks.Count - 1

Set objBlock = ThisDrawing.Blocks.Item(i)

If objBlock.IsXRef = False And objBlock.IsLayout = False Then’用户定义的块

MsgBox objBlock.Name + " " + objBlock.ObjectName

End If

Next

  1. 获取块对应的属性值。

AutoCAD中,块属性值一般都是放在AcDbBlockReference类的对象中,该对象的Name表示他属于的块名称,GetAttributes方法返回对象的属性,其中包含值。因此,可以在整个模型空间中查找AcDbBlockReference类型的对象,然后根据名称来分类。VBA实现代码如下:

Dim tempCount As Integer

tempCount = ThisDrawing.ModelSpace.Count’得到模型空间中的所有对象个数

For i = 0 To tempCount - 1

Set curAcadObject = ThisDrawing.ModelSpace.Item(i)

If curAcadObject.ObjectName = "AcDbBlockReference" Then

Dim ss As AcadBlockReference

Set ss = curAcadObject

If ss.HasAttributes = True Then

Dim aa() As Object ‘存放属性的数组

aa = ss.GetAttributes()

Dim cc As Integer

Dim strr As String

Dim oo As AcadAttributeReference‘属性对象

strr = ""

For cc = LBound(aa) To UBound(aa)

Set oo = aa(cc)

strr = strr + oo.TagString + ":" + oo.TextString + vbCrLf

Next

MsgBox strr, vbDefaultButton1, curAcadObject.Name

End If

End If

Next