明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1764|回复: 4

如何判断一个匿名块是否被删除

[复制链接]
发表于 2006-9-21 10:46:00 | 显示全部楼层 |阅读模式

问题背景:

       尺寸标注是以匿名块的形式存在的。根据标注的先后顺序CAD给每个标注一个识别代码(*D1、*D2、*D3...依次类推),当其中某个尺寸标注被删除后,在该DWG文件再次打开之前,一直都是能读取的(只保存不关闭,匿名块还是能读取到的),但在该DWG文件再次打开后,被删除的标注就不能读取到了。意思就是DWG文件在保存关闭的时候才把被删除的匿名块给过虑掉。

问题:

      CAD是如何判断匿名块被删除的呢?

      特请教高手,谢谢!!!

发表于 2006-9-21 13:22:00 | 显示全部楼层
这是ACAD本身内部系统的问题,并不需要你去了解。匿名块本身就这样的特性。
 楼主| 发表于 2006-9-21 17:43:00 | 显示全部楼层

我想了解问题的原因在于,最近我在做个小程序,给尺寸标注自动编号,编号能修改,而且随着尺寸的删除而删除,编号始终是连贯的,从1开始。。。中间某个编号被修改或删除,则编号自动调整。

在实现自动连续编号的过程中,我发现那些被删除的尺寸也添加上了编号,这是不应该出现的,我怎么查找这些已经被删除的标注块呢,应该有尺寸块删除标志的吧。

尝试了一些想法,还是没找出问题的关键。

老大们,有什么办法吗???

谢谢!!!

发表于 2006-9-21 21:54:00 | 显示全部楼层
对每个以*D开头的匿名块,用块名称查看图中是否存在块(选择集过滤)。如果没有,则说明该标注已经不存在。
 楼主| 发表于 2006-9-23 13:48:00 | 显示全部楼层

谢谢明总!

我试了下,还是搞不定,不知问题出在哪里,帮忙看看。

下面是模块里的代码:

Public Sub CreateSSetFilter(ByRef filterType As Variant, ByRef filterData As Variant, ParamArray filter())
    'MsgBox UBound(filter)
    If UBound(filter) Mod 2 = 0 Then
       MsgBox "filter参数无效!"
       Exit Sub
    End If
   
    Dim fType() As Integer
    Dim fData() As Variant
    Dim count As Integer
    count = (UBound(filter) + 1) / 2
    ReDim fType(count - 1)
    ReDim fData(count - 1)
   
    Dim i As Integer
    For i = 0 To count - 1
        fType(i) = filter(2 * i)
        fData(i) = filter(2 * i + 1)
    Next i
   
    filterType = fType
    filterData = fData
End Sub

下面是Thisdrawing中的代码:

Public Sub FilterSSet()
   
    On Error Resume Next
    Dim SSet As AcadSelectionSet
    If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then
       Set SSet = ThisDrawing.SelectionSets.Item("Example")
       SSet.Delete
    End If
   
    Set SSet = ThisDrawing.SelectionSets.Add("Example")
   
    Dim fType As Variant, fData As Variant
    Call CreateSSetFilter(fType, fData, 2, "*D*", 8, "0")
    SSet.Select acSelectionSetAll, , , fType, fData
   
    MsgBox SSet.count
   
    SSet.Delete
End Sub

 

测试结果 显示 为 0


 

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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