明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4603|回复: 11

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

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

思路如内

1.首先用过滤器过滤出所有已插入到图形中的图块,并形成选择集。
2.遍历选择集中的图块,并通过图块的HasAttributes属性来判断图块中是否含有属性。
3.如果有属性,则通过GetAttributes方法来取得图块中所有的属性值。
4.使用For I = LBound(varAttributes) To UBound(varAttributes)可以循环属性值的每一属性来取得属性的标记及值。

这样可以编程了吧,思路是最重要的,有了思路,编程也简单。
 楼主| 发表于 2002-7-30 09:39:00 | 显示全部楼层

如何用过滤器并形成选择集啊?

首先多谢斑竹
但我不是很清楚如何用过滤器
请斑竹指点指点
谢谢
 楼主| 发表于 2002-7-30 11:03:00 | 显示全部楼层

虑镜的两个参数应该如何定义?

这样写行吗?
    FilterType = 62
    FilterData = 30
    Set sset = ThisDrawing.SelectionSets.Add("JJ")
    sset.SelectOnScreen FilterType, FilterData
它说我的定义有问题
发表于 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"

注意

 楼主| 发表于 2002-7-30 14:44:00 | 显示全部楼层

这函数应用在什么地方?

这函数作过滤器,是用在形成选择集之前还是形成之后再过虑啊?

能不能用vba提供的seclectonscreen([filtertype],[filterdata])方法
实现过虑和形成选择集的功能呢?
请斑竹指教
 楼主| 发表于 2002-7-30 15:17:00 | 显示全部楼层

如何才能不通过鼠标的选择就能自动选中所有对象,形成选择集?

 楼主| 发表于 2002-7-30 15:24:00 | 显示全部楼层

知道怎用了,但原来这种方法需要用鼠标在图上逐一选择对象再过虑

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

OK啦,感谢斑竹!

发表于 2002-7-31 12:51:00 | 显示全部楼层

推荐两个程序可以不需要有autocad软件,更不需要打开dwg文件,直接提取*.dwg图形文

推荐两个程序可以不需要有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

  ==========================
彭文波
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 18:53 , Processed in 0.211108 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表