Zobrazit plnou verzi příspěvku: "generovanie nazvu premennej"
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)))
čí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