Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 5524 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD 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 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
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenovýběr bloku v akt. prostoru

 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ů: 1904
Přímý odkaz na tuto zprávu 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-
Zpět nahoru
alfred Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 14.říj.2004
Lokalita: ČR (JČ)
Používám:
AutoCad MAP 2011
Stav: Offline
Bodů: 1675
Přímý odkaz na tuto zprávu 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.

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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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".
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru
alfred Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 14.říj.2004
Lokalita: ČR (JČ)
Používám:
AutoCad MAP 2011
Stav: Offline
Bodů: 1675
Přímý odkaz na tuto zprávu Zasláno: 10.zář.2009 v 07:07
Zkousel jsem to v MAPu 2006 a prvni moznost funguje. Druha ne.
Zpět nahoru
iand Zobrazit panel
Nováček
Nováček

Přihlášen: 17.bře.2006
Lokalita: ČR (Pha)
Používám:
AutoCAD2004
Stav: Offline
Bodů: 7
Přímý odkaz na tuto zprávu 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
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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í.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru
alfred Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 14.říj.2004
Lokalita: ČR (JČ)
Používám:
AutoCad MAP 2011
Stav: Offline
Bodů: 1675
Přímý odkaz na tuto zprávu Zasláno: 10.zář.2009 v 12:07
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

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í.


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)




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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.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ů: 1904
Přímý odkaz na tuto zprávu 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-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.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ů: 1904
Přímý odkaz na tuto zprávu 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-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.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ů: 1904
Přímý odkaz na tuto zprávu 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-
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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu 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í).
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.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ů: 1904
Přímý odkaz na tuto zprávu Zasláno: 15.zář.2009 v 15:48
Pro upřesnění: se kterým výběrem? S tím posledním?
-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:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21494
Přímý odkaz na tuto zprávu Zasláno: 15.zář.2009 v 15:55
Ano, s tím vaším výběrovým filtrem (odesláno 11:43):
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 4732:Nastavení měřítka (velikosti) modelových bloků (textů) na výkresový prostor.
Tip 4338:Rychlejší výběr dynamického bloku pro editaci.
Tip 12231:Jak do DWG souboru Inventoru zahrnout modelový prostor?
Tip 6719:Jak vybrat všechny bloky stejného jména?
Tip 8858:Přesun všech bloků obsahujících určitou hladinu do této hladiny.
Tip 3634:Entity vloženého bloku či xrefu jsou posunuty oproti původní poloze.


 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 1,057 sekund.