e-cad.pl • Zobacz temat - [AutoLISP] Zastępuje podlisty o identycznym indeksie
Zajmujemy się tworzeniem i pisaniem programów oraz nakładek na AutoCAD®, BricsCAD®, GstarCAD®, ZwCAD®, ZwCAD+ Plus®
Zaloguj się           Zarejestruj się          FAQ          Szukaj

Odpowiedz  [ 1 post ] 
Autor Wiadomość
 Temat postu: [AutoLISP] Zastępuje podlisty o identycznym indeksie
PostWysłany: Pon Maj 11, 2009 7:31 am 
Awatar użytkownika
Administrator
Dołączenie: Wto Lut 17, 2009 6:17 pm
Posty: 200
Offline
Wszystkie podlisty listy l1 zastępuje podlistami listy l2 jeżeli elementy podlist l1 i l2 występujące na pozycji nr są identyczne. Wartości nr muszą być unikalne w obrębie list.

Przykładowe wywołanie:
(setq l1 (list
'(1 22 3)
'(4 5 6)
'(7 88 9)
))
(setq l2 (list
'(0 22 0)
'(0 88 0)
'(0 0 0)
'(1 1 1)
'(2 2 2)
'(3 3 3)
))
(Plista_update_key l1 l2 1)


zwróci wynik:
w liście l1 podmienione zostaną podlisty
'(1 22 3) na '(0 22 0)
'(7 88 9) na '(0 88 0)

Kod programu:
(defun Plista_update_key (l1 l2 nr / i j zwrot pom)

(setq i 0 zwrot nil)
(while (< i (length l1))

(setq j 0 pom nil)
(while (< j (length l2))

(if (equal
(nth nr (nth i l1))
(nth nr (nth j l2))
)
(progn
(setq pom (nth j l2))
)
)

(setq j (1+ j))
)

(if (equal pom nil)
(setq zwrot (cons (nth i l1) zwrot))
(setq zwrot (cons pom zwrot))
)

(setq i (1+ i))
)

(reverse zwrot)
)


 Profil WWW  
 
Wyświetl posty z poprzednich:  Sortuj według  
Odpowiedz  [ 1 post ] 

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość




Szukaj:
Skocz do:  
 cron

RODO - Polityka prywatności.


Ta strona internetowa używa plików cookies w celu tworzenia statystyk oglądalności i utrzymania sesji użytkownika na Forum.