你好
我有这个lisp例程,可以在特定层中创建任何维度,而不管当前层是什么。在这个lisp中,有一个启动和停止这个函数的规定。这是我不想要的。
有人能帮我删除这个启动/停止功能吗?这意味着一旦我加载应用程序,它就已经处于活动状态。启动和停止无需额外命令。我对Autolisp一点也不熟悉,所以不知道怎么做。
在创建新文件或打开现有文件时,是否可以预加载任何lisp?
- (vl-load-com)
- (defun DimReactor:Start ()
- (or *DimReactor*
- (setq *DimReactor*
- (vlr-command-reactor
- nil
- '(
- (:vlr-commandcancelled . DimReactor:CommandEnded)
- (:vlr-commandended . DimReactor:CommandEnded)
- (:vlr-commandfailed . DimReactor:CommandEnded)
- (:vlr-commandwillstart . DimReactor:CommandWillStart)
- )
- )
- )
- )
- (prompt "\nDimension reactor loaded. ")
- (princ)
- )
- (defun DimReactor:CommandEnded (rea cmd)
- (if
- (and
- *DimReactorLayer*
- (wcmatch
- (strcase (car cmd))
- "DIMA*,DIMB*,DIMC*,DIMD*,DIMI*,DIMJ*,DIML*,DIMO*,DIMR*,DIMSP*,QDIM"
- )
- )
- (progn
- (setvar 'clayer *DimReactorLayer*)
- (setq *DimReactorLayer* nil)
- )
- )
- )
- (defun DimReactor:CommandWillStart (rea cmd / layerName)
- (if
- (wcmatch
- (strcase (car cmd))
- "DIMA*,DIMB*,DIMC*,DIMD*,DIMI*,DIMJ*,DIML*,DIMO*,DIMR*,DIMSP*,QDIM"
- )
- (progn
- (setq *DimReactorLayer* (getvar 'clayer))
- (vla-add
- (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
- (setq layerName "Dimension Line")
- )
- (setvar 'clayer layerName)
- )
- )
- )
- (defun c:DimReactorStart ()
- (DimReactor:Start)
- )
- (defun c:DimReactorStop ()
- (if *DimReactor*
- (progn
- (vlr-remove *DimReactor*)
- (setq *DimReactor* nil)
- )
- )
- (prompt "\n** Dimension reactor stopped ** ")
- (princ)
- )
- ;; Uncomment next line to start automatically.
- ;;(DimReactor:Start)
- (princ)
|