Rekomendowane odpowiedzi

Opublikowano

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)
)

 

Opublikowano

W Helpie jest napisane, że 

ZcadPreferencesDisplay ma właściwość  GraphicsWinModelBackgrndColor. Raz mi nawet wpisanie linijki kodu zmieniło kolor tła (na czarny), ale później ta sama linijka kodu już nic nie zdziałała (na inny kolor).

Opublikowano

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

  • 4 tygodnie później...
Opublikowano
1 minutę temu, dmatusz3 napisał:

Obecnie kolor tła można przełączyć jedynie w opcjach programu.

Kiepsko. W takim razie z niecierpliwością czekam na możliwość sprawniejszego przełączania koloru tła, tak jak to było w starszych wersjach.

  • 2 miesiące temu...
Opublikowano

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

Opublikowano

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

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