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


Recommended Posts

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

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 months later...

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...