проблема при смене цвта экрана

Автор Тема: проблема при смене цвта экрана  (Прочитано 7926 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Добрый день, господа!
прилагаю лисп и блок.
задача:
 поменять цвет экрана и вставить блок в чертеж.
вопрос:
почему с первого раза меняется цвет экрана и лисп снимается и начинает все работать только со второго раза?

для проверки необходимо открыть новый чертеж, экран сделать любым цветом кроме 55 и прописать путь к блоку.

заранее благодарен!
« Последнее редактирование: 13-05-2024, 22:21:47 от altver »

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: проблема при смене цвта экрана
« Ответ #1 : 14-05-2024, 11:53:01 »
А кто мешает все внутрь одной функции засунуть?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #2 : 14-05-2024, 12:17:44 »
а можо показать пример, как Вы имеете ввиду это сделать?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: проблема при смене цвта экрана
« Ответ #3 : 14-05-2024, 12:36:32 »
Примерно так:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun set-bg-color (color / disp)
  2.   ;; Вызов : (set-bg-color 55)
  3.   (vl-load-com)
  4.   (setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
  5.  
  6.   (vla-put-GraphicsWinModelBackgrndColor disp color)
  7.   (command "-insert" "block-1" "_S" 1 pause 0)
  8. )
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #4 : 14-05-2024, 14:12:24 »
Спасибо, Алексей, однако результат тот же: меняется цвет и - сбой,
со вторго раза начинает корректно вставлятсья блок,
когда цвет уже поменян...

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #6 : 14-05-2024, 16:40:32 »
Так я от туда и взял, если хотите помочь, то напишите свой вариант,
очень хочется сравнить, где же я ошибаюсь.
Ваш предыдущий вариант тоже не работает...

Заранее спасибо!

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: проблема при смене цвта экрана
« Ответ #7 : 14-05-2024, 17:11:14 »
Строка (vla-put-GraphicsWinModelBackgrndColor ACADPref (vlax-make-variant 127 19)) как бы намекает, что надо передавать не число, а безопасный массив, мне кажется
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #8 : 14-05-2024, 19:19:17 »
я пробовал в безопасном режме, но ничего не получается

Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:SetBGColor (Color /)  
  2.  (vl-load-com)
  3.  (setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
  4.  
  5.    (setq col (vlax-make-variant color vlax-vbdouble))
  6.   (vla-put-GraphicsWinModelBackgrndColor disp Col)
  7.  
  8.   (command "-insert" "block-1" "_S" 1 pause 0)
  9. )
  10.  
« Последнее редактирование: 14-05-2024, 21:19:13 от altver »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #10 : 15-05-2024, 10:43:05 »
что значит ответ "vlax-vbdouble"

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблема при смене цвта экрана
« Ответ #11 : 15-05-2024, 18:21:37 »
что значит ответ "vlax-vbdouble"
Это я поставил под сомнение тип данных. Судя по примеру из документации он должен быть равен 19. А color в твоем примере - это не индексный цвет, а RGB-цвет в виде целого числа (в примере в документации это было 127, т.е. 127,0,0)
У меня по умолчанию цвет экрана такой:

Т.е. RGB соответствует {33,40,48}. И программа из документации выдает значение 3156001, что соответствует 48*256*256+40*256+33

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #12 : 15-05-2024, 19:15:22 »
Александр, извините, но не понял... :-[
Можно, пожалуйса, получить пример кода,
задача следующая:
заменить цвет экрана на любой другой (black например)
и загрзить блок в чертеж с паузой в конце загрузки:
(command "-insert" "block" "_S" 1 pause 0)
Спасибо!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблема при смене цвта экрана
« Ответ #13 : 15-05-2024, 19:28:57 »
Должно быть что-то такое:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:SetBGColor ( / )  
  2.  (vl-load-com)
  3.  (setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
  4.  
  5.    (setq col (vlax-make-variant 0 19))
  6.   (vla-put-GraphicsWinModelBackgrndColor disp col)
  7.  
  8.   (command "-insert" "block-1" "_S" 1 pause 0)
  9. )
Но я думаю, что всё-равно код прервется - изменение цвета фона должно прерывать lisp-код. Точнее прерывать ввод от пользователя.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: проблема при смене цвта экрана
« Ответ #14 : 15-05-2024, 19:43:38 »
Нет, к сожалению и Ваш код не рабтает...
Жаль...
Странно!
подождем, может у кого-то будет какая-то идея...
Спасибо!