明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3744|回复: 10

如何得到DWG中BlockReference的总数?

[复制链接]
发表于 2003-11-25 16:51:00 | 显示全部楼层 |阅读模式
请各位老大帮忙。
发表于 2003-11-25 17:05:00 | 显示全部楼层
  1. Sub k()
  2. Dim k As AcadEntity
  3. Dim i As Integer
  4. i = 0
  5. For Each k In ThisDrawing.ModelSpace
  6. If k.ObjectName = "AcDbBlockReference" Then
  7. i = i + 1
  8. End If
  9. Next
  10. MsgBox i
  11. End Sub

 楼主| 发表于 2003-11-25 17:08:00 | 显示全部楼层
这个方法我知道。但在我的程序中不方便使用,主要是效率的问题。因为我要将DWG中所有BlockReference的坐标,我需要将这些坐标保存在一个二维数组中。原本可以动态生成数组的,但由于COM之间传递数组的问题。所以需要事先知道BlockReference的总数。
发表于 2003-11-25 17:28:00 | 显示全部楼层
Public Function k()
  Dim ssetobj As AcadSelectionSet
  Set ssetobj = ThisDrawing.SelectionSets.Add("ss")

  Dim FType(0) As Integer
  Dim FData(0) As Variant
  FType(0) = 0
  FData(0) = "BlockRef"
  Dim FilterType As Variant
  Dim FilterData As Variant
  FilterType = FType
  FilterData = FData
  ssetobj.Select acSelectionSetAll, FilterType, FilterData
  k = ssetobj.Count
  MsgBox k
  ssetobj.Delete
  
End Function
发表于 2003-11-25 17:37:00 | 显示全部楼层
我这个和2楼的程序运行结果不一样,不知道怎么回事。
我自己的一个图纸中运行我的结果是:11077
而运行2楼的结果是:1074
有哪位能指点一下吗?
发表于 2003-11-25 18:05:00 | 显示全部楼层
呵呵,经efan指点发现是 ssetobj.Select acSelectionSetAll, , , FilterType, FilterData
的问题
  1. Public Function k()
  2.   Dim ssetobj As AcadSelectionSet
  3.   Set ssetobj = ThisDrawing.SelectionSets.Add("ss")
  4.   Dim FType(0) As Integer
  5.   Dim FData(0) As Variant
  6.   FType(0) = 0
  7.   FData(0) = "insert"
  8.   Dim FilterType As Variant
  9.   Dim FilterData As Variant
  10.   FilterType = FType
  11.   FilterData = FData
  12.   ssetobj.Select acSelectionSetAll, , , FilterType, FilterData
  13.   k = ssetobj.Count
  14.   MsgBox k
  15.   ssetobj.Delete
  16. End Function
发表于 2003-11-25 18:16:00 | 显示全部楼层
受教了。得多看看dxf参考才行。
 楼主| 发表于 2003-11-26 09:05:00 | 显示全部楼层
先谢谢各位。兄弟先试一下。
 楼主| 发表于 2003-11-26 10:35:00 | 显示全部楼层
可以了。谢谢。但还有一个问题。我想知道ssetobj.Select acSelectionSetAll, , , FilterType, FilterData中FilterType和FilterData这两个参数的取值范围是什么?为什么FilterType为0,FilterData为"insert"。在哪儿可以查到?谢谢。
发表于 2003-11-26 11:05:00 | 显示全部楼层
使用autocad自带的VBA帮助,
FilterType, FilterData的取值和参数说明可以看autocad中开发人员帮助中的DXF参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 22:43 , Processed in 0.196398 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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