NH3man! 发表于 2022-7-6 14:19:09

唐#039;我甚至不知道

由于文件大小,我遇到了问题。我不得不关闭自动保存,因为如果它在我尝试执行另一个功能的同时尝试保存,我的系统将锁定并进入致命错误,我失去了上次手动快速保存所做的一切。在我做任何会导致致命错误的事情(主要是添加外部参照和尝试动态观察我的模型)之前,我尽量记住要这样做,但我发现我没有像我希望的那样多。
 
我要问的是,如果先调用动态观察或和外部参照命令,是否可以使用lisp进行保存。
 
我希望这是可能的,但如果不是这样,我只需要在做这两件事之前更好地存钱。
 
谢谢
 
NH3人!

ollie 发表于 2022-7-6 14:26:46

 

(defun C:so()
(command"save" "")
(command"orbit")
)

 
目前我能想到的唯一解决方案是创建类似于上述函数的函数。
 
我不知道你会如何取代crt+鼠标中键
 
奥利

flowerrobot 发表于 2022-7-6 14:30:23

我建议用反应堆作为解决方案
我不确定快速扑救是否有效,需要一点尝试和错误。
下面是一个示例,任何dim都可以转到dim层
 
(vl-load-com)
(vlr-command-reactor nil '
((:vlr-commandWillStart . startCommand)
(:vlr-commandEnded . endcancelCommand)
(:vlr-commandCancelled . endcancelCommand))
); end vlr-command-reactor
;******************************************************
(defun startCommand (calling-reactor startcommandInfo)
(if (= 1 (getvar "dimlfac"))
(setvar "dimclrt" 2)
(setvar "dimclrt" 3)
)
(if (wcmatch (car startcommandInfo) "DIM*")
(progn
(setq dimOldLayer (getvar "CLAYER"))
(setvar "CLAYER" "dim"))
   ); end if
(princ)
);defun
;****************************************************
(defun endcancelCommand (calling-reactor endcommandInfo)
(if(wcmatch (car endcommandInfo)"DIM*")
(progn
(if (= dimoldlayer "dim")
   (setvar "CLAYER" "yellow")
   (setvar "CLAYER" dimoldlayer)
)
(setvar "dimclrt" 2)
)
   ); end if
(princ)
);defun

Lee Mac 发表于 2022-7-6 14:35:43

我同意,一个反应堆将是一个很好的呼吁-希望系统不会冻结时,快速保存调用。
 
然而,它必须通过VL,因为命令调用不会与反应堆混合。
 

David Bethel 发表于 2022-7-6 14:38:14

根据在设置中如何调用动态观察和外部参照,还可以使用undefine和命令的新(defun)-大卫

Lee Mac 发表于 2022-7-6 14:41:09

不确定这是否适合你?
 

(defun c:ReON ()
(vl-load-com)
(if (not *Save:React*)
   (progn
   (setq *Save:React*
       (vlr-command-reactor nil
         (list
         (cons :vlr-CommandWillStart 'StrtComm))))
   (princ "\n<< Reactor Initiated >>")))
(princ))

(defun StrtComm (React Args / *doc)
(if (vl-position
       (strcase (car Args))
         '("3DORBIT")); <<-- Populate Commands Here
   (progn
   (setq *doc
       (vla-get-ActiveDocument
         (vlax-get-acad-object)))
   (if (not (eq "" (vla-get-FullName *doc)))
       (vla-save *doc)
       (vla-saveas *doc
         (strcat
         (vla-get-Path *doc) "\\"
             (vla-get-name *doc))))))
(princ))

(defun c:ReOFF ()
(if *Save:React*
   (progn
   (vlr-remove *Save:React*)
   (setq *Save:React* nil)
   (princ "\n<< Reactor Deactivated >>")))
(princ))
         

 

flowerrobot 发表于 2022-7-6 14:48:14

我试过了,李,但我怎么知道它能救人。我没有在命令行中看到它。它是一个未显示的自动功能吗?

Lee Mac 发表于 2022-7-6 14:51:05

耶,反应堆在后台工作,没有用户的输入/输出。
 
检查文件,它会显示上次保存的时间

flowerrobot 发表于 2022-7-6 14:57:03

 
正如弗劳尔所说,由于我使用了VL save方法,您将看不到结果,因此它不会显示在命令行中。
 

Lee Mac 发表于 2022-7-6 14:58:36

李太棒了。你会救我的,我甚至不知道,直到我去重新开放,我所有的工作仍然存在。非常感谢。
页: [1] 2
查看完整版本: 唐#039;我甚至不知道