乐筑天下

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

如何获取块在图中的实体?

[复制链接]

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2005-12-14 17:03:00 | 显示全部楼层 |阅读模式
我的意思是如果我已知块的名称为"ABC",想取得块ABC在图的实体,即想通块名称来删除图中该块实体图形.
我现在的一个方法如下,但我感觉不是太好太快,有没更好的呢?
    Dim n
    Dim sset As AcadSelectionSet
    n = SetForegroundWindow(aCADapp.hwnd)
    Set sset = aCADdoc.SelectionSets.Add("SelectText")
    sset.Clear
    Dim Filtertype(0) As Integer, Filterdata(0) As Variant, Mode As Variant
    Filtertype(0) = 0
    Filterdata(0) = "BLOCK"
    Mode = acSelectionSetAll
    sset.Select Mode, Filtertype, Filterdata
   
    Dim entry As AcadBlockReference
    For Each entry In sset
        If entry.Name = "ABC" Then entry.Delete
    Next entry
    sset.Delete
    Set sset = Nothing
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-12-14 17:31:00 | 显示全部楼层
建立块选择集,遍历选择集,如名称为"ABC",则删除
回复

使用道具 举报

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2005-12-14 17:33:00 | 显示全部楼层
有没有通过块名称得到该块实体的函数?
回复

使用道具 举报

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2005-12-14 17:41:00 | 显示全部楼层
另外还有一个问题是如何通VBA(或VB)删除块,我用myblock.Item(i).Delete提示无法用VBA删除块.????
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-12-14 17:46:00 | 显示全部楼层
RetVal = Document.Blocks.Item(Index)
Object
, ,
使用该方法的对象。
Index
Variant[变体]; 仅用于输入
要查询的集合成员项的索引位置。
索引必须为整数或字符串。如果为整数,索引必须在 0 和 N-1 间。这里 N 为集合或选择集的对象数量。
RetVal
Object[对象]
在集合或选择集中给定索引位置的对象。
虽然blocks集合继承Delete方法,用户仍然无法真正删除集合。 企图删除blocks集合会产生错误
说明
该方法支持使用字符串。例如,如果用以下语句创建了名称为 BLOCK1 的块:
Set block1 = Blocks.Add("BLOCK1")
则可通过以下语句引用该对象:
Set whichblock = Blocks.Item("BLOCK1")
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-12-14 17:49:00 | 显示全部楼层
参考
回复

使用道具 举报

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2005-12-15 11:25:00 | 显示全部楼层
&ltRE class=Code>回楼上的&ltRE class=Code>Set whichblock = Blocks.Item("BLOCK1")
只是得到块"BLOCK1",那么如何用它来得到该块在图中的实体(集)呢?&ltRE class=Code>即我想通过块获得块的具体在图中的实体,来将进行删除等操作.&ltRE class=Code>另外,如果该块的在图中的实体都已删除了,那么如何来删除该块呢?&ltRE class=Code>即类似于CAD命令中的PURGE.
回复

使用道具 举报

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2005-12-15 11:32:00 | 显示全部楼层
我现在是通过如下方法实现的,但感觉效率不是太高,有没有更好的方法呢?
Dim n
Dim sset As AcadSelectionSet
Dim RetVal As AcadBlock
    n = SetForegroundWindow(aCADapp.hwnd)
    Set sset = aCADdoc.SelectionSets.Add("SelectText")
    sset.Clear
    Dim Filtertype(0) As Integer, Filterdata(0) As Variant, Mode As Variant
    Filtertype(0) = 0
    Filterdata(0) = "BLOCK"
    Mode = acSelectionSetAll
    sset.Select Mode, Filtertype, Filterdata
   
    Dim entry As AcadBlockReference
    For Each entry In sset
        If entry.Name = "ABC" Then entry.Delete
    Next entry
    sset.Delete
    Set sset = Nothing

    Set RetVal = aCADdoc.Blocks.Item("ABC")
    RetVal.Delete
    Set RetVal = Nothing
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 00:19 , Processed in 0.643349 second(s), 68 queries .

© 2020-2025 乐筑天下

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