|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Изменить цвет курсора
конструктор
Мос. область
Регистрация: 28.08.2003
Сообщений: 119
|
||
Просмотров: 31155
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
> Torino : надо постоянно писать и читать из реестра, ключ HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\<<Unnamed Profile>>\Drawing Window\XHairPickboxEtc значение цвета курсора (по-моему, там меняется). Проблема в том, что значение там вида REG_DWORD, что осложняет чтение и запись, да и методика хранения там... В общем, я пас.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Не, ни фига. Специально менял цвет, значения этого ключа менялись моментально. Логично предположить, что и обратное срабатывает. Только надо не забыть, что ключ надо формировать динамически, используя cprofile. Но это-то не особо тяжело.
Мне не очень нравится, что придется выполнять дополнительную обработку по переводу цветовых индексов када в формат значений, которые хранятся в реестре. А ведь слои могут иметь и True Color, и Color Book... Задачка усложняется. Да, и вот еще. Там REG_DWORD. Как туда записывать данные? Десятичным числом или шестнадцатиричным? Или и тем, и другим?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Не знаю, я сужу по тому, что видно через regedit на этот ключ по двойному щелчку.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Чуть подправив обсуждавшееся тут http://www.autocad.ru/cgi-bin/f1/board.cgi?t=5445Tm
получил: Код:
Код:
![]() |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Кстати, для того чтобы поменять цвет курсора, достаточно выражения типа:
Код:
PS/ Код:
интересно, между делом , сменить цвет курсора по OLE например на 0, он тогда сливается с фоном и его не видно вообще 8) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Странно, сейчас втупую скопировал код apel-ole-to-aci-color, запустил, все ок. Может, у тебя входящий параметр 0? От балды-то номер ole-цвета задавать нельзя...
Проверял, вызывая (apel-ole-to-aci-color 1250086)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
>kpblc
Дошло до меня наконец, этот список соответствий ACI to OLE не всегда попадает в цель при попытке найти ACI по OLE , (что у меня и происходило) , зато замечательно работает в обратную сторону! - что тут собсно и надо. Вот функция для задания курсору цвета текущего слоя (для автоматизации надо еще написать реактор на смену слоев - но тут я пас, нифига в реакторах не смыслю): Код:
|
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
>All
:? вот, тут такая дискуссия была....а я вперся, и всем не интересно что-ли стало? ![]() ладно , буду тут один выеживаться :roll: Вот вымучил реактор, чтобы все работало надо эту функцию добавить к тем что выше,и загрузить все это хозяйство. теперь после вызова функции Код:
Соответственно, можно все это дело пнуть в автозагрузку, и записать где нибудь (например acad.lsp) это же выражение Код:
PS/ Я в реакторах как свинья в апельсинах :shock: поэтому могут быть мааааленькие бяки, например, если уже есть реактор на изменение системных переменных.....или я че-то не догоняю, эй гуры, кто в теме, уважаемые - ау! Помогите советом! [sm804] Код:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Все конечно очень классно
Но вот беда, использую белый экран и по умолчанию в слое 0 стоит белый цвет и курсора не видно. С линиями все нормально Акад сам все делает -- если экран черный то линии белые если белый то линии черные а курср белый в любой ситуации. Сам я в программировании не силен так подскажите пожалуйста как сделать так чтобы при запуске Акада слой 0 по умолчанию имел черный цвет для всех шаблонов не только для Acadiso.dwt А вообще идея цвета курсора просто отличная вещь. Огромное спасибо Apelsinovу |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
> mmax : Попробуй засунуть в автозагрузку следующий лисп:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Всем привет!
Можно, я тоже одну мысль выскажу? :-) Вспоминаю, как в свое время мучительно "выеживался", играясь со цветом курсора. Было такое время, когда его ярко-белый цвет мне не нравился. Так вот, я так и не смог подобрать для себя его приемлимый цвет, поскольку цвет курсора вычитается из попадающих "под него" объектов. А поскольку у меня курсор 100%, то постоянно "пропадающие" или дико меняющие цвет ортогональные линии бесили просто ужасно... В итоге - вернулся к "классике"... Это так, подумалось просто. :-)
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
![]() |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Но скорее всего человек имел в виду вес курсора Это уже лучше Стоит ли открывать такую тему или здесь обсудим? |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
![]() Вообще с курсору можно задать цвет, можно изменить размер, наверное, но это все. Сделать с ним то, возможность чего не предусмотрели разработчики, нельзя. Можно наверное пойти другим путем, брать некий примитив, или набор, и таскать его за курсором, наложив на него. Вроде бы это возможно. Вот тут можно делать что угодно, и вес и тип и т.п. Но алгоритмов такого решения я не знаю. нужно грызть. |
|||
![]() |
|
||||
конструктор Регистрация: 28.08.2003
Мос. область
Сообщений: 119
|
А как Вам это?
;;------------------> Рисование пробных линий <--------- ;;------------------------------------------------------------------- (defun c:t_line (/ p1 p2 DS) (setq DS (getvar "dimscale") p1 (getpoint "\nspecify first point:") p2 (polar p1 0 (* ds 50.0)) ) (setvar "lwdisplay" 1) (command "line" p1 p2 "") (command "delay" 300) (command "erase" "single" "l") (command "delay" 300) (command "line" p1 p2 "") (command "delay" 300) (command "erase" "single" "l") (command "delay" 300) (command "line" p1 p2 "") (command "delay" 300) (command "erase" "single" "l") (command "line" p1) ) |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Вот и хорошо
Осталось добить последние косяки и багги Ну насколько я понимаю с цветом экрана ничего не выйдет ну да ладно. Косяк: Цвет слоя = 250 цвет курсора = 84,84,84 Не могли бы вы что нибудь сделать? Чтобы было Цвет слоя = 250 цвет курсора = 250 Я конечно понимаю что это для черного экрана так сделано, но как я уже говорил у меня экран уже несколько лет белый. От черного экрана глаза болят, а серенький курсор на белом тоже не очень В Лиспе я как Apelsinov в реакторах |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Взявшись за дело на свежую голову, внимательней вникнув и основательней потыкав, я-таки заставил эту штуку работать. Все оказалось просто: лиспы из #11 и 12 надо добавить в автозагрузку, а строку
Код:
Цитата:
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Сколько лет сколько зим.
Тоже когдато сильно захотел эту примочку. Все что представлено выше уже немного технически устарело. Если не ошибаюсь он использует 256 цветов, реактор не очень стабильный и модель & лист плоховато проработаны. Я сделал свой
Сделал очень давно и исходники к сожалению уже потерял. Распакуйте файлы из архива куда нибудь на пути поддержки При загрузке первым должен загрузиться LibFunctionsSamoCAD.fas. CursorColor=ClayerColor.VLX должен загрузиться вторым. Это связано с тем что реактор начинает немедленную работу и если он не найдет библиотечные функции то начнет вылетать. И ввиду того что реактор начинает мгновеннно работать при запуске AutoCAD. Рекомендуется подгружать их из функции s::startup |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
mmax, а чего только компилированный вариант предоставил?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Цитата:
Третий день активно работаю - не заметил никакой нестабильности в "устаревшей" версии, работает как часики. Вот только подсказал бы кто, как изменить код из #11, чтоб при выборе слоя с цветом №250 курсор бы тоже становился №250 - частенько приходиться пользовать этот цвет при работе по растру. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Если кто подскажет по какому принципу происходит инверсия для цветов отличных от черного и белого, попробую подправить. Например черный меняется на белый, белый на черный, а на какой менять например сине-зеленый какой-то (136-й)? А еще старый вариант не меняет цвет курсора если изменить цвет слоя не меняя самого текущего слоя Также у меня цвет слоя = 250 делает цвет курсора = 250. Нашел я исходники. Попробую опубликовать. Не спрашивайте у меня почему все так замудрено. Это связано с тем что здесь используется два реактора и в процессе инициализации AutoCAD происходит много всякого такого что заставило меня сделать именно так. Сначала грузятся библиотечные функции После библиотечных функций должен подгрузиться файл LayerColor-CursorColorReactorSamoCAD.lsp Код:
LayerColor-CursorColorSamoCAD.lsp подгружается предыдущим LayerColor-CursorColorReactorSamoCAD.lsp его в автозагрузку не надо Код:
Ну и собственно сами библиотечные функции которые должны загрузиться перед предыдущими лиспами: Боюсь что сюда они все не влезут, поэтому кладу их в архив. В этой библиотеке много лишних, не относящихся именно к этой программе функций, разберетесь сами где нужные где не нужные. Бибилиотека небольшая. Последний раз редактировалось mmax, 09.05.2009 в 16:53. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Слои такого цвета, коим окрашено мое рабочее пространство (цвет №136), я еще не встречал за свою, пускай недолгую, практику. Но для удовлетворения бушующего любопытства решаю проверить одну вещь. Ставлю цвет слоя соответствующим цвету моего рабочего пространства модели. И что вы думаете? Объекты и курсор становятся цветом заметно темнее рабочего пространства, не сливаются. Иду дальше - пробую те же телодвижения с другими цветами: 80, 74, 154... Начинает сливаться всё, курсора не видно, видны только объекты - чуууть темнее. На 125-м цвете снова не сливаются... Закономерность неясна, но ясно, что некоторые цвета инверсии не требуют.
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Извиняюсь за нескромность, но всетаки предлагаю использовать мой вариант. Он более современный и расширеный. А то что инверсии нет так это ничего страшного, навряд ли вы когда нибудь захотите использовать цвет слоя равный цвету экрана.
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Поставил. Действительно, всё так и есть - версия более современная и расширенная.
![]() Цитата:
![]() Я вот ненужные "книги из библиотеки", подчистил, прилагаю архив с необходимыми и достаточными файлами. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Ну а я в свою очередь, снова скажу спасибо, Apelsinov!!!,
Еще тогда 4 года назад он на этом форуме ответил на большинство моих вопросов про LISP. У меня тоже есть косячок. Я в те времена никак не мог разобраться как перевести цвета из RGB в OLE, и изобрел какойто очень странный способ перевода. Он правильный но очень громоздкий. Поэтому рекомендую заменить библиотечную функцию rgb->ole-samocad на Код:
счисления. Последний раз редактировалось mmax, 11.05.2009 в 16:07. |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
Для начала хочу поблагодарить mmax... Спасибо.
а теперь ложку дегтя... Не так давно вплотную работаю в автокаде, поэтому не ругайте сильно, если глупость спрошу... Вот взял лиспы, установил, на 2008 enu все вроде хорошо... цвет меняется... красота... но я много использую инструментальные палитры... Причем различные варианты блоков с вставкой в различные слои или в текущий слой... оказалось, что лиспы каким-то образом влияют на их вставку... я в лиспах не силен, тем более в таких замудренных... т.е. блоки не вставляются с палитры в слой отличный от текущего... в коммандной строке маячит: Точка вставки или [Базовая точка/Масштаб/X/Y/Z/ПОворот]: *Прервано* Если же блок вставляется в текущий слой - все идет на ура... Проверил на чистом автокаде без всяких обвесов... можно ли решить эту проблему ? Причем еще раз повторю, проблема возникает именно после загрузки выше указанных лиспов. Заранее благодарен всем за любую помощь. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Вот уже больше года прошло как я ушел из большого Автокада и за это время успел многое позабыть.
Объясни подробней как это вставить блок в слой отличный от текущего? Я так понимаю в блоке есть объекты имеющие слои не созданные в данном документе? А еще лучше абсолютно все подробно с файлом-примером с блоками и со слоями или без слоев |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
Спасибо, что откликнулся...
У кнопки палитры инструментов в свойствах можно задать всякие опции вставки блока... Одна из них - слой, на который блок будет размещен... т.е. у меня большинство блоков в нулевом слое сделаны... а уже в палитрах некоторые направляю в нужный слой. Возможно эти лиспы как-то блокируют эту "временную смену" слоя для вставки блока в нужный .... поэтому операция прерывается... Насчет примеров, я могу, но уже не сегодня, но проверил не один раз на разных блоках, разных чертежах... с надстройками типа СПДС и без ... только убираю лиспы из автозагрузки - все начинает работать... Благодарю за внимание и помощь... |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
я пока слабо разбираюсь, или совсем неразбираюсь в этих писулинах, ... куда мне использовать этот код, имея
LayerColor-CursorColorReactorSamoCAD.lsp LayerColor-CursorColorSamoCAD.lsp LibAcadObjectFunctionsSamoCAD.lsp LibColorFunctionsSamoCAD.lsp LibGetPutNameSamoCAD.lsp LibMathFunctionsSamoCAD.lsp LibOtherFunctionsSamoCAD.lsp LibRegistryFuntionsSamoCAD.lsp ? и еще вопрос не совсем в тему, но очень срочно нужно... <...> В отдельную тему /kpblc/ Последний раз редактировалось Кулик Алексей aka kpblc, 13.05.2010 в 21:45. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Как использовать лисп, опубликованный на форуме
Остальное - в отдельную тему.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
to gomer в твоем коде нет ничего нового и даже не правильно.
Цвет для ModelCrosshairColor нужно переводить не из RGB, а из BGR, тоесть зачемто нужно переворачивать TrueColor. Ну и по проблеме. Во время выполнения команды которая генерируется палитрой, текущий слой временно меняется на тот который задан в свойствах. Тоесть все логично - слой меняется и цвет курсора пытается стать равным цвету слоя прямо во время работы команды, но команда почемуто не хочет работать когда выполняются данные лиспы. Я попробую выяснить на каком этапе это происходит. Если окажется что вылет происходит именно во время смены цвета курсора то ничего сделать нельзя. |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
Кулик Алексей aka kpblc, я кое-как освоил как использовать выложенный код, тут вопрос в другом, что исходные 8 файлов, а куда тот, что предложил gomer, я не понял.
mmax, мне остается только ждать и надеяться... |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
К сожалению мне удалось выяснить что отмена происходит во время смены слоя в момент выполнения команды вставки блока. Так что в данном случае бессильны будут даже гуру.
Несовместимость называется. Поэтому могу предложить:
Если не разбираешься как грузить 8 файлов используй вариант, предложенный тут, там же инструкции: http://forum.dwg.ru/showpost.php?p=393497&postcount=26 Все что ниже этого поста исходники, предназначенные для программистов и ничего нового или представляющего интерес для непрограммиста в них нет. То что предложил gomer никуда не надо вставлять, такая функция там уже есть. Ну и еще у меня у самого будет вопрос к гуру: можно ли в лиспе определить, что в данный момент выполняется команда с таким то именем? напрмер в данном случае _executetool |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
Ну еще есть вариант... чтобы команды clcoloron и clcoloroff срабатывали вместе с открытием / закрытием палитры инструментов... или код проверял, открыта палитра или нет... не знаю насколько это реально сделать...
а насчет 8 лиспов - я же сделал, чтобы работали... но знания в этой области сияют пробелами... |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Все же рано оружие чехлить.
кажется я нашел очень неплохе решение нужно только время для его воплощения Уже потестил получается. Ждите выхода релиза Последний раз редактировалось mmax, 14.05.2010 в 11:13. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
>mmax: Еще раз проверил - работает функция нормально, цвет правильный выставляет))) (16.0)
>остальным: Да, не надо вставлять никуда... нового нет, не спорю, просто короче и понятней ![]() Еще не понятно, если текущий цвет не соответствует цвету текущего слоя... посмотрел, например на курсор, он синий, а линии красным рисуются, вот досада... Остается вопрос, заданный apelsinov: куда девать реактор системных переменных, если он уже загружен... После выгрузки реактора от mmax вообще ничего не останется... я так понимаю... Последний раз редактировалось gomer, 14.05.2010 в 16:25. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Ну вот собственно и все.
Просто скопируйте файлы из архива в папку установки Автокада. Ничего загружать не надо все само загрузится. Для загрузки используются файл acaddoc.lsp и в нем функция s::startup. Нужно учесть этот момент, если вы используете другие приложения. Исходники для програмистов: 1. Файл который должен загрузиться функцией s::startup Код:
Код:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Если вы заметили разницу в цветах слоя и курсора, это не ошибка, а так называемый баг Windows, монитора и видеокарты.
Напомню что разные люди воспринимают цвета по разному. Есть еще дальтоники. В данной ситуации программа не смотрит на цвет глазами, она оперирует их номерами, поэтому то что мы видим глазами программу не интересует. Для примера. Сделаем цвет слоя 52 Смотрим что цвет курсора визуально не равен цвету слоя. Слой имеет темный цвет то ли коричневый то ли зеленый (типа хаки), курсор при этом имеет яркий коричневый цвет почти желтый. [IMG]http://i069.***********/1005/7f/994baf3b221f.jpg[/IMG] Смотрим какой RGB у цвета 52 (получается 165 165 0): [IMG]http://s49.***********/i126/1005/b5/ec42fc345133.jpg[/IMG] идем уже в настройки рабочего пространства (там где цвет курсора руками меняется): [IMG]http://s48.***********/i120/1005/12/4b5b055b520b.jpg[/IMG] цвет курсора 52. Совпадает. Смотрим какой RGB у курсора получился: [IMG]http://s61.***********/i173/1005/f8/c99435630925.jpg[/IMG] Снова все совпадает, но визуально чувствуется разница. Программа тут ни при чем. Разница в цветах вас ждет даже если вы будете задавать вручную цвет курсора. Альбомами цветов программа не оперирует, но у каждого альбомного цвета есть аналог в RGB который берется за основу в программе. Цветов, которые визуально совпадают намного больше, чем тех которые не совпадают, даже если вы используете альбомные цвета, которыми программа не оперирует но преобразует правильно. Если в вашей коллекции слоев есть не совпадающие цвета, то придется вам их сменить. Последний раз редактировалось mmax, 16.05.2010 в 22:45. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
>mmax: наши функции делают одно и тоже, в чем ошибка? Превод цвета: 52->52... нормально? Откуда BGR не понимаю.
Цитата:
![]() ![]() ![]() ![]() |
|||
![]() |
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Кстати. Я тут подумал, да и gomer намекал на это дело, но я сначала не въехал о чем речь.
А не логичнее бы было сделать привязку цвета курсора вот к этой пнельке. Тогда цвет курсора будет равен цвету вновь рисуемых линий. [IMG]http://s51.***********/i133/1005/81/7d5e49365178.jpg[/IMG] Ну и соответственно в этой ситуации будет присутствовать частный случай когда цвет будет ПОСЛОЮ. to superkot007 ты сам ответил на свой вопрос. |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
mmax, если честно, такой вариант и мне приходил в голову, но потом решил, что когда цвет равет цвету слоя - тогда сразу видно, когда после каких либо действий начинаешь рисовать цветом не по слою... да и привыкаешь, к цвету прицела, если работаешь постоянно в одних и тех же слоях... и при попытке что-то рисануть в левом слое - сразу глаза режет... хотя может кому-то и пригодится...
|
|||
![]() |
|
||||
конструктор мебели Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27
|
>mmax, заметил такую вещь.
С использованием лиспа, который переносит размеры и прочее на соответствующий слой не очень корректно работает смена цвета курсора, точнее смена цвета происходит, но приходится два раза нажимать на соответствующую кнопку размера. То есть получается так. Код:
Ни у кого больше подобного не происходит? PS. AutoCAD 2011 ENG |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Я тут поправил пост 49, там рассказывается про визуальную разницу цветов. В Автокад 2011 с этим делом ситуация вообще аховая. Не смотря на то что цвета совпадают по номерам, у некоторых цветов визуальная разница просто огромная.
Цитата:
проверил иногда конфликтует. Надо разбираться. Плохо что нет стандартов на использование реакторов. Все их пользуют как хотят Последний раз редактировалось mmax, 17.05.2010 в 00:29. |
|||
![]() |
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
Тут такое дело... Выявился еще один неприятный момент... видима из той же оперы что и размеры у grachev.p При желании перетащить группу объектов или объект на неактивном слое за ручку и нажатии на пробел, чтобы активировать Перемещение... команда отменяется...
Автокад по прежнему 2008 рус |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Значит так.
Все команды прерываются если цвет курсора сменился прямо во время выполнения команды. Это может произойти если слой сменился во время работы команды. Некоторые команды в процессе своей работы временно меняют слой и восстанавливают предыдущий при завершении своей работы. В случае с перемещением можно что-то придумать, а вот в с размерами неизвестно. |
|||
![]() |
|
||||
конструктор мебели Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27
|
Цитата:
Хотя тоже не вариант, не все пользуются тем лиспом. |
|||
![]() |
|
||||
конструктор мебели Регистрация: 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,680
|
В продолжение темы, для полной красоты картины, к смене цвета курсора по цвету слоя хотелось бы добавить смену цвета динамической размерной линии (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,680
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По идее - только программно. Если лиспом, то vl-registry-read. Если через .NET, то опять же - Registry.ReadValue (точнее не скажу, пишу с планшета).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Не совсем правильно выразился. Не прочитать, а обновить значение надо. Читать пробовал и через vl-registry-read и через getenv. Читать-то оно читает, возвращает мне значение цвета в комстроку или в переменную записывает, а толку? Нить как была белой, так и остается. При перезагрузке ACAD значение в реестре меняется опять на "бело"
![]() |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
skkkk, очень редкая программа реагирует на изменения реестра, если вообще такие существуют. Не думаю, что автокад входит в их число.
К реестру вообще можно не цепляться. Забудь про него. Если мне не изменяет память, то цвет резиновой нити не меняется никогда и нигде. Нет в автокаде никаких опций менюшек настроек для смены цвета резиновой нити. Или я ошибаюсь? Это говорит о том, что разработчики забыли включить это свойство в объектную модель. Может им письмо написать? А пока мне кажется тут без дизассемблеров не обойтись |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Цитата:
![]() Цитата:
Код:
Код:
Если я создаю профиль "MyProfile2" с другим цветом нити и добавляю в твой код строки Код:
Цитата:
![]() В общем, я пока в тупике... Последний раз редактировалось skkkk, 17.01.2014 в 06:08. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
skkkk, ну вот смотри.
В автокаде есть так называемая объектная модель. Разработчики автокада разрешили нам простым смертным просматривать и изменять свойства объектов объектной модели. При этом они к одним разрешили, к каким-то запретили, а к каким-то забыли открыть доступ. Так вот. Есть значит у некоего объекта объектной модели свойство ModelCrosshairColor с которым мы можем делать всё что нам вздумается. А вот свойства ModelDynamicDimensionLineColor почему-то нету. Почему? Преднамеренно запретили? Случайно забыли? Лично я, да и не только я, могу сказать одно. Если нету значит нету и нет смысла искать пути решения которых не существует. Есть несколько выходов из данной ситуации: 1. Смириться 2. Завалить разработчиков автокада просьбами, а желательно требованиями, включения этих возможностей. При этом просьб и требований должно быть очень много потому, что ни одна коммерческая организация никогда не будет стараться угодить маленькой аудитории 3. Обратиться к программистам хакерам-ассемблерщикам. Они создадут приложение которое будет искать значение цвета резиновой нити в памяти приложения, в общем я даже сам не знаю чего они там смогут наворотить. Знаю одно - смогут, если захотят. |
|||
![]() |