ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
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.
Jak novinky řešení Autodesk a ARKANCE ovlivní budoucnost strojírenství
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenokód délky

 Odpovědět Odpovědět archiv
Autor
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Téma: kód délky
    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-
Zpět nahoru
johny Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 24.led.2006
Lokalita: ČR (JM)
Používám:
C3D 2024
Stav: Offline
Bodů: 1741
Přímý odkaz na tuto zprávu Zasláno: 19.srp.2009 v 15:56
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
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21898
Přímý odkaz na tuto zprávu Zasláno: 19.srp.2009 v 16:25
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):
(equal 0.999 1.01 0.2)
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2009 v 10:11
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-
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21898
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2009 v 10:22
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 .
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
Sedláček Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 15.dub.2005
Lokalita: Czech Republic
Používám:
AutoCad 2024 LT
Stav: Offline
Bodů: 384
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2009 v 10:22

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
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 8596:Pozor na délku cesty ve Windows.
Tip 4040:Jak napsat oblouček před kótou délky oblouku?
Tip 12700:Jaká je maximální délka seznamu ve VisualLISPu v AutoCADU?
Tip 6869:VIPParametrické zobrazení šířky a délky rozvinu plechu ve výkresu.
Tip 6442:VIPCelková upravená délka kabelů v Inventoru (všechny vlivy).
Tip 12082:VIPInstalace či aktualizace Vaultu skončí závažnou chybou (a oprava ADMS hlásí chybu 26401)


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,303 sekund.