肥多 发表于 2002-7-29 20:32:00

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

假设图中有好几个块
能不能一步就把各块的属性逐一提取出来
请各大侠指教,谢谢!

mccad 发表于 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
它说我的定义有问题

mccad 发表于 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(,)方法
实现过虑和形成选择集的功能呢?
请斑竹指教

肥多 发表于 2002-7-30 15:17:00

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

肥多 发表于 2002-7-30 15:24:00

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

可不可以不用鼠标点击
直接利用过滤器形成选择集
这样比较方便,
谢谢

肥多 发表于 2002-7-30 16:10:00

OK啦,感谢斑竹!

pengwenbo 发表于 2002-7-31 12:51:00

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

推荐两个程序可以不需要有autocad软件,更不需要打开dwg文件,直接提取*.dwg图形文件明细表(块内属性)在国外,有两个著名软件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, Michigan48178USA
==========================

另外,还推荐本人编写的一个通用属性计算程序http://page.zsnet.com/~mccad/download/tools/attcal2000.zip

    在AutoCAD中常常需要设绘表格,例如有关数量、单价、总价的明细表,有关直径、流量、速度的管路标注。我们通常的做法是将明细表的一行或者一个管路标注作成一个块,将数量、单价、总价或直径、流量、速度定义成块中的属性。
毫无疑问,如果一个块中含有多个属性,并且其中一个属性的值与其它属性的值之间有代数关系,那么该属性的值就可以用程序来计算。最常见的应用是工程图纸明细表中根据单重栏、数量栏的内容来计算总重栏内容。在AutoCAD制图过程中我们发现采用程序计算表格属性非常受欢迎,但是每出现一种新的表格,就要重新编一次程序。为此,我决定编一个通用程序。
因为本程序是一个通用程序,它能自动识别和提取出块内的属性定义标签,故不局限于某一特定的块和特定的属性,因此,上述代数关系或称公式要由用户自己给出,并且给出的公式要符合LISP公式的语法(公式语法一点不难)。这是本程序的缺点,实际上也是它的优点和长处。
实际上对于某一具体的明细表,用户(或请人)只要编过一次公式,程序就会自动记录在AttCal.TXT文件中,一劳永逸,以后用户只要选择该公式即可。
本程序属AutoCAD的非初级应用,对用户的水平要求显高。但是,一般用户只要了解使用方法后,都能运用自如,感觉方便简单。

下载网址为:http://page.zsnet.com/~mccad/download/tools/attcal2000.zip

==========================
彭文波
页: [1] 2
查看完整版本: 请教:如何一次把图中的图块的属性提取出来?