加载反应器
我有一个问题,关于反应堆程序的加载。我对正确的程序有点困惑,因为我知道多次加载反应堆可能会导致问题。情况是这样的:我们在民用应用程序中使用第三方软件Eagle Point。经过数小时的挫折和实验,我发现Eagle Point似乎与我们运行的许多基于反应堆的fire程序不太合拍。然而,有一些程序,我希望不会引起问题,这对我们的生产力至关重要(链接注释,因此当一个注释被更改时,其他链接的注释被更改;以及在启动某些命令时自动切换层;都是大程序)。在装载反应堆时,我目前正在使用:(if (not Command_Ending_Reactor)
(setq Command_Ending_Reactor
(vlr-command-reactor
nil
'((:vlr-commandended
.
Command_Ended_Command
)
)
) ;_ end of vlr-command-reactor
) ;_ end of setq
() ;_ the reactor is already loaded
) ;_ end of if
当提到“多次未加载反应堆”时,它是指:vlr commandended还是指Command\u Ending\u reactor?换句话说,我是否可以运行以下操作而不产生问题:
(cond
((and (not Command_Ending_Reactor) (not (member "egpt.exe" (dos_processes))))
(setq Command_Ending_Reactor_EP
(vlr-command-reactor
nil
'((:vlr-commandended
.
Command_Ended_Command_EP
)
)
) ;_ end of vlr-command-reactor
) ;_ end of setq
(setq Command_Ending_Reactor_NOEP
(vlr-command-reactor
nil
'((:vlr-commandended
.
Command_Ended_Command_NOEP
)
)
) ;_ end of vlr-command-reactor
) ;_ end of setq
) ;_ end of cond1
((and (not Command_Ending_Reactor) (member "egpt.exe" (dos_processes)))
(setq Command_Ending_Reactor_EP
(vlr-command-reactor
nil
'((:vlr-commandended
.
Command_Ended_Command_EP
)
)
) ;_ end of vlr-command-reactor
) ;_ end of setq
) ;_ end of cond2
) ;_ end cond
(前面是一个未经测试的代码,出于示例目的,它更多地是一个psuedo代码) 看看这个,克里斯:
;;;--------------------------------------------------------------------;
;;; Start reactor function:
(defun Reactors:Command()
;; CommandCancelled reactor:
(cond
(*Reactor_CommandCancelled*)
((setq *Reactor_CommandCancelled*
(vlr-command-reactor
nil
'((:vlr-commandCancelled . Callback:CommandEnded))))))
;; CommandEnded reactor:
(cond
(*Reactor_CommandEnded*)
((setq *Reactor_CommandEnded*
(vlr-command-reactor
nil
'((:vlr-commandEnded . Callback:CommandEnded))))))
;; CommandFailed reactor:
(cond
(*Reactor_CommandFailed*)
((setq *Reactor_CommandFailed*
(vlr-command-reactor
nil
'((:vlr-commandFailed . Callback:CommandEnded))))))
;; CommandStarted reactor:
(cond
(*Reactor_CommandStarted*)
((setq *Reactor_CommandStarted*
(vlr-command-reactor
nil
'((:vlr-commandwillstart . Callback:CommandStarted))))))
(prompt "\n \n>>Command Reactors Loaded ")
(princ)) ;_end defun
;;;--------------------------------------------------------------------;
;; CommandStarted callback function:
(defun Callback:CommandStarted(Rea Cmd / layerName LayerItem)
;; <- Your code here
(princ))
;;;--------------------------------------------------------------------;
;; CommandEnded callback function:
(defun Callback:CommandEnded(Rea Cmd)
;; <- Your code here
(princ))
;;;--------------------------------------------------------------------;
(cond
((or (vl-string-search "R17.2" *vrsn*) ; 2009 LDC
(vl-string-search "R18.1" *vrsn*)) ; 2011 C3D
(Reactors:Command)))
(princ)
我通常使用反应堆数据来跟踪反应堆,但是:
(defun Reactors:Command nil
(cond
( *Reactor_Command* )
( (setq *Reactor_Command*
(vlr-command-reactor nil
'(
(:vlr-commandcancelled . callback:commandended)
(:vlr-commandended . callback:commandended)
(:vlr-commandfailed . callback:commandended)
(:vlr-commandwillstart . callback:commandstarted)
)
)
)
)
)
(princ "\n--> Command Reactors Loaded.")
(princ)
)
这样,就不需要涉及全局变量 像往常一样,李,你有一个很好的建议,让我重新考虑去年发展起来的一些事情。。。一直以来,我都在努力为Civil 3D 2011建立支持结构和标准,并为我们从Land Desktop到Civil 3D的过渡进行反向规划。
谢谢你增加了工作量,伙计。笑死我了
哈哈,我不觉得有必要实施它。。。
页:
[1]