c++ - AutoCAD 实体可以序列化吗?

标签 c++ autocad objectarx

使用 ObjectARX (C++) for AutoCAD 2010,AutoCAD 实体可以序列化吗?

我们需要将序列化的实体保存在数据库(Oracle、PostgreSQL 等,不是 AcDbDatabase)的字段中。没关系,如果你告诉我如何将它们保存在磁盘中,就像这样:

AcDbEntity * entity;
...
std::ofstream ofs("c:\\filename.fil", std::ios::binary);
ofs.write((char *)(entity), sizeof(entity));
ofs.close();

谢谢

最佳答案

简短的回答是“不”。 AutoCAD 数据库对象包括对其他对象的引用,因此您不能在不确保所有引用对象都存在的情况下反序列化离散对象。

从技术上讲,您可以通过实现包含必要的对象间引用管理基础结构的自定义 AcDbDwgFiler,然后通过 AcDbObject::dwgOut() 将对象序列化到文件管理器并反序列化,从而为互连对象的整个层次结构完成您所描述的内容它们通过 AcDbObject::dwgIn()。但是,在将整个数据库序列化为 .dwg 文件时,您最终实际上是在重复 AutoCAD 已经完成的工作,因此在大多数情况下它达不到目的。

关于c++ - AutoCAD 实体可以序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12745478/

相关文章:

php - 各种文件类型、doc、dwg、图像的在线编辑器

c - strncmp 在 ObjectARX 2018 中不起作用

c++ - 这个预处理器指令在这里可以接受吗?

c++ - Visual C++ 10(又名 2010)与 Visual C++ 9(又名 2008)相比

c# - 应用程序处于中断模式。您的应用进入了中断状态,

android - 我们有什么解决方案可以在 Android 上读取和显示 Autocad DWG 文件?

c# - 设置 Visual Studio 2013 来开发 AutoCAD 2015 插件

c++ - 如何以编程方式 (C++) 检查 Windows 中 EXE 的代码签名日期?

c++ - 函数模板中的数组值类型推导