Vytisknout stránku | Zavřít okno

"generovanie nazvu premennej"

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=6431
Datum vytištění: 13.čer.2026 v 16:35


Téma: "generovanie nazvu premennej"
Odeslal: Augur
Předmět: "generovanie nazvu premennej"
Datum odeslání: 29.dub.2008 v 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)))


-------------
Designer/Projektant/Ucitel
Autocad 2007



Odpovědi:
Odeslal: Seiner
Datum odeslání: 29.dub.2008 v 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))))
        )
)


-------------
Vítězslav Seiner

Chrudim


Odeslal: svarc.vl
Datum odeslání: 29.dub.2008 v 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



Vytisknout stránku | Zavřít okno