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.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět ![]() |
Stránka 12> 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ů: 1906 |
![]() 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-
|
|
![]() |
|
Buba ![]() 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
CAD/BIM manager ![]() Přihlášen: 05.říj.2005 Lokalita: Slovensko Používám: AEC Collection Stav: Offline Bodů: 1692 |
![]() |
Cez _GATTE Vám to nestačí?
|
|
![]() |
|
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 |
![]() |
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 |
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
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:
|
|
-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 |
![]() |
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)) ) |
|
![]() |
|
Buba ![]() 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
CAD/BIM manager ![]() Přihlášen: 05.říj.2005 Lokalita: Slovensko Používám: AEC Collection Stav: Offline Bodů: 1692 |
![]() |
A keď si atribut označíte myšou?
|
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
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-
|
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
Proč 128-krát? GATTE změní hodnotu atributu ve všech blocích daného jména najednou.
|
|
![]() |
|
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 |
![]() |
To já taky, bez helpu u VisualLispu nenapisu nic. :-D |
|
![]() |
|
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 |
![]() |
Hadam, ale predpokladam, ze to pan Ferdinand potrebuje zmenit ve 128 souborech... |
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
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-
|
|
![]() |
|
Buba ![]() 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
CAD/BIM manager ![]() Přihlášen: 05.říj.2005 Lokalita: Slovensko Používám: AEC Collection Stav: Offline Bodů: 1692 |
![]() |
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))
|
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
![]() 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-
|
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
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.
|
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
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-
|
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
Přes command z LISPU vám to chodit nemůže. GATTE není příkaz Autocadu ale funkce LISP.
|
|
![]() |
|
Ferdinand ![]() TOP uživatel ![]() Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1906 |
![]() |
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-
|
|
![]() |
|
Buba ![]() 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
CAD/BIM manager ![]() Přihlášen: 05.říj.2005 Lokalita: Slovensko Používám: AEC Collection Stav: Offline Bodů: 1692 |
![]() |
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é)
|
|
![]() |
Odpovědět ![]() |
Stránka 12> archiv |
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 0,536 sekund.