明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6276|回复: 3

[命令] 实现CAD中的purge命令清理块时遇到的问题(已解决-结贴)

[复制链接]
发表于 2011-7-24 18:20 | 显示全部楼层 |阅读模式
本帖最后由 chmenf087 于 2011-8-13 00:48 编辑

情况是这样的,不知道大家有没有这样的情况在重载drawJig类实现拖拽的时候如果打开捕捉那么Jig的对象会飘走(呃,这点先不谈)。所以我用entityJig把对象加入block用块来实现拖拽,但是问题出现了,我想用一个固定的块名(blockJig)来实现很多个块的拖拽,所以拖拽完成一次后我会用以下代码删除没有了引用的块(blockJig)
Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
            Dim ids As New ObjectIdCollection()
            Using trans As Transaction = db.TransactionManager.StartTransaction
                Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite, False, True)
                If bt.Has(blockName) = True Then
                    Try
                        ids.Add(bt(blockName))
                        db.Purge(ids)
                        trans.GetObject(ids(0), OpenMode.ForWrite, True, True).Erase(True)
                        trans.Commit()
                        Return True
                    Catch ex As Autodesk.AutoCAD.Runtime.Exception
                        trans.Dispose()
                        Return False
                    End Try
                Else : Return False
                    trans.Dispose()
                End If
            End Using

但是当我再次拖拽创建(blockJig)名称的块时候错误出现了错误描述是“eDuplicateObjectName”,呃,反正就是说这个块名被占用了,不能创建。忘了从神马地方看到的,块表记录删除后必须dispose 掉database对象然后重新打开才能更新块名,这个我就有点奇怪了那么cad中的Purge命令清理未引用的块表记录时是怎么处理的呢。我到底该怎么实现我想要的效果呢——(blockJig)多次使用。
  还有不知道为甚么有时候CAD的application.showmodellessdialog()显示不出窗体?
发表于 2011-7-26 20:41 | 显示全部楼层
ObjectArx的东西不要用Purge来清理,清理后经常会出错,版主们好像都说过这样的话!
 楼主| 发表于 2011-7-26 22:06 | 显示全部楼层
.net 的purge 是返回能被删除的ObjectID集合,然后用erase删除,不是CAD的purge命令
发表于 2018-5-5 13:04 | 显示全部楼层
顶一下,这个也许很多新人都会以为Purge()的参数是用来清理的id,而不是用来返回可清理的。
完整的说明应该是   Purge([In, Out])
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 01:22 , Processed in 0.261740 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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