Zmiana koloru tła - Działało w zw2015... nie działa w zw2017 :(


Rekomendowane odpowiedzi

Mam taki LISP który zmienia kolor tła ekranu z białego na czarny i czarnego na biały. Taki przełącznik. Dodatkowo zmienia kolor wybranych warstw.

LISP działał na wcześniejszych wersjach ZWcada, a na 2017 wskazuje błąd. Może ktoś wie dlaczego??

 

(defun ZYXAK_MT_BandWBackground (/ PREF COL)						
	(ZYXAK_Start)
	(setq PREF (vla-get-display (vla-get-preferences (vlax-get-acad-Object))))
	(setq COL  (vlax-variant-value (vlax-variant-change-type (vla-get-GraphicsWinModelBackgrndColor PREF) vlax-Vblong)))
 
	(if (zerop COL)
		(progn
			(vla-put-GraphicsWinModelBackgrndColor PREF (vlax-Make-Variant 16777215 vlax-Vblong))
			(vla-Put-ModelCrosshairColor           PREF (vlax-Make-Variant 0 vlax-Vblong))
			(command "_-layer" "_C" "T" "255,255,255" (strcat "*" "_WIPEOUT") "")
		)
	;else
		(progn
			(vla-Put-GraphicsWinModelBackgrndColor PREF (vlax-Make-Variant 0 vlax-Vblong))
			(vla-Put-ModelCrosshairColor PREF (vlax-Make-Variant 16777215 vlax-Vblong))
			(command "_-layer" "_C" "T" "0,0,0" (strcat "*" "_WIPEOUT") "")
		)
	)
	(vlax-Release-Object PREF)
	(ZYXAK_OK)
)

 

Odnośnik do komentarza
Udostępnij na innych stronach

chciałem podejrzeć wartość tej właściwości na działającym ZWCADzie.

(setq display (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
( vlax-dump-object display t )

zobaczyłem że nil i (RO)  czyli ReadOnly. więc zapytałem ZWSOFT jak można to ogarnąć
Dam znać co odpowiedzą.

preview.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...
  • 2 miesiące temu...

W najnowszej wersji po małej modyfikacji działa:
 

(defun ZYXAK_MT_BandWBackground (/ PREF COL)						
	(setq PREF (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
	(setq COL  (vlax-variant-value (vlax-variant-change-type (vla-get-GraphicsWinModelBackgrndColor PREF) vlax-Vblong)))
	(if (zerop COL)
		(progn
			(vla-put-GraphicsWinModelBackgrndColor PREF 16777215  )
			(vla-Put-ModelCrosshairColor           PREF 0 )
		)
		(progn
			(vla-Put-GraphicsWinModelBackgrndColor PREF 0 )
			(vla-Put-ModelCrosshairColor PREF 16777215 vlax-Vblong )
		)
	)
	(vlax-release-object PREF)
)

 

zmiana koloru_1.lsp

Odnośnik do komentarza
Udostępnij na innych stronach

Ten LISP wydaje się być częścią większego, ale po pewnych poprawkach, myślę, że będzie działać.

Nazwy poleceń można zmienić w samym pliku edytorem tekstu. Poniżej zaznaczyłem miejsce.

biale-i-czarne.png

 

Uruchomienie skryptu na szybko

biale_czarne.gif

 

lub klasycznie.

Oto sam skrypt biale_czarne.lsp

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Kolor 30, 40 , 48 to zapis RGB. Można go prosto przeliczyć na kolor w formacie dziesiętnym i taki wpisać do skryptu.

W poprzednim skrypcie jest niestety mały błąd.

Zamieszczam nowy, są w nim dostępne 3 polecenia: czarne. biale, szare.

biale_czarne_szare.lsp

Można sobie pozmieniać samemu kolory tła i kursora (podkreślone na czerwono).

biale_czarne_szare.png

 

biale_czarne_szare.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Wyszedł kolor 48,40,33 nie ten - jakis brązowawy   ...a autocadowy grafitowy to 33,40,48 .... było blisko ....ale lisp działa co do zasady  ;)

kolor to 3156001

R+G*256+B*65536 = 33+40*256+48*65536 = 3156001
biale_czarne_szare.lsp

Edytowane przez Martin_S
Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze nieco zmodyfikowaliśmy program w taki sposób, aby nie trzeba było przeliczać.

Teraz powinno być wszystko jasne.


(defun C:Szare (  / ) 
	(BGColor 30 40 48 )
	(CursorColor 255 255 255)
)
(defun C:białe (  / ) 
	(BGColor 255 255 255 )	
	(CursorColor 0 0 0 )
)
(defun c:czarne (  / ) 
	(BGColor 0 0 0 )
	(CursorColor 255 255 255)
)

(defun BGColor ( R G B / PREF ) 
	(setq PREF ( vla-get-display ( vla-get-preferences (vlax-get-acad-object ) ) ) )
	(vlax-put-property PREF 'GraphicsWinModelBackgrndColor ( RGB->Int R G B ) )
	(vlax-release-object PREF)
)

(defun CursorColor ( R G B / ) 
	( setq PREF ( vla-get-display ( vla-get-preferences (vlax-get-acad-object ) ) ) )
	(vlax-put-property PREF 'ModelCrosshairColor ( RGB->Int R G B ) )
	(vlax-release-object PREF)
)

(defun RGB->Int ( R G B  / ) 
	(+ R ( * G 256 ) ( * B 65536 ) )
)

biale_czarne_szare2.lsp

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie