在CAD中,对象上面不但可以存放扩展数据,还可以存放扩展记录,在对象上可创建一个字典(这个字典和前面说到的全局字典类似),字典中存放扩展记录,这样可以存放更多的数据,调用GetExtensionDictionary函数得到字典。
下面js代码演示如何读取对象扩展记录:
// 让用户在图上选择一个对象。 var ent = mxOcx.GetEntity("选择实体"); if (ent == null) return; // 得到实体扩展字典 var dict = ent.GetExtensionDictionary(); if (dict == null) return; // 得到字典下自己写数据的字典 var myDict = dict.GetAt("MyDict"); if (myDict == null) { return; } // 得到字典内扩展记录. var rec = myDict.GetAt("MyGlobalData"); if (rec == null) { return; } // 输出扩展记录中的数据. var data = rec.GetXRecordData(); data.PrintData();
下面js代码演示如何写入扩展记录:
// 让用户在图上选择一个对象。 var ent = mxOcx.GetEntity("选择实体"); if (ent == null) return; // 写扩展字典 var param = mxOcx.NewResbuf(); //创建扩展字典,如果对象已经有扩展字典,该函数什么都不做。 ent.SetProp("createExtensionDictionary", param); // 得到扩展字典 var dict = ent.GetExtensionDictionary(); if (dict == null) return; // 向扩展字典中增加一个自己的字典,用于写自己的数据. var myDict = dict.AddObject("MyDict", "McDbDictionary"); // 向字典中增加一个扩展记录。 var xRecord = myDict.AddXRecord("MyGlobalData"); if (xRecord == null) return; // 做准备写入的扩展记录数据. var xData2 = mxOcx.NewResbuf(); xData2.AddLong(99999); xData2.AddDouble(666); var ptTest = mxOcx.NewPoint(); ptTest.x = 77; ptTest.y = -100; xData2.AddPoint(ptTest); xData2.AddString("TestApp2"); // 写入数据. xRecord.SetXRecordData(xData2);
原文地址:https://www.cnblogs.com/yzy0224/p/12016481.html
时间: 2024-12-11 05:37:47