|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
конструктор мебели Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27
|
Спасибо!
Бегло потестировал. С размерами все путем. Курсор цвет не меняет на них, но это и не нужно. И еще одна особенность странная. При редактировании мультивыносок по двойному щелчку текст подсвечивается цветом текущего слоя. И это только на мультивыноске почему-то. С MTEXT, DTEXT, редактировании размеров подобного не проявляется. Но и это на работу не влияет. PS. В первой версии почему-то реакторы не удалялись из рисунка. Я в автозагрузку лисп не добавлял, но сегодня при открытии шаблона все равно происходила смена цвета курсора. Или это так и задумано? Последний раз редактировалось grachev.p, 18.05.2010 в 10:29. |
|||
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Релизкандидат-версия.
Все предыдущее удаляем, этот код либо в автозагрузку либо в (s::startup) Работают команды clcoloron clcoloroff Смена цвета курсора происходит только при переключении слоев и изменении цвета текущего слоя при работе с панелями инструментов "Слои" и работе Диспетчера свойств слоев, а так же с командами _-layer _layer '_layer При работе LISP-приложений или команд, изменяющих слои, смены цвета курсора не происходит. Так же автоматическая смена цвета не будет выполняться если цвет активного слоя меняется LISP-приложениями. Код:
замечено, что реактор команд реагирует на клики по панели и на операции в диспетчере свойств слоев, поэтому убраны все реакторы системных переменных а так же реакторы объектов контролирующие состояние активного слоя. Оставлен только один реактор команд который реагирует на событие :vlr-commandended, все другие события этого реактора вызывают конфликты с командами и LISP-приложениями от сторонних разработчиков. При щелканьи по панели слоев и окну диспетчера слоев выполняются команды _LAYER - при редактировании свойств слоя, _SETVAR - при смене слоя. Данное приложение реагирует только на эти команды. Вы можете добавить другие команды, на которые будет реагировать это приложение, в список команд (смотрите комментарии в коде). Ну и в заключение: Как выяснилось золотой середины тут нет. Даже этот код будет вызывать конфликты: 1. при выполнении некоторых LISP-приложений, которые выполняются во время работы команд автокада, в которых используются функции: (command "_LAYER" ..... (vl-cmdf "_LAYER" ..... Редко кто использует такой способ работы со слоями 2. цвет курсора не будет меняться если LISP-приложения меняют цвет слоя без использования command и vl-cmdf. В данной ситуации правильное LISP-приложение должно возвращать текущий слой на место после окончания своей работы. поэтому если вы пользуетесь правильными приложениями то сбой вам не грозит. Последний раз редактировалось mmax, 19.05.2010 в 12:27. Причина: Обновился код |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
В продолжение темы, для полной красоты картины, к смене цвета курсора по цвету слоя хотелось бы добавить смену цвета динамической размерной линии (dynamic dimension line), которую называют также "резиновой нитью" (rubber band). Тогда эта самая нить была бы тем же цветом, что и отрисовываемая, к примеру, полилиния.
Но кто подскажет, куда копать? В ActiveX такого свойства я найти так и не смог. Из похожего - только DimensionLineColor, но это о цвете размерных линий примитива "размер". В системных переменных - тоже тишина. Нашел ветку в реестре HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:419\Profiles\<<Unnamed Profile>>\Dynamic Dimension, но что с ней делать - не понимаю. mmax что-то давненько не появлялся... |
|||
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
По идее - только программно. Если лиспом, то vl-registry-read. Если через .NET, то опять же - Registry.ReadValue (точнее не скажу, пишу с планшета).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Не совсем правильно выразился. Не прочитать, а обновить значение надо. Читать пробовал и через vl-registry-read и через getenv. Читать-то оно читает, возвращает мне значение цвета в комстроку или в переменную записывает, а толку? Нить как была белой, так и остается. При перезагрузке ACAD значение в реестре меняется опять на "бело"
|
|||
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
skkkk, очень редкая программа реагирует на изменения реестра, если вообще такие существуют. Не думаю, что автокад входит в их число.
К реестру вообще можно не цепляться. Забудь про него. Если мне не изменяет память, то цвет резиновой нити не меняется никогда и нигде. Нет в автокаде никаких опций менюшек настроек для смены цвета резиновой нити. Или я ошибаюсь? Это говорит о том, что разработчики забыли включить это свойство в объектную модель. Может им письмо написать? А пока мне кажется тут без дизассемблеров не обойтись |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Цитата:
Код:
Код:
Если я создаю профиль "MyProfile2" с другим цветом нити и добавляю в твой код строки Код:
Цитата:
В общем, я пока в тупике... Последний раз редактировалось skkkk, 17.01.2014 в 06:08. |
|||
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
skkkk, ну вот смотри.
В автокаде есть так называемая объектная модель. Разработчики автокада разрешили нам простым смертным просматривать и изменять свойства объектов объектной модели. При этом они к одним разрешили, к каким-то запретили, а к каким-то забыли открыть доступ. Так вот. Есть значит у некоего объекта объектной модели свойство ModelCrosshairColor с которым мы можем делать всё что нам вздумается. А вот свойства ModelDynamicDimensionLineColor почему-то нету. Почему? Преднамеренно запретили? Случайно забыли? Лично я, да и не только я, могу сказать одно. Если нету значит нету и нет смысла искать пути решения которых не существует. Есть несколько выходов из данной ситуации: 1. Смириться 2. Завалить разработчиков автокада просьбами, а желательно требованиями, включения этих возможностей. При этом просьб и требований должно быть очень много потому, что ни одна коммерческая организация никогда не будет стараться угодить маленькой аудитории 3. Обратиться к программистам хакерам-ассемблерщикам. Они создадут приложение которое будет искать значение цвета резиновой нити в памяти приложения, в общем я даже сам не знаю чего они там смогут наворотить. Знаю одно - смогут, если захотят. |
|||