|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Цвета перекрестия (курсора) где хранятся? (хочу менять программным способом)
Регистрация: 05.10.2008
Сообщений: 13
|
||
Просмотров: 16778
|
|
||||
Дизайнер-конструктор Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
![]() |
Изменить цвет курсора
Поиском не пользовался?
__________________
Kiev, Ukraine |
|||
![]() |
|
||||
Регистрация: 05.10.2008
Сообщений: 13
|
Не знаю, как другие, но я неоднократно ошибался при черчении – думая, что нахожусь в пространстве Листа, часто незаметно для самого себя попадал через Видовые экраны в пространство Модели (всего-то достаточно нечаянно сделать двойной клик левой кнопкой мышки в области Видового экрана). Оно, конечно, ACAD сигнализирует об этом событии сменой значка ПСК (в левом нижнем углу экрана), в области режимов [Лист] переключает на [Модель], но в большинстве случаев все эти «сигналы» остаются незамеченными и создаваемые примитивы оказываются «в действительности не там, где должны быть на самом деле» (т.е. не в Листе, а в Модели). Когда Видовой экран весь виден в рабочей области экрана, то «обрезание» перекрестия до границ этого Видового экрана «напоминает» о том, что «залетел» в пространство Модели (я работаю со 100% размерами перекрестия), но когда границы Видового экрана находятся за пределами рабочего поля экрана, то это не спасает, т.к. перекрестие занимает в этом случае всё рабочее поле.
Поэтому я предлагаю в качестве дополнительного «сигнала» об изменение пространства использовать цвет перекрестия. Для этого надо назначить разные цвета перекрестия для пространства Модели и для пространства Листа (например в Модели пусть будет зелёный, а в Листе – жёлтый: Сервис – Настройка – Экран - Цвета) и использовать Лисп-программку, которая будет отслеживать, где находится перекрестие и при необходимости менять его цвет. Программка меняет цвет перекрестия при событиях перехода «Лист – Видовой экран» и «Видовой экран – Лист» (при событиях перехода «Лист – Модель» и «Модель – Лист» цвет курсора меняет сам ACAD). Для отслеживания событий используется «реактор», отслеживающий изменение системных переменных ACAD. Значения цветов перекрестия для Листа и для Модели программка запоминает при инициализации (загрузке) и в дальнейшем использует эти значения, не отслеживая их возможные изменения со стороны пользователя (Сервис – Настройка – Экран – Цвета). Если пользователь изменил цвета перекрестия, то он должен заново загрузить программку (или просто вызвать nc_crosshair-color-init). Мне, честно говоря, лениво было напрягать «моск» для динамического отслеживания цветов во время сеанса редактирования чертежа, поскольку один раз выбрав цвета перекрестия, я уже не меняю их в дальнейшем. Код может и не оптимальный (надеюсь без особых ошибок), но работает. Может ещё кому-нибудь пригодиться. Код:
|
|||
![]() |
|
||||
Вообще в любой программе нестандартный курсор можно заменить своим, если заменить его в ресурсах программы, декомпилятором ресурсов, таким как XNResourceEditor или ResHacker, но это делать не следует по нескольким причинам:
|
||||
![]() |
|
||||
Регистрация: 05.10.2008
Сообщений: 13
|
В описанном мной случае другая ситуация, мне не требовалось изменить курсор в ACAD раз и навсегда. Мне хотелось чтобы он просто менял цвет, в зависимости от того, где находится - на Листе, или в Видовом экране. Разработчики ACAD почему-то не сообразили, что это может быть удобно.
![]() ----------------------------------------------------------------- К сожалению, в коде есть ошибка, если активен Видовой экран (цвет перекрестия как в Модели), то при переходе на Лист (не содержащий Видовых экранов) цвет перекрестия остаётся без изменения (т.е. как в Модели). ![]() ----------------------------------------------------------------- Нашёл. Я никак не ожидал, что при переходе с одного Листа на другой Лист (пусть даже если активен Видовой экран) следует анализировать изменение системной переменной TILEMODE. Вот исправленный код: Код:
Последний раз редактировалось Deglator, 30.07.2011 в 20:00. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Вода - моя работа Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638
|
Цитата:
__________________
Нерешаемых проблем не бывает. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цвета перекрестий, фона модели и листа и проч меняли еще здесь Цветовые схемы вкладки модель
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 05.10.2008
Сообщений: 13
|
to KronSerg
Нет, не проще. Если присвоить SPACESWITCH значение 0, то через Видовой экран в пространство Модели перейти невозможно. Это исключает случайное (непреднамеренное) попадание в пространство Модели когда находишься в пространстве Листа. Но ведь и преднамеренно попасть в пространство Модели из пространства Листа через Видовой экран не получится никак ![]() to VVA Спасибо. Лучше поздно, чем никогда. (с) |
|||
![]() |
|
||||
Вода - моя работа Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638
|
Очень даже возможно, любым способом кроме двойного клика мышью вполне можно пользоваться.
__________________
Нерешаемых проблем не бывает. |
|||
![]() |