autocad .net 在不使用 ObjectId 的情况下存储和检索对象 Id

autocad .net storing and retrieving object Id without using ObjectId

我正在开发一个 autoCAD .net 项目,在该项目中我创建了一个 MVVM 模式 select 并修改了一个实体。我想将 selected 实体的 info/values 存储到视图模型中,更改 info/values (通过弹出的 WPF UI 以及我的代码)然后将更改应用于实体。

问题是:如果我想将更改应用到实体,我必须知道 "which" 实体将接收更改。因此,我想存储实体 ObjectId 并稍后在不使用 AutoCAD acdbmgd.dll 中的 ObjectId 结构的情况下检索它,因为这将使我的 UI 项目依赖于特定版本的 AutoCAD(是的,这是一个 REQ UI请注意,我的 UI 项目仅在 .net 框架上运行)。

有什么办法可以做到这一点吗?我打算将 objectId 存储在一个对象中,然后将其转换回 objecId 但它没有用。请帮忙。非常感谢。

您可以将句柄值存储为(长)而不是 ObjectId。检索实体时,您仍然需要将句柄值转换为 Autocad 句柄,但我看不出有什么方法可以避免这种情况

您可能知道也可能不知道,绘图中的每个实体都可以通过 3 种独特的方式检索:ObjectIDHandle 和实例指针。每次打开图形数据库时都会为每个实体创建对象 ID,因此它们只有在当前图形关闭之前是唯一的。一旦重新开启,所有的ObjectID都会完全不同。然而,句柄在会话之间持续存在,并且如 mavious 所述,可以转换为长和后。不确定您是否愿意在会话之间保留对实体的引用,但这至少可以解决您的数据类型问题。相信我,我完全理解您希望将 Autodesk 与您的主要装配体分开的愿望。 This post 将拥有您可能需要的所有信息。