使用 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/