Program obracania o 90 stopni bloku prawym przycisk. myszy


Rekomendowane odpowiedzi

Witam

Ostatnio stworzyłem program do obracania dowolnego bloku o 90 stopni.

po uruchomieniu w ZWCAD wybieramy blok, blok jest kopiowany, następnie po wciśnięciu prawego przycisku myszy jest obracany o 90 stopni i można wkleić

(razem z blokiem źródłowym po wciśnięciu esc obrót bloku źródłowego wraca do stanu pierwotnego)

wstępnie wszystko działa jak należy, lecz jest jedno ale :

jak wciskam prawy przycisk myszy, a wskaźnik pozostaje nieruchomo to obraz bloku jest niewidoczny. Dopiero minimalny ruch myszy pokazuje blok w miejscu wskaźnika myszy.

Jeżeli ktoś ma pomysł dlaczego tak się dzieje proszę o podpowiedź, ewentualnie jak to zmodyfikować by blok był zawsze widoczny.

poniżej kod programu lub w załączniku :

 

(defun c:xxx ()
 
(setq temperr *error*)
(setq *error* trap)
 
(setq ssetBlockSource(ssget "_:S:E" '((0 . "INSERT"))))
(setq punktsrod (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint (vlax-ename->vla-object (ssname ssetBlockSource 0))))))
(setq blok(entget(ssname ssetBlockSource 0)))
(setq rotacja1(/ (* 180 (cdr(assoc 50 blok))) pi))
 
(setq currInsertionPoint(trans punktsrod 0 1 nil))
 
(while (= 1 1)
(setq info(getvar 'lastprompt))
 
(cond
((= info "Polecenie: ")
(progn
 
(command "" "_rotate" ssetBlockSource "" currInsertionPoint -90 "")
 
(command "" "_copy" ssetBlockSource "" "w" currInsertionPoint "@" "c")
 
)
)
((/= info "Polecenie: ")
(progn
 
(command "" "_copy" ssetBlockSource "" "w" currInsertionPoint "@" "c" pause "")
)
)
)
)
 
)
(defun trap (errmsg)
(setq *error* temperr)
(setq blok(entget(ssname ssetBlockSource 0)))
(setq rotacja2(/ (* 180 (cdr(assoc 50 blok))) pi))
 
(setq rotacja(rtos (- rotacja1 rotacja2) 2 2))
 
(command "_rotate" ssetBlockSource "" currInsertionPoint rotacja "")
 
(princ)
)




 

 

 

 

LISP_1.lsp

Odnośnik do komentarza
Udostępnij na innych stronach

"Wydaje mi się, że pod kursorem niczego nie ma, bo po naciśnięciu klawisza Enter wykonuje się kopiowania w innej części rysunku. Natomiast po ruchu myszką wraca podgląd.

Proszę oddalić rysunek i spróbować."

a to dziwne ponieważ u mnie niczego nie kopiuje (dodatkowo) w innej części rysunku, klawisz enter obraca tylko blok źródłowy to wszystko.

Jak coś mam wersję z 2019r. ZWCADA, może przez to, że ma Pan włączone śledzenie biegunowe, śledzenie lokalizacji lub coś innego ?.

Odnośnik do komentarza
Udostępnij na innych stronach

Dnia 30.01.2021 o 22:11, kojacek napisał:

Tak nieco inaczej podchodząc do tematu:

https://kojacek.wordpress.com/2021/01/30/lisp-a-klawisze/

 

 

ggread2.gif

 

Witam

jak mam wstawić ze 100 gniazdek elektrycznych i wystarczy tylko obrót 90 stopni to chyba wolę jednak moją wersję :). nawet jakby zmienić na obrót 90 w tej wersji to pozostaje jeszcze kwestia wygody ja wolę myszką kliknąć :)

 

 

 

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