Перейти к содержимому

Как изменить цвет курсора в автокаде

  • автор:

Как поменять цвет фона в AutoCAD?

По умолчанию, в AutoCAD настроен темно-серый цвет фона, чтобы изменить его, читайте нашу маленькую инструкцию:

1) Щелкните ПКМ (Правой Кнопкой Мыши) в любом свободном месте графической зоны программы и выберите пункт «Параметры» (это самый быстрый способ зайти в глобальные настройки AutoCAD).

autocad как зайти в параметры программы

2) В открывшемся окне перейдите на вкладку «Экран» (если Вы не видите ее, то используйте стрелки расположенные справа) и нажмите на кнопку «Цвета».

autocad настройка вкладка

3) Откроется окно «Цветовая гамма окна чертежа», в нем:
слева — выбор пространства для настройки (нас интересует «Пространство 2D-модели),
по центру — элемент интерфейса этого пространства (выбираем «Однородный фон»),
справа — цвет выбранного элемента интерфейса — просто выбираем из списка нужный цвет или нажимаем «Другие цвета», чтобы открылась палитра с большим количеством доступных цветов.

autocad настраиваем цвета элементов интерфейса

4) В окне выбора цвета переходим в на вкладку «Номера цветов» и выбираем любой понравившийся цвет и жмем «Ок».

autocad выбираем цвет фона

Тут стоит сделать небольшое отступление.
Всех пользователей программы AutoCAD можно разделить на две большие группы: любители работать на темном фоне и любители работать на светлом фоне. Лично я отношусь ко второй категории. На мой взгляд использование темного или черного фона нисколько не уменьшает нагрузку на Ваши глаза (основной аргумент его сторонников). Скорее наоборот — очень небольшое количество цветов будут контрастны к черному фону, Вам придется использовать «кислотные» фиолетовые, салатовые и бирюзовые линии, чтобы хоть что-то различить на экране. К тому же, все черные линии будут отображаться на экране как белые. Вам будет тяжело представить как будет выглядеть Ваш чертеж при печати (особенно цветной). Я бы сравнил это с ездой по ночному городу — темное окружение и бьющие по глазам яркие пятна от фар встречных машин. Мои глаза устают от такой нагрузки очень быстро. Тем не менее, ставить в качестве фона белый цвет, на мой взгляд, тоже не очень разумно — он очень яркий и длительная работа на таком ярком фоне будет негативно сказываться на Вашем зрении (и мониторе). Лично я выбрал для себя светло-серый цвет фона — цвет номер 254. И за те 10 лет, что я работаю в программе (в среднем, по 5-8 часов в день) мне удалось сохранить прекрасное зрение. К тому же, мне очень нравится возможность использовать в своих чертежах глубокие насыщенные цвета — синий, красный, черный и т.п.

5) Если на предыдущем шаге Вы выбрали в качество фонового какой-то светлый цвет, следует так же изменить цвет элементов «Перекрестье» и «Управление видовыми экранами» — лучше всего на какой-то темный (например, темно-синий или черный). После этого можно нажать «Принять» и посмотреть на результат. Если версия Вашей программы ниже 2015, имеет смысл также изменить цвет элемента интерфейса «Динамическая размерная линия» — лучше всего на какой-то яркий (например, оранжевый или синий), т.к. по умолчанию он серый и может сливаться с фоном)

меняем цвет перекрестья

Если вы захотите сделать светлым не только фон, но и основные элементы интерфейса (лента, строка состояния), то выберите «Светлую» цветовую схему:

autocad изменяем цвет ленты

В AutoCAD 2015 это будет выглядеть вот так:

autocad светлый цвет ленты

Но лично мне больше по душе темный вариант ленты и панелей.

Спасибо за внимание. Теперь Вы всегда сможете легко и быстро изменить цвет фона и ленты при необходимости. Советую попробовать поработать как на светлом, так и на темном фоне и выбрать наиболее удобный вариант.

Изменить цвет курсора

Возможно ли курсору присвоить цвет текущего слоя? Это было бы удобно! Не нужно лишний раз переводить глаза на окошко слоев.
В опциях цвет курсора менять можно, но переменной такой, к сожалению, нет.

Просмотров: 30038
Регистрация: 21.08.2003
Сообщений: 943

