GumbyCAD 发表于 2014-5-5 22:29:40

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 *****

GumbyCAD 发表于 2014-5-6 02:44:29

我已经更新了我以前的消息。阅读地板(关于Dispose&WorkingDatabase)。

GumbyCAD 发表于 2014-5-6 02:54:39

我在#1文章中修复了一些错误:我消除了内存泄漏(我添加了用于数据库初始化的使用块)。此外,我还添加了RemoveTestDwg方法。
页: [1]
查看完整版本: LayerTableRecords显示使用过的图层