[LISP] "Odklejenie" hatch'u od polilinii


Rekomendowane odpowiedzi

Cześć! Wiem, że tytuł nie jest zbyt profesjonalny, ale nie mam pomysłu na lepsze zsyntezowanie  mojego problemu, wszelkie googlowania i kombinacje własne też mi nie pomogły. Zacząłem się bawić w pisanie LISPów do AutoCADa (robię to od bardzo niedawna na bardzo niewysokim poziomie). Mam taki fragment kodu:

(setq SS (ssget "x"
                    '(
                        (-4 . "<OR")
                            (-4 . "<AND")
                                (8 . "K_*ciany *elbetowe")
                                    (-4 . "<OR")
                                        (0 . "POLYLINE")
                                        (0 . "LWPOLYLINE")
                                        (0 . "LINE")
                                    (-4 . "OR>")
                            (-4 . "AND>")
                            
                            (-4 . "<AND")
                                (8 . "K_tarcze")
                                    (-4 . "<OR")
                                        (0 . "POLYLINE")
                                        (0 . "LWPOLYLINE")
                                        (0 . "LINE")
                                    (-4 . "OR>")
                            (-4 . "AND>")                            
                        (-4 . "OR>")
                    )        
));setq

    (command
        "move" SS "" (list 0 0 0) (list 0 -5000 0)
    );command

Idea jest taka, żeby wybrać elementy z wyżej opisanego warunku i przesunąć to o 50m w dół (5 000 jednostek). W praktyce oprócz tych elementów KOPIUJE (nawet nie przesuwa a kopiuje) się hatch znajdujacy się pomiedzy tymi liniami (chociaż nie znajduje się na ww. warstwach). Najśmieszniejsze jest to, że kopiuje się tylko część HATCH'ów  a reszta zachowuje się tak, jak moim zdaniem powinna.

Dlaczego tak się dzieje? Czy da się "rozłączyć" granice kreskowania i te elementy?

Pozdrawiam Mateusz

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę spróbować tak:

(setq SS (ssget "x"
                    '(
                        (-4 . "<OR")
                            (-4 . "<AND")
                                (8 . "K_*ciany *elbetowe")
                                    (-4 . "<OR")
                                        (0 . "POLYLINE")
                                        (0 . "LWPOLYLINE")
                                        (0 . "LINE")
                                    (-4 . "OR>")
                            (-4 . "AND>")
                            
                            (-4 . "<AND")
                                (8 . "K_tarcze")
                                    (-4 . "<OR")
                                        (0 . "POLYLINE")
                                        (0 . "LWPOLYLINE")
                                        (0 . "LINE")
                                    (-4 . "OR>")
                            (-4 . "AND>")                            
                        (-4 . "OR>")
                    )        
	));setq

    ;(command
    ;    "move" SS "" (list 0 0 0) (list 0 -5000 0)
    ;);command 
	(setq ileelementow ( sslength SS ) )
	(setq i 0 )
	(repeat ileelementow
		( vlax-invoke-method ( vlax-ename->vla-object ( ssname SS i ) ) 'Move ( vlax-3d-point ( list 0 0 0 ) ) ( vlax-3d-point ( list 0 -5000 0 ) ) )
		( setq i ( 1+ i ) )
	)

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Nie rozumiem "vlax'ów". Jadę póki co na "AutoLISP. Praktyczny kurs" Marka Dudka a tam vlax'y nie występują :)  Poradziłem sobie rozbijając polilinie i robiąc ponownie zbiór.

W każdym razie dziękuję bardzo za pomoc!

 

P.S. A jakie jest najbardziej ortodoksyjnie łopatologiczne opracowanie, żeby ogarnąć Visual Auto Lips?

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