2P Posted February 3, 2017 Report Posted February 3, 2017 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) ) Quote
kruszynski Posted February 3, 2017 Report Posted February 3, 2017 tak na szybko to dlatego, że IZcadPreferencesDisplay nie ma jeszcze właściwości GraphicsWinModelBackgrndColor postaram się ustalić jak można to rozwiązać Quote
2P Posted February 3, 2017 Author Report Posted February 3, 2017 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). Quote
kruszynski Posted February 3, 2017 Report Posted February 3, 2017 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ą. Quote
jacnightingale Posted February 27, 2017 Report Posted February 27, 2017 Nadal nie ma żadnego szybkiego sposobu na przełączanie tła pomiędzy białym i czarnym w Zwcad 2017? Quote
Mayster Posted February 27, 2017 Report Posted February 27, 2017 Jakiś sensowniejszy skrót klawiszowy byłby całkiem przydatny. Quote
dmatusz3 Posted February 28, 2017 Report Posted February 28, 2017 Obecnie kolor tła można przełączyć jedynie w opcjach programu. Quote
jacnightingale Posted February 28, 2017 Report Posted February 28, 2017 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. Quote
kruszynski Posted May 12, 2017 Report Posted May 12, 2017 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 Quote
jacnightingale Posted May 18, 2017 Report Posted May 18, 2017 Dnia 12.05.2017 o 13:50, kruszynski napisał: W najnowszej wersji po małej modyfikacji działa: zmiana koloru_1.lsp Ok, tylko człowiek zielony i nie wie jak to uruchomić. Tzn. lsp wiem jak wczytać tylko jak tę aplikację uruchomić. Jaka komenda? Quote
dmatusz3 Posted May 18, 2017 Report Posted May 18, 2017 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. Uruchomienie skryptu na szybko lub klasycznie. Oto sam skrypt biale_czarne.lsp Quote
Martin_S Posted May 18, 2017 Report Posted May 18, 2017 A mozna zamiast czarne zrobic autocadowe ciemne 33,40,48...ewentualnie biale_ciemne.lsp? Quote
dmatusz3 Posted May 18, 2017 Report Posted May 18, 2017 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). Martin_S 1 Quote
perlon Posted May 18, 2017 Report Posted May 18, 2017 Gwoli uzupełnienia wartość dziesiętna to R*65536 + G*256 + B Wartości R,G,B w zakresie 0 do 255 Quote
Martin_S Posted May 18, 2017 Report Posted May 18, 2017 (edited) 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 = 3156001biale_czarne_szare.lsp Edited May 18, 2017 by Martin_S Quote
dmatusz3 Posted May 19, 2017 Report Posted May 19, 2017 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 gruzin 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.