|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
17.05.2013, 15:33 | #1 | |
C#.NET. Переопределение ручек (Grip Overrule).
AutoCAD/Civil3D LISP/C#
Санкт-Петербург
Регистрация: 15.08.2008
Сообщений: 1,702
|
||
Просмотров: 5513
|
|
||||
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
|
Ага. Вначале инстанцируется для открытого документа, затем при обращении к GripVectorOverrule.theOverrule
Быстрое предположение, но что если заменить GripVectorOverrule.theOverrule на this? Непонятно, зачем здесь используется статическое свойство И ещё, для пущей удобочитаемости оборачивайте код в [ CODE ][ CPP ][ /CPP ][ /CODE ] (кнопка "C++"), пожалуйста Вообще, лучше вынести Overrule-зависимый код в отдельный класс, определить для него private поле в классе, где команда, ну а дальше уже поступать исходя из того, что требуется. Всё ИМХО
__________________
Алексей Последний раз редактировалось bargool, 17.05.2013 в 19:44. |
|||
|
||||
Вот и я предположил, что кто-то решил "почесать правое ухо левой пяткой". Уж очень какая-то замудреная конструкция получилась. Просто думал, мало ли, может в этом есть какой-то смысл, который мне пока неведом.
Попробую переделать по-человечески, спасибо! |
||||
|
||||
Получилось!
Некоторые выводы: 1. При запуске команды, создается объект - экземпляр класса, содержащего команду, путем вызова конструктора этого класса без параметров. В этот конструктор можно поместить методы, которые будут выполняться перед запуском команды. 2. Все статические данные этого класса будут общими для всего приложения, нестатические - только для документа, из которого запущена команда. А еще, похоже, что оверрулинг плохо дружит с вертикальными приложениями Отбой. Код определения геометрии ручек оказался косячный. Последний раз редактировалось Do$, 20.05.2013 в 02:18. |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
То ли я не понял, то-ли это немного не так - скорее у тебя перезаписывается класс при вызове команды, если создание объекта задать ДО CommandMethodAttribute, а из команды только использовать его методы (неважно статические или нет), то да - создастся он на момент 1 вызова (естественно если не включен в интерфес инициализации при загрузке), но будут они в любом документе (сессии). У меня, в большинстве случаев, все окна создаются 1 раз, а по закрытию прячутся до следующего вызова - и рабатают естественно до "конца" автокада.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||