> Forma
У вас задача не такая и сложная :)
У меня для OLE цветов черному соответствует номер 0 (как наверное и у всех), а белому соотв. номер 16777215.
Узнать так ли это у вас, можете запустив такую функцию:
;;;функция возврата текущего цвета экрана в модели по OLE
;;;Apelsinov
;;;19.07.05
(defun APEL-MODELBACKGRNDCOLOR_OLE ()
(vlax-variant-value
(vlax-variant-change-type
(vla-get-graphicswinmodelbackgrndcolor
(vla-get-display
(vla-get-preferences (APEL-ACAD_APPLICATION))
)
)
vlax-vblong
)
)
)
;;; (apel-modelbackgrndcolor_OLE)
Затем можно загрузить такую штуку:
;;;Функция присвоения экрану в модели цвету по OLE
;;;color - номер цвета по OLE
;;;Apelsinov
;;;19.07.05
(defun APEL-PUT-MODELBACKGRNDCOLOR_OLE (color /)
(vla-put-graphicswinmodelbackgrndcolor
(vla-get-display
(vla-get-preferences (APEL-ACAD_APPLICATION))
)
color
)
)
;;;(APEL-PUT-MODELBACKGRNDCOLOR_OLE 0)
После менять цвета одной кнопкой можнотакой функцией, записав ее на кнопку:
;;;Изменение цвета экрана с цвета color1 на цвет color2 и наоборот
;;;Apelsinov
;;;19.07.05
(defun APEL-PUT-MODELBACKGRNDCOLOR_REVERSE_TWO_COLOR (color1 color2 / current_color)
(setq current_color (apel-modelbackgrndcolor_OLE))
(cond ((eq current_color color1) (APEL-PUT-MODELBACKGRNDCOLOR_OLE color2))
((eq current_color color2) (APEL-PUT-MODELBACKGRNDCOLOR_OLE color1))
((alert "\nЦвет фона экрана не опознан!"))
)
)
;;;(APEL-PUT-MODELBACKGRNDCOLOR_REVERSE_TWO_COLOR 0 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*
)
)
Значит пишем это все в автозагрузку, и пишем в кнопке
^C^C(APEL-PUT-MODELBACKGRNDCOLOR_REVERSE_TWO_COLOR 0 16777215)
Где 0 и 16777215 - соотв. Ваши черный и белый цвета
Все очень просто! :)