Здравствуйте. В процессе написания плагин для AutoCAD столкнулся с небольшой проблемой.
Плагин позволяет изменять свойства графических примитивов и слоев, а также подсвечивать на чертеже объект, выбранный в диалоговом окне приложения-плагина. Проблема такова:
1. Выбираю элемент в treeView WPF-диалога
1. Задаю новые значения для примитивов в открытом WPF диалоге.
2. Нажимаю кнопку изменить объект
В результате свойства объекта изменяются, но пока я не уберу фокус с wpf-диалога и не установлю его на чертеж, эти изменения не видны. Возможно это связано с тем, что при редактировании элементов чертежа, я его блокирую. Однако какой-то отдельной команды для unlock я не нашел.
Привожу для примера метод, который позволяет мне выделить на чертеже элемент, который я выбрал в treeView в WPF-диалоге (проблема такая же, пока не сменю фокус на чертеж, объект не подсвечивается)
public static void HighlightObject(string id)
{
doc = Application.DocumentManager.MdiActiveDocument;
db = doc.Database;
using (doc.LockDocument())
{
using (trans = db.TransactionManager.StartOpenCloseTransaction())
{
PromptSelectionResult getSel = doc.Editor.SelectAll();
if (getSel.Status == PromptStatus.OK)
{
SelectionSet selSet = getSel.Value;
foreach (SelectedObject selObj in selSet)
{
var entity = trans.GetObject(selObj.ObjectId, OpenMode.ForWrite) as Entity;
if (entity != null && entity.Id.ToString() == id)
{
entity.Highlight();
}
else
{
if (entity != null) entity.Unhighlight();
}
}
}
trans.Commit();
}
}
}
В процессе поиска решения проблемы искал много документации, но, к сожалению, по данной проблеме ничего не нашел. Думаю, что лучший документацией в этом случае будет опыт. Буду благодарен за Вашу помощь.