乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 147|回复: 7

请教:如何一次把图中的图块的属性提取出来?

[复制链接]

8

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
48
发表于 2002-7-29 20:32:00 | 显示全部楼层 |阅读模式
假设图中有好几个块
能不能一步就把各块的属性逐一提取出来
请各大侠指教,谢谢!
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2002-7-29 22:03:00 | 显示全部楼层
1.首先用过滤器过滤出所有已插入到图形中的图块,并形成选择集。
2.遍历选择集中的图块,并通过图块的HasAttributes属性来判断图块中是否含有属性。
3.如果有属性,则通过GetAttributes方法来取得图块中所有的属性值。
4.使用For I = LBound(varAttributes) To UBound(varAttributes)可以循环属性值的每一属性来取得属性的标记及值。
这样可以编程了吧,思路是最重要的,有了思路,编程也简单。
回复

使用道具 举报

8

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
48
发表于 2002-7-30 09:39:00 | 显示全部楼层
首先多谢斑竹
但我不是很清楚如何用过滤器
请斑竹指点指点
谢谢
回复

使用道具 举报

8

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
48
发表于 2002-7-30 11:03:00 | 显示全部楼层
这样写行吗?
    FilterType = 62
    FilterData = 30
    Set sset = ThisDrawing.SelectionSets.Add("JJ")
    sset.SelectOnScreen FilterType, FilterData
它说我的定义有问题
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2002-7-30 12:50:00 | 显示全部楼层
用数组方式填充一对变量以用作为选择集过滤器使用

  

Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
    Dim fType() As Integer, fData()
    Dim index As Long, i As Long
   
    index = LBound(gCodes) - 1
        
    For i = LBound(gCodes) To UBound(gCodes) Step 2
        index = index + 1
        ReDim Preserve fType(0 To index)
        ReDim Preserve fData(0 To index)
        fType(index) = CInt(gCodes(i))
        fData(index) = gCodes(i + 1)
    Next
    typeArray = fType: dataArray = fData
End Sub

功能
用数组方式填充一对变量以用作为选择集过滤器使用
参数
两个变量(非变体数组)和一个无限制数量的组代码/值对
示例
BuildFilter fType, fData, 0, "LINE", 7, "WALLS"
注意
回复

使用道具 举报

8

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
48
发表于 2002-7-30 14:44:00 | 显示全部楼层
这函数作过滤器,是用在形成选择集之前还是形成之后再过虑啊?
能不能用vba提供的seclectonscreen([filtertype],[filterdata])方法
实现过虑和形成选择集的功能呢?
请斑竹指教
回复

使用道具 举报

8

主题

16

帖子

4

银币

初来乍到

Rank: 1

铜币
48
发表于 2002-7-30 15:24:00 | 显示全部楼层
可不可以不用鼠标点击
直接利用过滤器形成选择集
这样比较方便,
谢谢
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2002-7-31 12:51:00 | 显示全部楼层
推荐两个程序可以不需要有autocad软件,更不需要打开dwg文件,直接提取*.dwg图形文件明细表(块内属性)[br]在国外,有两个著名软件AttExt和Xtracta,可以不需要有autocad软件,更不需要打开dwg文件,在windows下运行程序直接提取*.dwg图形文件内的明细表(块内属性),1秒内可处理上千个autocad文件。如果用它来生成材料清单等。我使用下来,均非常实用。是autocad高级应用的首选工具。我现在把它们推荐给大家。(两个工具不可多得,但我认为其中AttExt程序更精练、功能更强一些)。
下载网址为:http://www.intelcad.com/pages/attext/index.htm和http://ic.net/~kusluski/
=======================
到BLITZ!公司主页www.intelcad.com下载http://www.intelcad.com/pages/attext/index.htm BLITZ!AttExt ver. 2.2.1.1版本.
Standalone tool (no AutoCAD needed) for extracting attribute and block insertion data from DWG files.
======================
到SkySof Software的主页http://download.com.com/3000-2064-10105899.html?tag=lst-0-11下载。
What can Xtracta do for me?
Xtracta allows you to extract block attribute values from AutoCAD drawings release 10 through 2000. These values can then be exported to a medium of your choice: file,Clipboard, MS Excel, or MS Access.
Frank Kusluski
c/o SkySof Software
402 Princeton Dr
South Lyon, Michigan  48178  USA
==========================
另外,还推荐本人编写的一个通用属性计算程序http://page.zsnet.com/~mccad/download/tools/attcal2000.zip
    在AutoCAD中常常需要设绘表格,例如有关数量、单价、总价的明细表,有关直径、流量、速度的管路标注。我们通常的做法是将明细表的一行或者一个管路标注作成一个块,将数量、单价、总价或直径、流量、速度定义成块中的属性。
毫无疑问,如果一个块中含有多个属性,并且其中一个属性的值与其它属性的值之间有代数关系,那么该属性的值就可以用程序来计算。最常见的应用是工程图纸明细表中根据单重栏、数量栏的内容来计算总重栏内容。在AutoCAD制图过程中我们发现采用程序计算表格属性非常受欢迎,但是每出现一种新的表格,就要重新编一次程序。为此,我决定编一个通用程序。
因为本程序是一个通用程序,它能自动识别和提取出块内的属性定义标签,故不局限于某一特定的块和特定的属性,因此,上述代数关系或称公式要由用户自己给出,并且给出的公式要符合LISP公式的语法(公式语法一点不难)。这是本程序的缺点,实际上也是它的优点和长处。
实际上对于某一具体的明细表,用户(或请人)只要编过一次公式,程序就会自动记录在AttCal.TXT文件中,一劳永逸,以后用户只要选择该公式即可。
本程序属AutoCAD的非初级应用,对用户的水平要求显高。但是,一般用户只要了解使用方法后,都能运用自如,感觉方便简单。
下载网址为:http://page.zsnet.com/~mccad/download/tools/attcal2000.zip
  ==========================
彭文波
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 06:49 , Processed in 0.185777 second(s), 68 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表