单文档下如何避免反应器多次加载
以下程序在多文档下可以正常执行,把SDI设为0后,每打开一次文件,程序就要加载一次,对话框就会多出现一次,应该是全局变量在单文档下无法传递。==============================
;如果双击的是线条,则显示“ABC”
(vl-load-com)
(or *MODIFY-DoubleClick-Reactor*
(setq *MODIFY-DoubleClick-Reactor*
(vlr-mouse-Reactor
"MODIFY.app"
'((:vlr-beginDoubleClick . MODIFY))
)
)
)
(vl-catch-all-apply 'arxunload '("acdblclkedit.arx"))
(vl-catch-all-apply 'arxload '("acdblclkedit.arx"))
(defun MODIFY
(Reactor Point / solname)
(setq solname (ssname (ssget (car Point)) 0))
(if (and solname
(= "LINE"
(cdr (assoc 0
(entget solname)
)
)
)
)
(progn
(vl-catch-all-apply 'arxunload '("acdblclkedit.arx"))
(ALERT "abc")
)
(vl-catch-all-apply 'arxload '("acdblclkedit.arx"))
)
) 本帖最后由 crazylsp 于 2011-11-2 21:33 编辑
是否是没卸载 "MODIFY.app" ? 这应该是要加入判断"MODIFY.app" 反应器是否存在,用全局变量来判断在多文档下没问题,在单文档下就会出现重复加载。不知如何获得"MODIFY.app"是否已加载。 能否用LISP的内存函数观察堆栈的变化?
页:
[1]