Zobrazit plnou verzi příspěvku: podmínka

Ferdinand
01.03.2007, 09:01
    (if    QS5      (command "_qsave")      (exit)    )Proč neprovede (exit) když neexistuje ve výkr. blok, který je definován jako(setq DWG (getvar "dwgname"))(setq LL (strlen DWG))(setq NPF (substr DWG 1 (- LL 4)))(setq NPF_C (strcat NPF "_C"))přičemž blok NPF_C byl/nebyl vytvořen jako(setq QS5 (ssget "X" (list (cons 8 "OEZ_*OBV"))))    (if    QS5      (progn (command "_chprop" QS5 "" "_C" 6 "_LT" "center" "_LA" 0 "")         (command "_-block" NPF_C "0,0" QS5 "")         (command "_-wblock" NPF_C "=")         (command "_-insert" NPF_C "0,0" 1 1 0)      )    )? Opačně mi to taky nechce brát    (if    (= QS5 nil)
      (exit)
      (command "_qsave")    )Píše mi na p.ř. hlášku ; error: quit / exit abortLze snad namísto exit použít nějaký jiný příkaz? Jde o hromadné zpracování hodně výkresů pomocí lispu a nechci, aby to úplně ukončilo AutoCAD, nýbrž aby ten výkres, ve kterém ten blok není, nechal být (tj. bez uložení, přesto že v lispu se něco provádělo) a otevřel další výkres pro zpracování.

Vladimír Michl
01.03.2007, 09:09
(exit) je funkce LISPu - ukončení zpracování kódu
takže "exit abort" je ta správná reakce

Seiner
01.03.2007, 09:09
IMHO exit je ladící funkce a při jejím použití to vždy hlásí chybu.
Prostě musíte požívat "strukturovaný" kód a důsledně používat konstrukce typu (If <jestliže_ano> <jestliže_ne>)
 

Ferdinand
01.03.2007, 10:23
Děkuji za objasnění. Asi se budu vyhýbat jeho použití...