ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Již 10.000+ CAD tipů. Přes 118.500 registrovaných u nás, celkem 1.094.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.
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řenoatributy-pořadí

 Odpovědět Odpovědět Stránka  12> 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: atributy-pořadí
    Zasláno: 07.čvc.2008 v 11:55
Mám blok (dejme tomu že má název RT1) se 32-mi atributy, ve výkrese je 128-krát vložený. Chtěl bych pomocí lispu změnit Value atributu DATUM ve všech RT1 na stejnou hodnotu. DATUM je v dialogu Attedit zobrazen jako 14. v pořadí. Jak lze získat v lispu atribut s tímhle pořadím  (bez nutnosti ukazování na něj)? Zatím je koncepce taková:
(setq AA (ssget "X" '((0 . "INSERT") (2 . "RT1"))))
(if (/= AA nil)
 (progn
  (setq VYB0 (strcase (getstring "\nNovy datum: <2008-07-01> ")))
  (setq N 0)
  (while (< N (sslength AA))
   (setq E (ssname AA N))
   (setq E2 ???)
;tady nevím co má být
   (setq S2 (entget E2))
   (setq OO2 (assoc 1 (entget E2)))
   (setq NN2 (cons 1 VYB0))
   (setq S2 (subst NN2 OO2 S2))
   (entmod S2)
   (entupd E)
   (setq N (1+ N))
  )
 )
)
-FerTh-
Zpět nahoru
Buba Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 05.říj.2005
Lokalita: Slovensko
Používám:
AEC Collection
Stav: Offline
Bodů: 1692
Přímý odkaz na tuto zprávu Zasláno: 07.čvc.2008 v 11:59
Cez _GATTE Vám to nestačí?
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: 07.čvc.2008 v 13:00
vybrat objekt - blok
v cyklu pouzit funkci (entget ) a a kontrolovat jakou entitu to vrati. Kdyz je to atribut s pozadovanym jmenem zmenit hodnotu.
Cyklus ukoncit pokud ENTGET vrati entitu "SEQEND".

(setq objekt (car (ENTSEL)))
(setq objekt(ENTNEXT objekt))
(while (/= (cdr (assoc 0 (entget objekt))) "SEQEND")
     (if (and
        (= (cdr (assoc 0 (entget objekt))) "ATTRIB")
        (= (cdr (assoc 2 (entget objekt))) "DATUM")
      )
      (print "upravit objekt")
      (print "Atribut nebyl nalezen...")
     );if
     (setq objekt (ENTNEXT objekt))
);while
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: 07.čvc.2008 v 13:30

To Buba: Nebere mi to jméno atributy:

Command: GATTE
Select block or attribute [Block name]:
B
Enter block name: RT1
Known tag names for block: TEXT_S2 TEXT_S1 TEXT13 TEXT12 TEXT11 È.V.ZÁKAZNÍKA
JAZYK PÙVOD ODDÌLENÍ È.ZAKÁZKY ZÁKAZNÍK2 ZÁKAZNÍK1 AKCE4 AKCE3 AKCE2 AKCE1
DATUM_SCHVÁLENÍ SCHVÁLIL DATUM_NÁVRHU NAVRHL STATUS DCC - ++ + = STRANA REVIZE
ÈÍSLO_DOKUMENTU NÁZEV2 NÁZEV1 DRUH_DOKUMENTU
Select attribute or type attribute name:
DATUM_NÁVRHU
*Invalid selection*
Expects a single object.
Select attribute or type attribute name:
To Alfred:
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

Jak lze získat v lispu atribut s tímhle pořadím  (bez nutnosti ukazování na něj)?
-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: 07.čvc.2008 v 13:55
To mate prece v tom Vasem uvodnim prikladu

(setq AA (ssget "X" '((0 . "INSERT") (2 . "RT1"))))

vybere to vsechny bloky, selekci je potreba projit v cyklu
a pro kazdou entitu ve vyberu provest to co jsem psal.
Na prochazeni vyberem jsou funkce (sslength) a (ssname).

Neco jako:
(setq n 0)
(while (< n (sslength aa))
(setq objekt (ssname aa n))
;zde dat cast programu, ktera upravuje atribut
(setq n (+ n 1))
)
Zpět nahoru
Buba Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 05.říj.2005
Lokalita: Slovensko
Používám:
AEC Collection
Stav: Offline
Bodů: 1692
Přímý odkaz na tuto zprávu Zasláno: 07.čvc.2008 v 14:08
A keď si atribut označíte myšou?
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: 07.čvc.2008 v 14:17

Cry 128-krát???

To Alfred: Aha, už to chápu. Mám trošku ztvrdlou hlavu. Ale hlavně - jsem jen "sváteční" lispátor.



Upravil Ferdinand - 07.čvc.2008 v 14:20
-FerTh-
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: 07.čvc.2008 v 14:22

Proč 128-krát?

GATTE změní hodnotu atributu ve všech blocích daného jména najednou.
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: 07.čvc.2008 v 14:33
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

Ale hlavně - jsem jen "sváteční" lispátor.


To já taky, bez helpu u VisualLispu nenapisu nic. :-D
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: 07.čvc.2008 v 14:36
Původně odeslal(a) Sedláček Sedláček napsal(a):

Proč 128-krát?


GATTE změní hodnotu atributu ve všech blocích daného jména najednou.


Hadam, ale predpokladam, ze to pan Ferdinand potrebuje zmenit ve 128 souborech...
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: 07.čvc.2008 v 15:38
To Sedláček: Děkuji, to jsem nevěděl - ovšem díky Buba ode dneška už vím, že existuje i příkaz gatte... Přesto ale nelze zadat (anebo to dělám špatně) čistě jméno atributu (viz výše) - chce to po mne kliknutí na hledaný DATUM; já bych raději, aby to proběhlo bez nutnosti na něco (co nevím, kde se nachází - teda já asi ano, ale ostatní uživatelé o tom nemaj ani šajnu...) klikat.
To Alfred: Ne ve 128 souborech, ale v 1 souboru, kde je RT1 vložen 128-krát (viz pův. příspěvek).
-FerTh-
Zpět nahoru
Buba Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 05.říj.2005
Lokalita: Slovensko
Používám:
AEC Collection
Stav: Offline
Bodů: 1692
Přímý odkaz na tuto zprávu Zasláno: 07.čvc.2008 v 16:30
Podľa mňa má problém s medzerami v názve atribútu a s diakritikou. Keby bol názov atribútu zadaný jednoduchým názvom, tak by Vám to zobralo. (Predpokladám, že výber atribútu ste potom dali na všetky, nie po jednom (AD128-krát))
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: 08.čvc.2008 v 10:51
Question Ale ono to fakt nefunguje - mne to taky napadlo s tou diakritikou a tak jsem to zkusil pro atribut s názvem REVIZE (bez mezer, bez diakritiky)...a nic.
Dám-li do p.ř.:
Command: (command "gatte" "_B" "RT1" "REVIZE" "_Y")
tak odezva je:
gatte Unknown command "GATTE".  Press F1 for help.
Command: _B Unknown command "B".  Press F1 for help.
Command: RT1 Unknown command "RT1".  Press F1 for help.
Command: REVIZE Unknown command "REVIZE".  Press F1 for help.
Command: _Y Unknown command "Y".  Press F1 for help.
Command: nil
 


Upravil Ferdinand - 08.čvc.2008 v 10:59
-FerTh-
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: 08.čvc.2008 v 10:54
To je divný mě to normálně funguje.
Ale pokusně jsem udelal atribut s diakritikou a to mě GATTE také nevzal. Asi by to chtělo sáhnout do kódu.
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: 08.čvc.2008 v 11:07
Původně odeslal(a) alfred alfred napsal(a):

(setq objekt (car (ENTSEL)))
(setq objekt(ENTNEXT objekt))
(while (/= (cdr (assoc 0 (entget objekt))) "SEQEND")
     (if (and
        (= (cdr (assoc 0 (entget objekt))) "ATTRIB")
        (= (cdr (assoc 2 (entget objekt))) "DATUM")
      )
      (print "upravit objekt")
      (print "Atribut nebyl nalezen...")
     );if
     (setq objekt (ENTNEXT objekt))
);while
Není třeba u toho if připsat proměnnou OBJEKT ?
     (if OBJEKT (and
        (= (cdr (assoc 0 (entget objekt))) "ATTRIB")
        (= (cdr (assoc 2 (entget objekt))) "DATUM")
      )
-FerTh-
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: 08.čvc.2008 v 11:11
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

Question 
Command: (command "gatte" "_B" "RT1" "REVIZE" "_Y")
 
 
Přes command z LISPU vám to chodit nemůže. GATTE není příkaz Autocadu ale funkce LISP.
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: 08.čvc.2008 v 11:25

Pljoin je taky lisp a provozuji to uvnitř vlastní aplikace:

(load (findfile "pljoin.lsp"))
(command "delay" 500)
pljoin
_All
 ;
0.1
(princ)
 
Ale když dám
(load (findfile "gatte.lsp"))
(command "delay" 500)
gatte
_B
RT1
REVIZE
NOVADATA
_Y
tak se na p.ř. objeví ona již jednou zmíněná hláška
 


Upravil Ferdinand - 08.čvc.2008 v 11:35
-FerTh-
Zpět nahoru
Buba Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 05.říj.2005
Lokalita: Slovensko
Používám:
AEC Collection
Stav: Offline
Bodů: 1692
Přímý odkaz na tuto zprávu Zasláno: 08.čvc.2008 v 12:01

Môj postup pri funkcii Gatte býva nasledovný a nemám s tým nikdy problémy:

_GATTE, vyberiem blok (myšou), a následne atribut (tiež myšou), napíšem novú hodnotu pre atribut, vypíše mi koľkokrát sa nachádza vo výkrese, či chcem zmeniť všetky, dám Yes a je to.
Ak Vám to takto nefunguje, tak je chyba v niektorej premennej (PICKFIRST=0 ja mám =1 al. niečo podobné)
 
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 1052:Jak ovlivnit pořadí dotazů na jednotlivé atributy při vkládání bloku?
Tip 1031:Jedinečná vlastnost výběru volbou Napříč.
Tip 6326:VIPPořadí načítání souborů ACAD.LSP, ACADDOC.LSP, ACAD20xxDOC.LSP, MENU.MNL a dalších
Tip 3609:Změna chování funkce Pořadí v AutoCADu 2005.
Tip 5832:Jak změnit pořadí kreslení objektů podle barev?
Tip 3355:Jak přečíslovat pořadí listů výkresu Inventoru?


 Odpovědět Odpovědět Stránka  12> archiv

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



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