Zobrazit plnou verzi příspěvku: Auto LISP výpis vrcholů entity (rectangle)

michal.s
23.01.2018, 22:24
Zdravím, mohl by někdo poradit jak se dostanu v LISPu k vypsání například vrcholů obdélníku. Umím ho vybrat a vypsat přes "print" celý obsah entity a pak přes "cdr+assoc" vypíšu první tečka-dvojici (10) kde je první vrchol.. ale jak se dostanu k dalším (ostatním třem) vrcholům v entitě, které mají taky tečka-dvojici 10? To mi není jasné díky za tipy!m.

johny
23.01.2018, 23:18
Funkce entget vám dala list. Čili udělejte cyklus, který bude testovat každý člen toho listu jestli náhodou není asociován s 10.

michal.s
24.01.2018, 04:39
..To mě napadlo ale nevěděl jsem jak seznam procházet, pohledal jsem a našel funkci "nth" tudy by asi cesta mohla vest?díky za nakopnutí.. m.

Vladimír Michl
24.01.2018, 06:48
Nth je dost pomalé - možná něco jako:[CODE](setq vert (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel "\nSelect a Polyline: ")))))(foreach x vert (print x))[/CODE]

michal.s
24.01.2018, 08:37
moc děkuji za radu, bohužel tyhle příkazy vl-... v těch se moc nevyznám používám jen ty "obyčejny" :-)každopádně díky m.

johny
24.01.2018, 10:11
Koukněte na příkazy foreach, repeat a while. V tomto případě je nejvhodnější foreach.Spoiler alert!;; code(if (setq en (car (entsel)))    (foreach x (entget en)      (if (= 10 (car x))        (print (cdr x)))));; end of code
johny2018-01-26 09:51:30