>>nikolaev
Интересная мысль!
Можно например повесить реактор на изменение текущего слоя.
А в функцию отклика добавить изменение цвета курсора.

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

> Torino : надо постоянно писать и читать из реестра, ключ HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\>\Drawing Window\XHairPickboxEtc значение цвета курсора (по-моему, там меняется). Проблема в том, что значение там вида REG_DWORD, что осложняет чтение и запись, да и методика хранения там. В общем, я пас.

__________________
Моя библиотека lisp-функций

Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Регистрация: 21.03.2005
Сообщений: 1,559
Думается мне из реестра автокад его читает только 1 раз за сеанс, при старте

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

Не, ни фига. Специально менял цвет, значения этого ключа менялись моментально. Логично предположить, что и обратное срабатывает. Только надо не забыть, что ключ надо формировать динамически, используя cprofile. Но это-то не особо тяжело.
Мне не очень нравится, что придется выполнять дополнительную обработку по переводу цветовых индексов када в формат значений, которые хранятся в реестре. А ведь слои могут иметь и True Color, и Color Book. Задачка усложняется.
Да, и вот еще. Там REG_DWORD. Как туда записывать данные? Десятичным числом или шестнадцатиричным? Или и тем, и другим?

__________________
Моя библиотека lisp-функций

Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Регистрация: 26.05.2004
Сообщений: 1,911
REG_DWORD вроде всю жисть было HEX

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656
Не знаю, я сужу по тому, что видно через regedit на этот ключ по двойному щелчку.

__________________
Моя библиотека lisp-функций

Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186
Чуть подправив обсуждавшееся тут http://www.autocad.ru/cgi-bin/f1/board.cgi?t=5445Tm
получил:

;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--- ;;; Функция извлечения цвета курсора пространства модели 5 февраля 2003 ;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--- ;;; Функция возвращает цвет курсора в соответствии с заданным параметром flag ;;; flag может иметь значения "OLE" или "ACI" ;;; Вызов: ;;; (apel-cursor-get_color "OLE") или (apel-cursor-get_color "ACI") ;;; Возврат: ;;; целое число - цвет Windows (OLE) или AutoCAD Color Index (ACI) (defun APEL-CURSOR-GET_COLOR (flag / var_color OLE_color) (setq var_color (vla-get-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) ) ) (setq OLE_color (vlax-variant-value (vlax-variant-change-type var_color vlax-vblong) ) ) (if (= flag "ACI") (APEL-OLE-TO-ACI-COLOR OLE_color) OLE_color ) )

Однако, функция преобразования «OLE» в «ACI» , названная тут APEL-OLE-TO-ACI-COLOR , и взятая оттуда-же, у меня не работает, и возвращает 0.

