Статьи > Опубликованные статьи
Как определить что свойства примитива изменены при помощи Панели Свойств?
Дмитрий Загорулькин:
Да, я посмотрел события через MGDDBG. При изменении свойства объекта блокировка документа меняется 8 раз:
--- Код: ---[Doc Mgr Event] : Document Lock Mode Will Change : Чертеж1.dwg
Global Command Name :
Current Mode : NotLocked
My Current Mode : NotLocked
My New Mode : ProtectedAutoWrite
[Doc Mgr Event] : Document Lock Mode Changed : Чертеж1.dwg
Global Command Name :
Current Mode : ProtectedAutoWrite
My Current Mode : NotLocked
My Previous Mode : ProtectedAutoWrite
Команда:
[Doc Mgr Event] : Document Lock Mode Will Change : Чертеж1.dwg
Global Command Name : PARTIALREGEN
Current Mode : NotLocked
My Current Mode : NotLocked
My New Mode : Write
[Doc Mgr Event] : Document Lock Mode Will Change : Чертеж1.dwg
Global Command Name : #
Current Mode : AutoWrite
My Current Mode : AutoWrite
My New Mode : NotLocked
[Doc Mgr Event] : Document Lock Mode Changed : Чертеж1.dwg
Global Command Name : #
Current Mode : NotLocked
My Current Mode : AutoWrite
My Previous Mode : NotLocked
[Doc Mgr Event] : Document Lock Mode Changed : Чертеж1.dwg
Global Command Name : PARTIALREGEN
Current Mode : Write
My Current Mode : NotLocked
My Previous Mode : Write
[Doc Mgr Event] : Document Lock Mode Will Change : Чертеж1.dwg
Global Command Name : #PARTIALREGEN
Current Mode : Write
My Current Mode : Write
My New Mode : NotLocked
[Doc Mgr Event] : Document Lock Mode Changed : Чертеж1.dwg
Global Command Name : #PARTIALREGEN
Current Mode : NotLocked
My Current Mode : Write
My Previous Mode : NotLocked
--- Конец кода ---
Тоже как-то громоздко для проверки.
Александр Ривилис:
А что ты скажешь на это:
--- Код - C# [Выбрать] ---using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.Internal.PropertyInspector; // This line is not mandatory, but improves loading performances[assembly: CommandClass(typeof(Rivilis.OPMReactors))] namespace Rivilis{ public class OPMReactors { [CommandMethod("OPMReactorsStart")] public void OPMReactorsStart() { Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) return; Editor ed = doc.Editor; PropertyInspectorEventManager pim = PropertyInspectorEventManager.Instance(); pim.propertyWillChange += propertyWillChange; pim.propertyChanged += propertyChanged; } [CommandMethod("OPMReactorsStop")] public void OPMReactorsStop() { PropertyInspectorEventManager pim = PropertyInspectorEventManager.Instance(); pim.propertyWillChange -= propertyWillChange; pim.propertyChanged -= propertyChanged; } private void propertyChanged(object sender, PropertyInspectorEventArgs e) { Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) return; Editor ed = doc.Editor; ed.WriteMessage("\npropertyChanged"); } private void propertyWillChange(object sender, PropertyInspectorEventArgs e) { Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) return; Editor ed = doc.Editor; ed.WriteMessage("\npropertyWillChanged"); } }}
Дмитрий Загорулькин:
Так ведь это как раз то, что нужно! Спасибо! :)
Александр Ривилис:
--- Цитата: Дмитрий Загорулькин от 10-12-2018, 18:22:41 ---Так ведь это как раз то, что нужно! Спасибо! :)
--- Конец цитаты ---
Надо будет опубликовать как статью. Я вижу что это должно работать как минимум с AutoCAD 2012.
Дмитрий Загорулькин:
Можно в эту же добавить - она уже давно должна быть проиндексирована всеми поисковиками.
Навигация
Перейти к полной версии