close
Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=4283
Datum vytištění: 21.čer.2026 v 05:59
Téma: close
Odeslal: Ferdinand
Předmět: close
Datum odeslání: 28.bře.2007 v 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?
------------- -FerTh-
|
Odpovědi:
Odeslal: Seiner
Datum odeslání: 28.bře.2007 v 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.
------------- Vítězslav Seiner
Chrudim
|
Odeslal: Ferdinand
Datum odeslání: 28.bře.2007 v 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.
------------- -FerTh-
|
Odeslal: Seiner
Datum odeslání: 28.bře.2007 v 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"))
------------- Vítězslav Seiner
Chrudim
|
Odeslal: Ferdinand
Datum odeslání: 28.bře.2007 v 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>
------------- -FerTh-
|
Odeslal: pavelstyl
Datum odeslání: 28.bře.2007 v 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
|
Odeslal: Vladimír Michl
Datum odeslání: 28.bře.2007 v 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?).
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Ferdinand
Datum odeslání: 29.bře.2007 v 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.
------------- -FerTh-
|
|