Zobrazit plnou verzi příspěvku: "generovanie nazvu premennej"

Augur
29.04.2008, 14:45
Pokusam sa pomocou lispu ziskat suradnice vybranych bodov a nasledne urcit bod s najväcsou x-ovou suradnicou.. narazil som vsak na problem ako "vygenerovat" nazov premennych ku ktorym by bola priradovana hodnota..

Potrebujem dostat nieco taketo: bod1, bod2, bod3, ..., bodn. prikladam aj schemu ako si to asi predstavujem. Mozno na to idem z uplne zleho konca a preto budem vdacny aj za usmernenie.

...
...
...
(setq poradie "1")
(repeat xx
...
...
ziskanie hodnoty
...
...
(setq (list "bod"poradie) hodnota)
(setq poradie (+ poradie 1)))

Seiner
29.04.2008, 14:54
číslovaný seznam bodů si uděláte třeba nějak takhle: (koncové body všech úseček)
 
(setq i 0)(setq V (ssget "X"(list(cons 0 "line")))      p (sslength V))(while (< i p)       (setq i (1+ i)             p1(cdr(assoc 10(setq a(entget(ssname v (1- i))))))             p2(cdr(assoc 11 a))             uzly (append uzly  (list(append (list (-(* i 2)1))(list p1)) (append (list (* i 2))(list p2))))        ))
 
a maximální rozměry ve směru os třeba takhle:
(setq u (length uzly) i 1)(setq u1 u)
(setq xmin (car(cadr (assoc 1 uzly)))      ymin (cadr(cadr (assoc 1 uzly)))      zmin (caddr(cadr (assoc 1 uzly)))      xmax xmin      ymax ymin      zmax zmin)
(While (<= i u)(if (<(car(cadr (assoc i uzly)))xmin)(setq xmin (car(cadr (assoc i uzly)))))(if (<(cadr(cadr (assoc i uzly)))ymin)(setq ymin (cadr(cadr (assoc i uzly)))))(if (<(caddr(cadr (assoc i uzly)))zmin)(setq zmin (caddr(cadr (assoc i uzly)))))(if (>(car(cadr (assoc i uzly)))xmax)(setq xmax (car(cadr (assoc i uzly)))))(if (>(cadr(cadr (assoc i uzly)))ymax)(setq ymax (cadr(cadr (assoc i uzly)))))(if (>(caddr(cadr (assoc i uzly)))zmax)(setq zmax (caddr(cadr (assoc i uzly)))))(setq i (+ 1 i)))
(setq deltax (- xmax xmin)      deltay (- ymax ymin)      deltaz (- zmax zmin))       (setq i (1+ i)             p1(cdr(assoc 10(setq a(entget(ssname v (1- i))))))             p2(cdr(assoc 11 a))             uzly (append uzly  (list(append (list (-(* i 2)1))(list p1)) (append (list (* i 2))(list p2))))        ))Seiner2008-04-29 14:56:01

svarc.vl
29.04.2008, 14:59
dejte si hodnoty do seznamu
(setq seznam (cons hodnota  seznam) ; přidá hodnotu do seznamu na začátek
(setq seznam (reverse seznam)) ; obrátí mi prvky seznamu
pak si ve smyčce zjistite max hodnotu a pořadí bodu