将 C# 对象存储到 AutoCAD 实体的 XRecord 中

Store a C# Object into an AutoCAD entity's XRecord

我正在尝试找到一种方法,将 C# class 作为 XRecord 存储到 AutoCAD 实体中。例如,我有以下 class:

public class ExampleClass
{
    private int x;
    private int y;

    public ExampleClass(int x, int y)
    {
         this.x = x;
         this.y = y;
    }

    #region Getters and Setters
}

我创建了一个实例:

ExampleClass objToStoreInXRecord = new ExampleClass(3, 5);

将其存储到 AutoCAD 实体(例如绘图中的一条线)的 XRecord 中的最佳方式是什么,以便我可以执行如下操作:

ExampleClass objRecoveredFromXRecord = GetXRecordFromEntity(Entity e)

其中 GetXRecordFromEntity(Entity e) 是我可以编写的一个辅助方法,它接受一个实体 e,获取我之前存储的对象的 XRecord,然后 returns 它。

我不太了解 XRecord 的工作原理以及 XRecord 与 AutoCAD 命名对象字典 (NOD) 的关系。 I've seen implementations 要存储在 XRecord 中的对象使用二进制格式化程序序列化,序列化数据存储在实体的 XRecord 中,但我正在寻找更好的方法。

序列化对象并将其添加到 xrecord。它完美运行。

AutoCAD 不支持使用 .NET 序列化,这意味着其他应用程序无法理解...

在 Autodesk 论坛上查看此讨论,它可能会阐明我的意思。此外,还有一小段代码。

http://forums.autodesk.com/t5/net/binary-serialization-to-xrecord/td-p/5601969