;;; Функция преобразования номера цвета из OLE в ACI 5 февраля 2003 ;;; kos & ShaggyDoc (скопировано с sw-OLE-to-ACI-color) ;;; Функция преобразует заданный целым аргументом OLE_color номер цвета Windows в номер ACI ;;; (AutoCAD Color Index) ;;; Вызов: ;;; (APEL-OLE-TO-ACI-COLOR 12345678) ;;; Возврат: ;;; целое число (defun APEL-OLE-TO-ACI-COLOR (OLE_color / result) (if (not (setq result (vl-position OLE_color '(0 255 65535 65280 16776960 16711680 16711935 16777215 8421504 12632256 255 8421631 166 5460902 128 4210816 76 2500172 38 1250086 16639 8429567 10662 5466278 8320 4214912 4940 2502732 2598 1251366 33023 8437759 21414 5471398 16512 4219008 9804 2505036 4902 1252646 49151 8445951 31910 5476774 24704 4223104 14668 2507596 7462 1253670 65535 8454143 42662 5482150 32896 4227200 19532 2509900 9766 1254950 65471 8454111 42620 5482129 32864 4227184 19513 2509891 9757 1254945 65408 8454079 42579 5482108 32832 4227168 19494 2509881 9747 1254941 65344 8454047 42537 5482088 32800 4227152 19475 2509872 9738 1254936 65280 8454016 42496 5482067 32768 4227136 19456 2509862 9728 1254931 4259584 10485632 2729472 6858323 2129920 5275712 1264640 3165222 665088 1582611 8453888 12582784 5481984 8169043 4227072 6324288 2509824 3755046 1254912 1910291 12582656 14679936 8168960 9545299 6324224 7372864 3755008 4410406 1910272 2172435 16776960 16777088 10921472 10921555 8421376 8421440 5000192 5000230 2500096 2500115 16760576 16768896 10910720 10916179 8413184 8417344 4995328 4997926 2497792 2498835 16744448 16760704 10900224 10910803 8404992 8413248 4990464 4995366 2495232 2497811 16728064 16752512 10889472 10905683 8396800 8409152 4985600 4993062 2492928 2496531 16711680 16744576 10878976 10900307 8388608 8405056 4980736 4990502 2490368 2495251 16711744 16744607 10879017 10900328 8388640 8405072 4980755 4990512 2490378 2495256 16711808 16744639 10879059 10900348 8388672 8405088 4980774 4990521 2490387 2495261 16711871 16744671 10879100 10900369 8388704 8405104 4980793 4990531 2490397 2495265 16711935 16744703 10879142 10900390 8388736 8405120 4980812 4990540 2490406 2495270 12517631 14647551 8126630 9524134 6291584 7356544 3735628 4400716 1900582 2167590 8388863 12550399 5439654 8147878 4194432 6307968 2490444 3745356 1245222 1905446 4194559 10453247 2687142 6837158 2097280 5259392 1245260 3155532 655398 1577766 5526612 7763574 10000536 12303291 14540253 16777215 ) ) ) ) (setq result 0) ) result )

Так что, обломс!

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186

Кстати, для того чтобы поменять цвет курсора, достаточно выражения типа:

(vla-put-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) 65343 )

где 65343 — номер цвета в «OLE». Но чтобы как-то управлять этим надо знать соответствия «OLE» и «ACI», что у меня и не получается с помощью лиспа от kos.

(defun APEL-ACAD_APPLICATION () (if (null *apel_acad_application*) (setq *apel_acad_application* (vlax-get-acad-object)) *apel_acad_application* ) )

PPS/
интересно, между делом , сменить цвет курсора по OLE например на 0, он тогда сливается с фоном и его не видно вообще 8)

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

Странно, сейчас втупую скопировал код apel-ole-to-aci-color, запустил, все ок. Может, у тебя входящий параметр 0? От балды-то номер ole-цвета задавать нельзя.
Проверял, вызывая (apel-ole-to-aci-color 1250086)

__________________
Моя библиотека lisp-функций

Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186

>kpblc
Дошло до меня наконец, этот список соответствий ACI to OLE не всегда попадает в цель при попытке найти ACI по OLE , (что у меня и происходило) , зато замечательно работает в обратную сторону! — что тут собсно и надо.
Вот функция для задания курсору цвета текущего слоя (для автоматизации надо еще написать реактор на смену слоев — но тут я пас, нифига в реакторах не смыслю):

;;;Функция присвоения курсору цвета по цвету текущего слоя ;;;Apelsinov ;;;14.07.05 (defun APEL-CURSOR-COLOR_BY_CURRENT_LAYER () (APEL-CURSOR-PUT_COLOR (vla-get-color (vla-get-activelayer (APEL-ACTIVE_DOCUMENT))) ) ) ;(APEL-CURSOR-COLOR_BY_CURRENT_LAYER) ;;;Присвоение курсору цвета ;;;Apelsinov ;;;14.07.05 ;;;ACI_color - цвет из 256 по ACI (defun APEL-CURSOR-PUT_COLOR (ACI_color /) (vla-put-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) (APEL-ACI-TO-OLE-COLOR ACI_color) ) ) ;;; Функция преобразования номера цвета из OLE в ACI ;;;Apelsinov ;;;14.07.05 (defun APEL-ACI-TO-OLE-COLOR (ACI_color /) (nth ACI_color '(0 255 65535 65280 16776960 16711680 16711935 16777215 8421504 12632256 255 8421631 166 5460902 128 4210816 76 2500172 38 1250086 16639 8429567 10662 5466278 8320 4214912 4940 2502732 2598 1251366 33023 8437759 21414 5471398 16512 4219008 9804 2505036 4902 1252646 49151 8445951 31910 5476774 24704 4223104 14668 2507596 7462 1253670 65535 8454143 42662 5482150 32896 4227200 19532 2509900 9766 1254950 65471 8454111 42620 5482129 32864 4227184 19513 2509891 9757 1254945 65408 8454079 42579 5482108 32832 4227168 19494 2509881 9747 1254941 65344 8454047 42537 5482088 32800 4227152 19475 2509872 9738 1254936 65280 8454016 42496 5482067 32768 4227136 19456 2509862 9728 1254931 4259584 10485632 2729472 6858323 2129920 5275712 1264640 3165222 665088 1582611 8453888 12582784 5481984 8169043 4227072 6324288 2509824 3755046 1254912 1910291 12582656 14679936 8168960 9545299 6324224 7372864 3755008 4410406 1910272 2172435 16776960 16777088 10921472 10921555 8421376 8421440 5000192 5000230 2500096 2500115 16760576 16768896 10910720 10916179 8413184 8417344 4995328 4997926 2497792 2498835 16744448 16760704 10900224 10910803 8404992 8413248 4990464 4995366 2495232 2497811 16728064 16752512 10889472 10905683 8396800 8409152 4985600 4993062 2492928 2496531 16711680 16744576 10878976 10900307 8388608 8405056 4980736 4990502 2490368 2495251 16711744 16744607 10879017 10900328 8388640 8405072 4980755 4990512 2490378 2495256 16711808 16744639 10879059 10900348 8388672 8405088 4980774 4990521 2490387 2495261 16711871 16744671 10879100 10900369 8388704 8405104 4980793 4990531 2490397 2495265 16711935 16744703 10879142 10900390 8388736 8405120 4980812 4990540 2490406 2495270 12517631 14647551 8126630 9524134 6291584 7356544 3735628 4400716 1900582 2167590 8388863 12550399 5439654 8147878 4194432 6307968 2490444 3745356 1245222 1905446 4194559 10453247 2687142 6837158 2097280 5259392 1245260 3155532 655398 1577766 5526612 7763574 10000536 12303291 14540253 16777215 ) ) ) ;;;Apelsinov ;;;13.05.05 (defun APEL-ACAD_APPLICATION () (if (null *apel_acad_application*) (setq *apel_acad_application* (vlax-get-acad-object)) *apel_acad_application* ) ) ;;;Apelsinov ;;;18.05.05 (defun APEL-ACTIVE_DOCUMENT () (if (null *apel_active_document*) (setq *apel_active_document* (vla-get-activedocument (APEL-ACAD_APPLICATION) ) ) *apel_active_document* ) )

Цвета перекрестия (курсора) где хранятся? (хочу менять программным способом)

Хочу менять программным способом цвет курсора (перекрестия), в зависимости от ситуации и режима работы. Но не нашел, где хранятся (в какой системной переменной) значения его цветов (для пространства модели и пространства листа).
Для его размеров нашёл системную переменную CURSORSIZE, а вот для цветов — нет .
Искал в справке, искал «тупо в лоб» прямым просмотром системных переменных AutoCAD, но всё без толку.
Если кто знает, подскажите, пожалуйста.

P.S. Как «врукопашную» менять знаю: Сервис —> Настройка —> Экран —> Цвета.

Просмотров: 13548
Регистрация: 29.10.2004
Сообщений: 16,310

системных переменных нет.
следует открыть настройки-экран-цвет и там выбрать перекрестье в одном из пространств

Регистрация: 29.05.2004
Сообщений: 1,185
Изменить цвет курсора
Поиском не пользовался?
__________________
Kiev, Ukraine
Регистрация: 05.10.2008
Сообщений: 13

sasha_lif
Пользовался, но неудачно, попадались темы, где обсуждалось как сменить врукопашную или кому какие цвета курсора, фона и т.п. нравятся.
За ссылку большое спасибо, выручили.

Регистрация: 05.10.2008
Сообщений: 13

Не знаю, как другие, но я неоднократно ошибался при черчении – думая, что нахожусь в пространстве Листа, часто незаметно для самого себя попадал через Видовые экраны в пространство Модели (всего-то достаточно нечаянно сделать двойной клик левой кнопкой мышки в области Видового экрана). Оно, конечно, ACAD сигнализирует об этом событии сменой значка ПСК (в левом нижнем углу экрана), в области режимов [Лист] переключает на [Модель], но в большинстве случаев все эти «сигналы» остаются незамеченными и создаваемые примитивы оказываются «в действительности не там, где должны быть на самом деле» (т.е. не в Листе, а в Модели). Когда Видовой экран весь виден в рабочей области экрана, то «обрезание» перекрестия до границ этого Видового экрана «напоминает» о том, что «залетел» в пространство Модели (я работаю со 100% размерами перекрестия), но когда границы Видового экрана находятся за пределами рабочего поля экрана, то это не спасает, т.к. перекрестие занимает в этом случае всё рабочее поле.

Поэтому я предлагаю в качестве дополнительного «сигнала» об изменение пространства использовать цвет перекрестия . Для этого надо назначить разные цвета перекрестия для пространства Модели и для пространства Листа (например в Модели пусть будет зелёный, а в Листе – жёлтый: Сервис – Настройка – Экран — Цвета) и использовать Лисп-программку, которая будет отслеживать, где находится перекрестие и при необходимости менять его цвет. Программка меняет цвет перекрестия при событиях перехода «Лист – Видовой экран» и «Видовой экран – Лист» (при событиях перехода «Лист – Модель» и «Модель – Лист» цвет курсора меняет сам ACAD). Для отслеживания событий используется «реактор», отслеживающий изменение системных переменных ACAD. Значения цветов перекрестия для Листа и для Модели программка запоминает при инициализации (загрузке) и в дальнейшем использует эти значения, не отслеживая их возможные изменения со стороны пользователя (Сервис – Настройка – Экран – Цвета). Если пользователь изменил цвета перекрестия, то он должен заново загрузить программку (или просто вызвать nc_crosshair-color-init). Мне, честно говоря, лениво было напрягать «моск» для динамического отслеживания цветов во время сеанса редактирования чертежа, поскольку один раз выбрав цвета перекрестия, я уже не меняю их в дальнейшем. Код может и не оптимальный (надеюсь без особых ошибок), но работает. Может ещё кому-нибудь пригодиться.

 
(vl-load-com) (setq NC_ACAD_APP (vlax-get-acad-object)) ;процедура запоминает цвета перекрестия в пространстве Модели и в пространстве Листа в глобальных переменных (defun nc_crosshair-color-init () (setq NC_CROSSHAIR-COLOR-MODEL (vla-get-modelcrosshaircolor (vla-get-display (vla-get-preferences NC_ACAD_APP))) NC_CROSSHAIR-COLOR-LAYOUT (vla-get-layoutcrosshaircolor (vla-get-display (vla-get-preferences NC_ACAD_APP))) NC_CROSSHAIR-COLOR-LAYOUT-IS-CHANGE nil ) (princ) ) ;процедура назначает цвет перекрестия в зависимости от того. где оказались в видовом экране или на листе (defun nc_crosshair-color-set () (if (and (/= NC_CROSSHAIR-COLOR-MODEL NC_CROSSHAIR-COLOR-LAYOUT) (nc_is-layout)) (progn (if (nc_is-vport) (if (not NC_CROSSHAIR-COLOR-LAYOUT-IS-CHANGE) (progn (vla-put-layoutcrosshaircolor (vla-get-display (vla-get-preferences NC_ACAD_APP)) NC_CROSSHAIR-COLOR-MODEL) (setq NC_CROSSHAIR-COLOR-LAYOUT-IS-CHANGE T) )) (if NC_CROSSHAIR-COLOR-LAYOUT-IS-CHANGE (progn (vla-put-layoutcrosshaircolor (vla-get-display (vla-get-preferences NC_ACAD_APP)) NC_CROSSHAIR-COLOR-LAYOUT) (setq NC_CROSSHAIR-COLOR-LAYOUT-IS-CHANGE nil) )) ) )) (princ) ) ;функция возвращает T если находимся в пространстве листа, иначе - nil (defun nc_is-layout () (= (getvar "TILEMODE") 0)) ;функция возвращает T если находимся в видовом экране, иначе - nil (defun nc_is-vport () (and (nc_is-layout) (/= (caar (vports)) 1))) ;процедура вызывеается реактором при изменении системной переменной (defun nc_sys-var-changed (reac args / s_var is_change) (setq s_var (car args) is_change (cadr args)) (if (and is_change (= s_var "CVPORT")) (nc_crosshair-color-set)) (princ) ) ;инициализация переменных цветов перекрестия (nc_crosshair-color-init) ;если реактор изменения системных переменных существует, то "похерем" его (на всякий случай, вдруг он неправильный) (if NC_MYSYSVARREACTOR (progn (setq NC_MYSYSVARREACTOR nil) (vlr-remove-all :vlr-SysVar-reactor) )) ;а если не существует, то создадим его (if (null NC_MYSYSVARREACTOR) (setq NC_MYSYSVARREACTOR (vlr-SysVar-Reactor nil (list '(:vlr-SysVarChanged . nc_sys-var-changed))) ) )

Изменить цвет курсора

Возможно ли курсору присвоить цвет текущего слоя? Это было бы удобно! Не нужно лишний раз переводить глаза на окошко слоев.
В опциях цвет курсора менять можно, но переменной такой, к сожалению, нет.

Просмотров: 30038
Регистрация: 21.08.2003
Сообщений: 943

>>nikolaev
Интересная мысль!
Можно например повесить реактор на изменение текущего слоя.
А в функцию отклика добавить изменение цвета курсора.

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

> Torino : надо постоянно писать и читать из реестра, ключ HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.1\ACAD-301:409\Profiles\>\Drawing Window\XHairPickboxEtc значение цвета курсора (по-моему, там меняется). Проблема в том, что значение там вида REG_DWORD, что осложняет чтение и запись, да и методика хранения там. В общем, я пас.

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Регистрация: 21.03.2005
Сообщений: 1,559
Думается мне из реестра автокад его читает только 1 раз за сеанс, при старте

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

Не, ни фига. Специально менял цвет, значения этого ключа менялись моментально. Логично предположить, что и обратное срабатывает. Только надо не забыть, что ключ надо формировать динамически, используя cprofile. Но это-то не особо тяжело.
Мне не очень нравится, что придется выполнять дополнительную обработку по переводу цветовых индексов када в формат значений, которые хранятся в реестре. А ведь слои могут иметь и True Color, и Color Book. Задачка усложняется.
Да, и вот еще. Там REG_DWORD. Как туда записывать данные? Десятичным числом или шестнадцатиричным? Или и тем, и другим?

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Регистрация: 26.05.2004
Сообщений: 1,911
REG_DWORD вроде всю жисть было HEX

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656
Не знаю, я сужу по тому, что видно через regedit на этот ключ по двойному щелчку.

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186
Чуть подправив обсуждавшееся тут http://www.autocad.ru/cgi-bin/f1/board.cgi?t=5445Tm
получил:

;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--- ;;; Функция извлечения цвета курсора пространства модели 5 февраля 2003 ;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--- ;;; Функция возвращает цвет курсора в соответствии с заданным параметром flag ;;; flag может иметь значения "OLE" или "ACI" ;;; Вызов: ;;; (apel-cursor-get_color "OLE") или (apel-cursor-get_color "ACI") ;;; Возврат: ;;; целое число - цвет Windows (OLE) или AutoCAD Color Index (ACI) (defun APEL-CURSOR-GET_COLOR (flag / var_color OLE_color) (setq var_color (vla-get-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) ) ) (setq OLE_color (vlax-variant-value (vlax-variant-change-type var_color vlax-vblong) ) ) (if (= flag "ACI") (APEL-OLE-TO-ACI-COLOR OLE_color) OLE_color ) )

Однако, функция преобразования "OLE" в "ACI" , названная тут APEL-OLE-TO-ACI-COLOR , и взятая оттуда-же, у меня не работает, и возвращает 0.

;;; Функция преобразования номера цвета из OLE в ACI 5 февраля 2003 ;;; kos & ShaggyDoc (скопировано с sw-OLE-to-ACI-color) ;;; Функция преобразует заданный целым аргументом OLE_color номер цвета Windows в номер ACI ;;; (AutoCAD Color Index) ;;; Вызов: ;;; (APEL-OLE-TO-ACI-COLOR 12345678) ;;; Возврат: ;;; целое число (defun APEL-OLE-TO-ACI-COLOR (OLE_color / result) (if (not (setq result (vl-position OLE_color '(0 255 65535 65280 16776960 16711680 16711935 16777215 8421504 12632256 255 8421631 166 5460902 128 4210816 76 2500172 38 1250086 16639 8429567 10662 5466278 8320 4214912 4940 2502732 2598 1251366 33023 8437759 21414 5471398 16512 4219008 9804 2505036 4902 1252646 49151 8445951 31910 5476774 24704 4223104 14668 2507596 7462 1253670 65535 8454143 42662 5482150 32896 4227200 19532 2509900 9766 1254950 65471 8454111 42620 5482129 32864 4227184 19513 2509891 9757 1254945 65408 8454079 42579 5482108 32832 4227168 19494 2509881 9747 1254941 65344 8454047 42537 5482088 32800 4227152 19475 2509872 9738 1254936 65280 8454016 42496 5482067 32768 4227136 19456 2509862 9728 1254931 4259584 10485632 2729472 6858323 2129920 5275712 1264640 3165222 665088 1582611 8453888 12582784 5481984 8169043 4227072 6324288 2509824 3755046 1254912 1910291 12582656 14679936 8168960 9545299 6324224 7372864 3755008 4410406 1910272 2172435 16776960 16777088 10921472 10921555 8421376 8421440 5000192 5000230 2500096 2500115 16760576 16768896 10910720 10916179 8413184 8417344 4995328 4997926 2497792 2498835 16744448 16760704 10900224 10910803 8404992 8413248 4990464 4995366 2495232 2497811 16728064 16752512 10889472 10905683 8396800 8409152 4985600 4993062 2492928 2496531 16711680 16744576 10878976 10900307 8388608 8405056 4980736 4990502 2490368 2495251 16711744 16744607 10879017 10900328 8388640 8405072 4980755 4990512 2490378 2495256 16711808 16744639 10879059 10900348 8388672 8405088 4980774 4990521 2490387 2495261 16711871 16744671 10879100 10900369 8388704 8405104 4980793 4990531 2490397 2495265 16711935 16744703 10879142 10900390 8388736 8405120 4980812 4990540 2490406 2495270 12517631 14647551 8126630 9524134 6291584 7356544 3735628 4400716 1900582 2167590 8388863 12550399 5439654 8147878 4194432 6307968 2490444 3745356 1245222 1905446 4194559 10453247 2687142 6837158 2097280 5259392 1245260 3155532 655398 1577766 5526612 7763574 10000536 12303291 14540253 16777215 ) ) ) ) (setq result 0) ) result )

Так что, обломс!

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186

Кстати, для того чтобы поменять цвет курсора, достаточно выражения типа:

(vla-put-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) 65343 )

где 65343 - номер цвета в "OLE". Но чтобы как-то управлять этим надо знать соответствия "OLE" и "ACI", что у меня и не получается с помощью лиспа от kos.

(defun APEL-ACAD_APPLICATION () (if (null *apel_acad_application*) (setq *apel_acad_application* (vlax-get-acad-object)) *apel_acad_application* ) )

PPS/
интересно, между делом , сменить цвет курсора по OLE например на 0, он тогда сливается с фоном и его не видно вообще 8)

LISP, C# (ACAD 200[9,12,13,14])

Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,656

Странно, сейчас втупую скопировал код apel-ole-to-aci-color, запустил, все ок. Может, у тебя входящий параметр 0? От балды-то номер ole-цвета задавать нельзя.
Проверял, вызывая (apel-ole-to-aci-color 1250086)

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Кулик Алексей aka kpblc
Посмотреть профиль
Посетить домашнюю страницу Кулик Алексей aka kpblc
Найти ещё сообщения от Кулик Алексей aka kpblc

Проектировщик ВК. LISP-любитель.

Регистрация: 15.12.2003
Сообщений: 1,186

>kpblc
Дошло до меня наконец, этот список соответствий ACI to OLE не всегда попадает в цель при попытке найти ACI по OLE , (что у меня и происходило) , зато замечательно работает в обратную сторону! - что тут собсно и надо.
Вот функция для задания курсору цвета текущего слоя (для автоматизации надо еще написать реактор на смену слоев - но тут я пас, нифига в реакторах не смыслю):

;;;Функция присвоения курсору цвета по цвету текущего слоя ;;;Apelsinov ;;;14.07.05 (defun APEL-CURSOR-COLOR_BY_CURRENT_LAYER () (APEL-CURSOR-PUT_COLOR (vla-get-color (vla-get-activelayer (APEL-ACTIVE_DOCUMENT))) ) ) ;(APEL-CURSOR-COLOR_BY_CURRENT_LAYER) ;;;Присвоение курсору цвета ;;;Apelsinov ;;;14.07.05 ;;;ACI_color - цвет из 256 по ACI (defun APEL-CURSOR-PUT_COLOR (ACI_color /) (vla-put-modelcrosshaircolor (vla-get-display (vla-get-preferences (APEL-ACAD_APPLICATION)) ) (APEL-ACI-TO-OLE-COLOR ACI_color) ) ) ;;; Функция преобразования номера цвета из OLE в ACI ;;;Apelsinov ;;;14.07.05 (defun APEL-ACI-TO-OLE-COLOR (ACI_color /) (nth ACI_color '(0 255 65535 65280 16776960 16711680 16711935 16777215 8421504 12632256 255 8421631 166 5460902 128 4210816 76 2500172 38 1250086 16639 8429567 10662 5466278 8320 4214912 4940 2502732 2598 1251366 33023 8437759 21414 5471398 16512 4219008 9804 2505036 4902 1252646 49151 8445951 31910 5476774 24704 4223104 14668 2507596 7462 1253670 65535 8454143 42662 5482150 32896 4227200 19532 2509900 9766 1254950 65471 8454111 42620 5482129 32864 4227184 19513 2509891 9757 1254945 65408 8454079 42579 5482108 32832 4227168 19494 2509881 9747 1254941 65344 8454047 42537 5482088 32800 4227152 19475 2509872 9738 1254936 65280 8454016 42496 5482067 32768 4227136 19456 2509862 9728 1254931 4259584 10485632 2729472 6858323 2129920 5275712 1264640 3165222 665088 1582611 8453888 12582784 5481984 8169043 4227072 6324288 2509824 3755046 1254912 1910291 12582656 14679936 8168960 9545299 6324224 7372864 3755008 4410406 1910272 2172435 16776960 16777088 10921472 10921555 8421376 8421440 5000192 5000230 2500096 2500115 16760576 16768896 10910720 10916179 8413184 8417344 4995328 4997926 2497792 2498835 16744448 16760704 10900224 10910803 8404992 8413248 4990464 4995366 2495232 2497811 16728064 16752512 10889472 10905683 8396800 8409152 4985600 4993062 2492928 2496531 16711680 16744576 10878976 10900307 8388608 8405056 4980736 4990502 2490368 2495251 16711744 16744607 10879017 10900328 8388640 8405072 4980755 4990512 2490378 2495256 16711808 16744639 10879059 10900348 8388672 8405088 4980774 4990521 2490387 2495261 16711871 16744671 10879100 10900369 8388704 8405104 4980793 4990531 2490397 2495265 16711935 16744703 10879142 10900390 8388736 8405120 4980812 4990540 2490406 2495270 12517631 14647551 8126630 9524134 6291584 7356544 3735628 4400716 1900582 2167590 8388863 12550399 5439654 8147878 4194432 6307968 2490444 3745356 1245222 1905446 4194559 10453247 2687142 6837158 2097280 5259392 1245260 3155532 655398 1577766 5526612 7763574 10000536 12303291 14540253 16777215 ) ) ) ;;;Apelsinov ;;;13.05.05 (defun APEL-ACAD_APPLICATION () (if (null *apel_acad_application*) (setq *apel_acad_application* (vlax-get-acad-object)) *apel_acad_application* ) ) ;;;Apelsinov ;;;18.05.05 (defun APEL-ACTIVE_DOCUMENT () (if (null *apel_active_document*) (setq *apel_active_document* (vla-get-activedocument (APEL-ACAD_APPLICATION) ) ) *apel_active_document* ) )

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kodirovanie.kapelnicza-ot-zapoya-sankt-peterburg.ru/