Hart 发表于 2011-11-2 16:58:57

单文档下如何避免反应器多次加载

以下程序在多文档下可以正常执行,把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:31:52

本帖最后由 crazylsp 于 2011-11-2 21:33 编辑

是否是没卸载 "MODIFY.app" ?

Hart 发表于 2011-11-3 09:42:48

这应该是要加入判断"MODIFY.app" 反应器是否存在,用全局变量来判断在多文档下没问题,在单文档下就会出现重复加载。不知如何获得"MODIFY.app"是否已加载。

crazylsp 发表于 2011-11-3 10:45:09

能否用LISP的内存函数观察堆栈的变化?
页: [1]
查看完整版本: 单文档下如何避免反应器多次加载