Zobrazit plnou verzi příspěvku: close

Ferdinand
28.03.2007, 12:55
(návazně na téma "Potlačení hlášky" ve fóru "AutoCAD")Při hromadném zpracování výkresů se má vždy hotový výkres po uložení
zavřít a teprve pak se otevře následující výkres pro aut. zpracování.
To zavření se mi nedaří nějak rozumně zapsat do těla lispu, protože
(command "_close" "_Y")
nefunguje. Nefunguje ani
(command "_close")
(while (> (getvar "cmdactive") 0) (command "_Y"))Máte nějaký nápad anebo spíše osvědčený syntax či jiný trik?


Seiner
28.03.2007, 12:58
Hromadné zpracování více výkresů řeším pomocí generátoru scriptů.
Podle mne nejde lispem uzavřít a otevřít výkres - ale nechám se poučit.

Ferdinand
28.03.2007, 13:29
Jde mi spíše o to: v každém otevřeném výkresu dojde prvně k nějakým "kosmetickým" úpravám (nazoomování, odmrazení hladin,...) a teprve se přistoupí  k vykonání nějakého editačního příkazu. Pokud výkres neobsahuje entity týkající se tohoto příkazu, výkres se má uzavřít bez uložení a otevřít pro zpracování další, pokud entity jsou, příkaz se provede a lisp  pokračuje v dalších úpravách, výkres uloží, veme další, otevře,...To otevírání/zavírání je řešeno přes sdi=1.

Seiner
28.03.2007, 13:46
Tomu snad rozumím. Hromadným zpracováním více výkresů rozumím vykonání nějakých příkazů (třeba i definovaných v lispu). Neznám generátor dodávaný AutoDeskem, protože jsem si napsal svůj a jsem na něj zvyklý. Aby to šlo použít, musíte odladit sekvenci příkazů tak, aby pracovala "bezobslužně". Takže třeba mám odladěnou sekvenci pro uložení výkresu bez razítka ve formátu R14 s určitým názvem. ODRAZ je definován v lispu.
ODRAZ (command "_SAVEAS" "R14" (strcat (getvar "DWGPREFIX")(SUBSTR (GETVAR "dwgname") 1(-(strlen(getvar "dwgname"))4))"_a.dwg"))

Ferdinand
28.03.2007, 14:24

Taky jsem chtěl použít Xanadu-aplikaci CNS, ale s tím to v některých případech nejde...To Michl:Pane Michl, ta aplikace CNS (CloseAllButActive) na konci čeká na potvrzení "_Y" - předpokládám, že když dám volbu "zavřít vše bez uložení" tak to provede, ale není tomu tak.Např. otevřu 20 výkresů, provedu _zoom v některém z nich, pak chci všech 20 výkresů po prohlédnutí zavřít, použiju lisp CNS - a on se ptáCommand: Really want to discard all changes to drawing? <N>
Ferdinand2007-03-28 14:24:39

pavelstyl
28.03.2007, 20:29
Pár poznámek:
 
Proč to dávkové zpracování děláte v režimu SDI?
 
Pokud chci výkres při dávkovém zpracování zavřít, tak to řeším scriptem (lispem to asi opravdu bude problém). Vlastně celé dávkové zpracování je script (vygenerovaný lispem).
 
Na konci před příkazem _close VŽDY nakreslím čáru (0,0 - 1,1) a tím si vynutím dotaz na uložení výkresu, na který odpovím "neuládat".
 
Pavel Štyl

Vladimír Michl
28.03.2007, 21:42
_CLOSE je pro LISP trochu speciální případ, protože zavření výkresu znamená standardně i ukončení kontextu LISPu. Myslím, že to jde řešit přes _QUIT nebo vyvoláním scriptu (.SCR), kde jsou teprve ony ukončovací příkazy.
To, zda AutoCAD bude při ukončení vyzývat k ukládání, určuje proměnná DBMOD (je výkresová databáze modifikována?).

Ferdinand
29.03.2007, 11:38
dbmod...dle Helpu je pouze pro čtení a má hodnotu buď jako součet 1 - 4 - 8 - 16, čili >0 anebo 0 (to je v případě právě otevřeného výkresu). Takže pokud provedu jenom zoom, tak nabyde hodnoty 8 - a nezmění se ani když dám Undo Back.