Moin !
Weiß jemand fähiges, warum das folgende lisp nicht unter Acad2000 (unter 2002 läuft es) funktioniert ? (no function definition : init bonus error). Es sollte möglichst unter beiden Versionen laufen...
----------------
(Defun C:LAYISO (/ SS CNT LAY LAYLST VAL VPMODE)
(init_bonus_error
(list
(list "cmdecho" 0
"expert" 0
)
T ;flag. True means use undo for error clean up.
);list
);init_bonus_error
(if (and (= 0 (getvar "tilemode")) ; if in a paper space
(/= 1 (getvar "cvport")) ; viewport
)
(setq VPMODE T) ; set flag for viewport behavior
)
(if (not (setq SS (ssget "_i")))
(progn
(prompt "\nObjekt(e) auf zu isolierenden Layern wählen: ")
(if(null(setq SS (ssget)))
(setq ss(ssget "_X"(list(cons 8(getstring"\nLayernamen eingeben [mehrere durch Komma trennen]: ")))))
)
)
)
(if SS
(progn
(setq CNT 0)
(while (and ss
(> (sslength ss) 0)
(setq LAY (ssname SS CNT))
);and
(setq LAY (cdr (assoc 8 (entget LAY))))
(if (not (member LAY LAYLST))
(setq LAYLST (cons LAY LAYLST))
)
(setq CNT (1+ CNT))
)
(cond
(VPMODE
(command "_.vplayer" "_freeze" "*" "_Current")
(foreach VAL LAYLST (command "_Thaw" VAL "_Current"))
(command "")
(if (= (length LAYLST) 1)
(prompt (acet-str-format "\nLayer %1 wurde in diesem Ansichtsfenster isoliert." (car LAYLST)))
(prompt (acet-str-format "\n%1 Layer wurden in diesem Ansichtsfenster isoliert." (itoa (length LAYLST))))
)
)
(T
(if (member (getvar "CLAYER") LAYLST)
(setq LAY (getvar "CLAYER"))
(setvar "CLAYER" (setq LAY (last LAYLST)))
)
(command "_.-LAYER" "_OFF" "*" "_Y")
(foreach VAL LAYLST (command "_ON" VAL))
(command "")
(if (= (length LAYLST) 1)
(prompt (acet-str-format "\nLayer %1 wurde isoliert." (car LAYLST)))
(prompt (acet-str-format "\n%1 Layer wurden isoliert. %2 ist der aktuelle Layer."
(itoa (length LAYLST)) LAY)
)
)
)
)
)
)
(restore_old_error)
(princ)
)
----------------------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP