Diskuzní fórum, poradna
CAD diskuze, rady, výměna zkušeností |
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 360, 3ds Max a s dalšími CAD 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 Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
výběr bloku v akt. prostoru |
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ů: 1904 |
Téma: výběr bloku v akt. prostoru Zasláno: 09.zář.2009 v 15:58 |
Ve výkrese mám 2 rozvržení, v každém je vložen po 1 bloku RAZ--T1 (obsahuje atributy). Pro extrakci dat z hodnot atributů chci vybrat 1. blok a to právě v akt. prostoru (většinou je to Layout):
(setq AA (ssget "_X"
(list (cons -4 "<AND") (cons 0 "INSERT") (cons 2 "RAZ--T*") (cons 410 (getvar "ctab")) (cons -4 "AND>") ) ) ) což mi vrací
nil
- nemohu přijít na to, proč, když podmínky jsou splněny? V případě zápisu ve tvaru
(setq AA (ssget "_X" '((-4 . "<AND") (0 . "INSERT") (2 . "RAZ--T*") (410 . (getvar "ctab")) (-4 . "AND>"))))
vrací
; error: bad SSGET list value
- proč?
|
|
-FerTh-
|
|
alfred
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
TOP uživatel Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
Zasláno: 09.zář.2009 v 19:39 |
nevim, zda se mi to dobre krome toho (getvar "ctab")
Zkuste tam zapsat primo hodnotu, nebo si to zjistete predem. |
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 09.zář.2009 v 21:45 |
V tom druhém zápise chybí (cons), ale ten první vypadá snad dobře. Nekomplikoval bych to tím AND - zřetězené podmínky jsou automaticky "and".
|
|
alfred
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
TOP uživatel Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
Zasláno: 10.zář.2009 v 07:07 |
Zkousel jsem to v MAPu 2006 a prvni moznost funguje. Druha ne.
|
|
iand
Nováček Přihlášen: 17.bře.2006 Lokalita: ČR (Pha) Používám: AutoCAD2004 Stav: Offline Bodů: 7 |
Zasláno: 10.zář.2009 v 09:18 |
Jakýkoli seznam, tedy i filtrační, lze zapsat dvěma způsoby:
1. pomocí apostrofu, např. '((0 . "INSERT")(410 . "1"))) 2. pomocí klíčového slova 'list', např. (list (0 . "INSERT")(410 . (getvar "ctab"))) Pokud je byť i jediná hodnota v seznamu proměná nebo výraz, funguje pouze druhý způsob. |
|
Ivan Anděl
ACAD2004CZ |
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 10.zář.2009 v 09:26 |
Nikoliv. Symboly "list" a "'" jsou v tomto případě naprosto rovnocenné. Zápis dle druhého způsobu nelze použít (chybí cons) - s LISTem to nijak nesouvisí.
|
|
alfred
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
TOP uživatel Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
Zasláno: 10.zář.2009 v 12:07 |
Neni to tak. pokud doplnim cons (cons 410 (getvar "ctab")) tak samotny tento vyraz mi vrati napr. (410 . "Model") pokud je to ale v celem vyrazu '((-4 . "<AND") (0 . "INSERT") (2 . "RAZ--T*") (cons 410 (getvar "ctab")) (-4 . "AND>")) vraci to ((-4 . "<AND") (0 . "INSERT") (2 . "RAZ--T*") (CONS 410 (GETVAR "ctab")) (-4 . "AND>")) coz je samozrejme spatne V listu '() nemohou byt promenne viz help "As an alternative to using the list function, you can explicitly quote a list with the quote function if there are no variables or undefined items in the list." Maly priklad: (setq a 5) (list 1 a) .......vrati (1 5) '(1 a) ...........vrati (1 A) |
|
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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 10.zář.2009 v 12:57 |
Aha, to je pravda. Zápis:
(4 . (getvar "ctab"))
je chybný v každém případě (chybí cons), ale použití funkce quote (tedy ') zneplatní i tu cons verzi.
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.zář.2009 v 10:03 |
Takže výrazy
(setq VYB1 (ssget "X" '((0 . "insert"))))
(setq VYB2 (ssget "_X" (list (cons 0 "insert")))) nejsou jedno a totéž? Mně se ale v obou případech vytvoří stejná (identická) výběrová množina.
Ještě něco:
pokud to zapíšu jako 3. způsob tj.
(setq S1
(entget (ssname (ssget "_X" (list (0 . "INSERT") (2 . "RAZ--*") (410 . (getvar "ctab")))) 0 ) ) ) tak mi to vrátí
; error: bad argument type: consp "INSERT" Upravil Ferdinand - 15.zář.2009 v 11:33 |
|
-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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 15.zář.2009 v 10:30 |
Jsou "jedno a totéž". Jen v tom prvním nesmí být místo konstanty "insert" použita žádná funkce.
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.zář.2009 v 11:43 |
A pokud to přepíšu na (setq S1
(entget (ssname (ssget "_X" (list (cons 0 "INSERT") (cons 2 "RAZ--*") (cons 410 (getvar "ctab")) ) ) 0 ) ) ) tak vrací
; error: bad argument type: lselsetp nil
a to i v případě, když dám namísto
(cons 410 (getvar "ctab"))
(cons 410 AP)
kde předtím jsem nadefinoval (setq AP (getvar "ctab"))
|
|
-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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 15.zář.2009 v 13:12 |
Ten výběrový filtr je asi v pořádku - zřejmě jen není žádná entita, která by mu vyhovovala.
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.zář.2009 v 13:57 |
V akt. prostoru (Rozvržení) je 100% přítomen blok s názvem RAZ--T1 anebo RAZ--T1n. Můžete to zkusit na nějaký Vaše 2 bloky, které mají podobný název?
Dále pak zjišťuji zda
(setq i 0)
(while (< i (sslength S1)) (setq E (ssname S1 i)) (setq E1 E) (while (/= "SEQEND" (cdr (assoc 0 (setq S2 (entget (setq E1 (entnext E1))))) ) ) (setq PROM (cdr (assoc 2 S2))) a podle toho se provede další operace
(cond
((= PROM "DOCUMENTID") (setq JM1 (cdr (assoc 1 S1))) ) ...
ale s hlášenýma error se nehnu dál...
|
|
-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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 15.zář.2009 v 14:02 |
Vyzkoušeno - s výše uvedeným filtrem výběru to funguje normálně (blok musí být skutečně vložen v aktuálním rozvržení).
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.zář.2009 v 15:48 |
Pro upřesnění: se kterým výběrem? S tím posledním?
|
|
-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: Dodáváme produkty Autodesk Stav: Offline Bodů: 21494 |
Zasláno: 15.zář.2009 v 15:55 |
Ano, s tím vaším výběrovým filtrem (odesláno 11:43):
|
|
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 1,057 sekund.