ankurpraja 发表于 2022-7-5 16:43:51

模糊层lisp

你好
我有这个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)

Tharwat 发表于 2022-7-5 17:12:44

你好
 
请通过添加代码标签[#]来修改您的帖子,因此只需选择代码并点击图案填充按钮#,就会自动包装代码。
 
删除这两个命令
<c:Dimreactorstart , c:Dimreactorstop>及其所有代码,只需在lisp文件的末尾添加以下函数。
 

(dimreactor:start)

 
要在启动时自动运行代码,只需将代码添加到acaddoc中。应该存在于您的支持文件夹中的lsp。

ankurpraja 发表于 2022-7-5 17:16:09

非常感谢。

Tharwat 发表于 2022-7-5 17:41:01

 
非常欢迎你。

Dadgad 发表于 2022-7-5 17:45:03

看起来萨尔瓦特已经让你回到了轨道上,但仅供参考,我最喜欢的李-麦克Lisp程序是层导演。
 
地球上的每个人都应该认真地使用它。
 
除了其他非常有用的事情外,它还可以为您做到这一点,比如将所有文本放在文本层上(或者在您事先告诉它的任何地方),将所有视口放在特定层上。
如果lisp中指定的图层在图形中尚不存在,它将使用您在根据个人需要设置lisp时定义的设置创建图层。例如,您可能希望所有领导者都在哪一层?
看看这个链接,它绝对棒极了。
谢谢李!
您只需要稍微考虑一下要为任何给定层定义什么命令,以及层的颜色和名称。
这个lisp可以即时工作,你不需要考虑它,它会把事情放在你告诉它的地方,没有任何用户交互,然后直接返回到你所在的层,然后调用任何命令,例如DimRadial。
如果你像我一样,你会希望这个自动加载,所以你再也不需要考虑层。
我已将其加载到启动套件中,因此每次启动Autocad时,它都会自动启动,并使整个过程更加顺畅。
不难看出我对李的优秀作品的高度评价。
我的lisp目录中可能有95%的lisp是他的,有充分的理由,它们很棒!
再次感谢李!
 
为了更好地了解lisp的功能,以及如何根据您的喜好对其进行个性化设置,请将其下载到lisp文件夹中,然后用记事本打开。李对它的功能做了非常有益的描述。

页: [1]
查看完整版本: 模糊层lisp