跳到主要内容

使用 SOLIDWORKS API 在第三方存储中保存数据

第三方存储和第三方存储是外部应用程序(插件、宏、独立应用程序)用于在模型流中直接存储序列化数据的容器。

这种技术允许存储复杂的数据,并提供读写大量数据的最佳性能选项。

SOLIDWORKS 可以将数据存储在两个不同的容器中:

  • 存储(流)
  • 存储存储

如果将文件系统作为类比,存储将对应文件,而存储存储将对应文件夹。存储存储可以有子流或子存储。

下图解释了 SOLIDWORKS 模型存储的结构。红色元素表示由 SOLIDWORKS 直接管理的容器,而其他元素表示由第三方管理的容器。

文档存储图{ width=550 }

第三方存储

这是一个通过 IStream 接口管理的容器。当应用程序只需要存储单个数据结构(例如 XML 树、文本、图像、二进制数据)时,可以使用此选项。

为了获取流的指针(用于读取或写入),需要调用 IModelDoc2::IGet3rdPartyStorage SOLIDWORKS API 方法并传递相应的标志。

注意事项

生命周期

存储在 LoadFromStorage 通知和模型销毁之间可供读取。LoadFromStorageStore 可用于 partassemblydrawing

存储仅在 SaveToStorage 通知中可供写入。SaveToStorageStore 可用于 partassemblydrawing

第三方存储存储

这是一个通过 IStorage 接口管理的容器。当应用程序管理复杂的数据集并需要在特定时间访问某些部分时,可以使用此选项。存储容器允许创建子流和子存储以管理数据,并且只有在需要时才能访问特定的流,避免了将整个结构加载到内存中的需要。

要获取存储的指针,需要调用 IModelDocExtension::IGet3rdPartyStorageStore SOLIDWORKS API 方法。

注意事项

生命周期

存储在 LoadFromStorageStore 通知和模型销毁之间可供读取。LoadFromStorageStore 可用于 partassemblydrawing

存储仅在 SaveToStorageStore 通知中可供写入。SaveToStorageStore 可用于 partassemblydrawing

用法

通常,在添加功能(例如电气数据、PDM、安全性等)补充模型的插件中使用第三方容器(存储和存储)。在这种情况下,此附加信息通常显示在特征树、任务窗格等中,并在打开模型时加载,并与模型一起保存,使此方法成为完全集成的解决方案。

SOLIDWORKS API 通知 SaveToStorageSaveToStorageStore 直接在文件保存通知之后触发,这意味着无需实现自定义数据保存,因为它将通过用户保存自动触发。

最佳的附加保存和加载事件的位置应该在 DocumentLoadNotify 事件中。

当第三方数据被修改时(例如用户在第三方树中添加了新节点),建议通过 IModelDoc2::SetSaveFlag 将模型标记为脏,这表示模型需要由用户保存。

存储和流命名冲突

存储和存储通过相应的名称访问。不同的开发人员可能会对存储或存储使用相同的名称,这种情况下会发生冲突。当使用第三方容器时,建议通过 SOLIDWORKS API Support 注册存储或存储名称,并在这种情况下,此名称将被保留。

有关如何使用 SwEx.AddIn 框架访问第三方容器的信息,请参阅 在 SOLIDWORKS 模型中使用 SwEx.AddIn 框架存储第三方数据 文章。