LayerTableRecords显示使用过的图层
嗨,我发现从打开的图形和从辅助数据库读取图层表时,会得到不同的结果。当您读取一个打开图形的图层表时,您会得到所有图层,甚至是未使用的图层。但是,当您从辅助数据库读取图层表时,您只能获得已使用的图层。有人能证实这一点吗?(或者我做错了什么) Stephan 使用DocKock作为DocumentLock = Doc,LockDocument。。
使用db作为Database = Doc,数据库。
。
使用tr作为事务= db,transaction manager . start transaction()。
。
Dim lt As layer table = try cast(tr,GetObject(db,LayerTableId,OpenMode。ForRead)、LayerTable)。
。
对于lt中作为ObjectId的每个layerId 。
。
layer = TryCast(tr,GetObject(layerId,OpenMode。ForWrite)、LayerTableRecord)。
Edd,WriteMessage(层,名称&“在当前图形中找到”& vbCrLf)。
。
下一步。
。
trCommit()。
。
结束使用。
。
结束使用。
。
结束使用。
将DocKock用作DocumentLock = CurrentDoc,LockDocument。
。
SideDB =新数据库(False,True)。
SideDB,ReadDwgFile(ExistingFileName,FileOpenMode。OpenForReadAndWriteNoShare,False," " " 。
。
使用SideDB。
。
将图层调暗为LayerTableRecord。
使用tr作为Transaction = SideDB,transaction manager . start transaction()。
。
Dim lt As layer table = try cast(tr,GetObject(SideDB,LayerTableId,OpenMode。ForWrite)、LayerTable)。
。
对于lt中作为ObjectId的每个layerId 。
。
layer = TryCast(tr,GetObject(layerId,OpenMode。ForWrite)、LayerTableRecord)。
Edd,WriteMessage("分析图层:" & layer,姓名& vbCrLf)。
。
下一步。
。
trCommit()。
。
结束使用。
。
结束使用。
。
结束使用。
。
**** Hidden Message ***** 我已经更新了我以前的消息。阅读地板(关于Dispose&WorkingDatabase)。 我在#1文章中修复了一些错误:我消除了内存泄漏(我添加了用于数据库初始化的使用块)。此外,我还添加了RemoveTestDwg方法。
页:
[1]