ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Přes 123.000 registrovaných u nás, celkem 1.131.000 registrovaných (CZ+EN). Tipy pro AutoCAD 2027, pro Inventor 2027 a pro Revit 2027. Nový Kalkulátor nosníků, Inženýrský kalkulátor, Spirograf generátor a Regresní křivky v sekci Převodníky. Kompletní příkazy a proměnné AutoCADu 2027.
Autodesk Civil 3D 2027
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 emea.support.arkance.world
  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: Czech Republic
Používám:
AutoCAD
Stav: Offline
Bodů: 1919
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ů: 1761
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

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 22215
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 emea.support.arkance.world)
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD
Stav: Offline
Bodů: 1919
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

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 22215
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 emea.support.arkance.world)
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 13425:Využití alternativních jednotek pro aritmetiku v kótách (bez hranatých závorek).


 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,141 sekund.