Здравствуйте!
При попытке добавить запись в Extension Dictionary полилинии - код отрабатывает без ошибок, но запись не появляется!
Такое поведение замечено только при установленном SPDS Extension в версиях AutoCAD 2018-2019.
Без СПДС всё работает как надо.
Вот простой пример:
[Rt.CommandMethod("TEST")]
public static void Test()
{
Ed.Editor ed = cad.DocumentManager.MdiActiveDocument.Editor;
Ed.PromptEntityResult result = ed.GetEntity("\nВыберите объект:");
if (result.Status != Ed.PromptStatus.OK)
return;
SaveTxtToCADEntity("testText", result.ObjectId);
}
protected static void SaveTxtToCADEntity(string text, Db.ObjectId id)
{
Ap.Document dwg = cad.DocumentManager.MdiActiveDocument;
using (Ap.DocumentLock doclock = dwg.LockDocument())
{
using (Db.Transaction tr = dwg.Database.TransactionManager.StartTransaction())
{
try
{
// Открываем объект на запись
Db.Entity ent = (Db.Entity)tr.GetObject(id, Db.OpenMode.ForWrite, false, true);
if (ent.ExtensionDictionary.IsNull)
ent.CreateExtensionDictionary(); // Cоздаём, если нету
// Открываем ExtensionDictionary для записи
Db.DBDictionary extensionDict =
(Db.DBDictionary)tr.GetObject(ent.ExtensionDictionary, Db.OpenMode.ForWrite, false, true);
// Если запись уже есть - удаляем
if (extensionDict.Contains("TESTXRECORD"))
extensionDict.Remove("TESTXRECORD");
// Создаём новую Xrecord
Db.Xrecord newXrecord = new Db.Xrecord();
newXrecord.Data = new Db.ResultBuffer(
new Db.TypedValue((int)Db.DxfCode.Text, text));
// Создаём запись в ExtensionDictionary.
extensionDict.SetAt("TESTXRECORD", newXrecord);
// Сообщим транзакции о новом объекте Xrecord для его «автозакрытия»
tr.AddNewlyCreatedDBObject(newXrecord, true);
tr.Commit(); // Завершим транзакцию
}
catch (Rt.Exception ex)
{
dwg.Editor.WriteMessage(Environment.NewLine + ex.Message);
}
finally
{
tr.Dispose();
}
}
}
}
Чертим отрезок, полилинию и круг.
Вызываем команду "TEST" на всех трех объектах и в ArxDbg видим, что тестовая запись есть только в словарях отрезка и круга. Словарь полилинии
пустой.
Я использую LWPOLYLINE, на других не проверял.
Это баг SPDS Extension или я что-то делаю не так?