VisualLisp


Rekomendowane odpowiedzi

Witam,

zauważyłem problem z użyciem funkcji vl-remove, przy wykorzystaniu usuwania punktów identycznych, za pomocą rekurencji.

Dla przykładu, w załączniku podaję listę 444 punktów.

Po usunięciu identycznych, ma zostać 156 punktów.

Funkcja (_DelDup1 lista) zadziała prawidłowo (na czystym rysunku DWG);

Funkcja (_DelDup2 lista), całkowicie zamyka ZwCAD bez komunikatów błędów itp.

Obie funkcje działają prawidłowo w innych systemach CAD, z czego _DelDup2 jest w swym działaniu, zdecydowanie szybsza od _DelDup1.

Funkcje (zamieszczone również w załączonym pliku):

;------------
(defun _DelDup2 (Lst)
 (if Lst
   (cons
     (car Lst)
     (_DelDup2 (vl-remove (car Lst) (cdr Lst)))
   )
 )
)

;------------
(defun _DelDup1 (l / % nl)
(foreach % l
	(if (not (member % nl)) (setq nl (cons  % nl)))
)
(reverse nl)
)

lst.zip

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