在不存在“txt”图层的前提下,运行22会崩溃,运行33却没问题(实现转层功能) ;;;;;; (defun c:22 () (command "text" "110,110" "20" "0" "5555555555" ) ) ;;;;;; (defun c:33 () (command "text" "110,110" "20" "0" ) ) ;;;============================================== (defun qqqq () (vl-load-com) (setq *doc (vla-get-activedocument (vlax-get-acad-object))) (setq *lays (vla-get-layers *doc)) (setq *laylst (list (list "TEXT" "txt" ) ) ) (setq *cmdlst (mapcar 'strcase (mapcar 'car *laylst))) (mapcar '(lambda (x) (vlr-command-reactor nil x)) (list '((:vlr-commandWillStart . bbb_start)) ) ) (vlr-editor-reactor nil '((:vlr-commandwillstart . bbb_edit))) ) ;;;----------------------------------------------------------------------------;;; (defun bbb_edit (CALL CALLBACK /) (foreach N *laylst (if (= (strcase (car CALLBACK)) (strcase (car N))) ; 命令反应器返回信息如果与设置的命令相同. (apply 'bbb_set (cdr N)) ) ) ) ;;;----------------------------------------------------------------------------;;; (defun bbb_start (calling-reactor bbb_startInfo /) (foreach N *laylst (if (= (strcase (car bbb_startInfo)) (strcase (car N))) ; 命令反应器返回信息如果与设置的命令相同. (apply 'bbb_set (cdr N)) ) ) ) ;;;----------------------------------------------------------------------------;;; ;;;----------------------------------------------------------------------------;;; (defun bbb_set (LAY-NAM / LAYOBJ LTYPESOBJ) (if (tblobjname "layer" LAY-NAM) (progn (if (/= (strcase (getvar "CLAYER")) (strcase LAY-NAM) ) (setq OldLayer (getvar "CLAYER")) (if (= oldlayer nil) (setq OldLayer LAY-NAM)) ) (setvar "CLAYER" lay-nam) ) (vl-catch-all-error-p (vl-catch-all-apply 'vla-add (list *lays LAY-NAM))) ;添加图层 ) ) ;;;;;; (qqqq) |