Vytisknout stránku | Zavřít okno

Auto LISP výpis vrcholů entity (rectangle)

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: AutoCAD
Popis fóra: Otázky kolem aplikací AutoCAD a AutoCAD LT, AutoCAD 360, prohlížečů, DWG a DWF, Design Review, Navisworks, nadstavby, 123D, A360 a cloud Autodesk 360
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=25576
Datum vytištění: 21.dub.2026 v 06:07


Téma: Auto LISP výpis vrcholů entity (rectangle)
Odeslal: michal.s
Předmět: Auto LISP výpis vrcholů entity (rectangle)
Datum odeslání: 23.led.2018 v 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é Unhappy

díky za tipy!

m.



Odpovědi:
Odeslal: johny
Datum odeslání: 23.led.2018 v 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.


Odeslal: michal.s
Datum odeslání: 24.led.2018 v 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.




Odeslal: Vladimír Michl
Datum odeslání: 24.led.2018 v 06:48
Nth je dost pomalé - možná něco jako:

(setq vert (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel "\nSelect a Polyline: ")))))
(foreach x vert (print x))


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: michal.s
Datum odeslání: 24.led.2018 v 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.


Odeslal: johny
Datum odeslání: 24.led.2018 v 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



Vytisknout stránku | Zavřít okno