Již 10.000+ CAD tipů.
Přes 118.000 registrovaných u nás, celkem 1.092.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků.
Vyzkoušejte nový přesný Inženýrský kalkulátor.
Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět ![]() |
archiv |
Autor | |
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() Zasláno: 19.srp.2009 v 15:36 |
Lze nějak zjistit délku čáry (pro použití v lispu)? Potřebuji vytvořit výběrovou množinu všech čar, které mají délku=2 a ty pak např. přemístit do jiné hladiny anebo vymazat.
Příklad: asociační seznam jedné takové čáry (tj. co má délku=2) vypadá takhle
((-1 . <Entity name: 7effe7b0>) (0 . "LINE") (330 . <Entity name: 7efd2cc0>) (5 . "21C6") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (6 . "ByBlock") (100 . "AcDbLine") (10 675.253 1.76795 0.0) (11 675.253 3.76795 0.0) (210 0.0 0.0 1.0))
|
|
-FerTh-
|
|
![]() |
|
johny ![]() TOP uživatel ![]() Přihlášen: 24.led.2006 Lokalita: ČR (JM) Používám: C3D 2024 Stav: Offline Bodů: 1741 |
![]() |
Jednoduše pomocí (distance pt1 pt2) ... čili mezi dvěmi body pt1 pt2.
V tom asociačním seznamu LINE jsou to položky 10 a 11) (setq ed (entget (car (entsel))) (setq pt1 (cdr (assoc '10 ed))) (setq pt2 (cdr (assoc '11 ed))) (setq line_len (distance pt1 pt2)) Samozřejmě měl by jste testovat JENOM entity LINE, čili zbytek nějak vyloučit - nejjednodušeji už v ssget (setq ss (ssget '((0 . "LINE")))). Pokud chcete testovat na rovnost, tak je vhodné si zvolit nějakou přesnost. čili např. tisicinku (if (and (< line_len 2.001) (> line_len 1.999))) Upravil johny - 19.srp.2009 v 16:01 |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21898 |
![]() |
Ano, koncové body úsečky jsou skupiny 10 a 11. Čistější je asi řešit to přes vlax a vlastnost object.length (bude fungovat i na další typy čarových objektů).
Fuzzy porovnání se dělá přes funkci (equal):
|
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
Ideální by bylo, kdyby existoval jakýsi "ekvivalentní" způsob vyjádření možností rychlého výběru v dial. okně CADu pomocí lispu. V tom dialogu jsou přece různé možnosti kombinací, které jednoduše vyberu - aby to bylo proveditelné, nějak to přece musí "převést" do interního kódu či jazyka (?). V tomto konkrétním případě jsem se chtěl dopátrat, zda existuje kód XXX pro délku - něco jako (cons XXX 2). Docela bych uvítal i možnost výběru dle kritérií "linka o délce věší než 1.5 a menší než 2.5" což by mohl mít tvar (vím že to asi není správně)
;DL = zjištěná délka
(setq QS1 (ssget "_X"(list (cons -4 "<and") (cons 0 "LINE") (cons -4 "<or") (> DL 1.5) (< DL 2.5) (cons -4 "or>") (cons -4 "and>"))))
|
|
-FerTh-
|
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21898 |
![]() |
Ne, takhle to nejde - musíte filtraci naprogramovat (naznačeným způsobem) v cyklu přes všechny vybrané objekty. QSelect používá podobné metody, ale přes objektové vlastnosti .
|
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
Můžete použít _QSELECT - v tomto případě ve dvou krocích. 1. krok _QSELEC úsečka délka >1,5 na celý výkres
2. krok _QSELEC úsečka délka <2,5 na předchozí výběr
|
|
![]() |
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět ![]() |
|
Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,303 sekund.