Lee Mac 发表于 2022-7-6 10:27:51

 
朗尼,
 
我要澄清的是,我不会“鼓励”设置注册表项——我只会在这个问题唯一可行的解决方案的情况下使用这个选项。你真的不想不必要地膨胀注册表。
 
关于你的“每日提示”,请注意ACAD。lsp,不同于阿卡多克。lsp将在每次启动AutoCAD时加载,但不是每次启动新图形时都加载-但我不确定在加载AutoCAD时弹出对话框是否是一个好主意-我说“不确定”,因为我从来没有这样做过-我会让其他人就这个问题发表意见。
 
如果您希望每天只运行一次程序,那么是的,可能需要一个注册表项(或其他一些存储方法,如临时文件)。也许可以设置LISP来检查儒略日,并将其存储在注册表(或其他地方)中,那么,如果该日与存储在注册表中的日相同,它将不会运行。
 
另外,你可能想看看这个
 

lfe011969 发表于 2022-7-6 10:31:13

 
我不知道,所以谢谢你的提示。
 
 
李又是一段很棒的代码。从现在开始,我不再问你是否已经为特定情况编写了代码,而是假设你已经编写了,然后说“嘿,李,把你的代码给我,谢谢!”

Lee Mac 发表于 2022-7-6 10:35:46

朗尼,
 
关于我对一个每天运行一次的程序的想法,这是我所涉及的结构:
 

(defun IWillOnlyRunOnceADay nil

(alert "This is all you'll hear from me today")
(princ)
)


(if
(not
   (and
   (setq date (getenv "LMAC_OnceADay"))
   (= (fix (getvar 'DATE)) (atoi date))
   )
)
(progn
   (IWillOnlyRunOnceADay)
   (setenv "LMAC_OnceADay" (itoa (fix (getvar 'DATE))))
)
)
(princ)
 
它将坐在阿卡多克。lsp
 

Lee Mac 发表于 2022-7-6 10:37:26

 
 
0000000000

lfe011969 发表于 2022-7-6 10:42:06

 
谢谢你的代码!我也必须把它添加到我的工具箱中。虽然你们花了2分钟才写出下面的代码,但这是我用来处理同样事情的反应堆代码,我只花了几个小时,哈哈:
 
 
(vlr-command-reactor nil '((:vlr-commandWillStart . DoOnExit)))

(defun DoOnExit ( Caller CmdSet )
(if (member (car CmdSet) '("END" "EXIT" "QUIT"))
   (setenv "CSC:OnceADay" "YES")
)
)
 
 
我唯一不确定的是清理反应堆。我正在使用的其他反应堆包含在它们自己的lisp中,它们的名称就像任何lisp一样。然而,因为这是在我的阿卡多克。lsp我不得不从它的defun语句中去掉命令reactor,然后由于我没有给reactor分配变量,我不知道如何清除它(或者在这种情况下它是否重要)。我的意思是,通常你会这样清理反应堆:
 
 
(defun clear_myExitReact ()
(if (and (myExitReact (vlr-added-p myExitReact))
   (vlr-remove myExitReact)
)
)
 
 
我也试过vlr命令反应堆,但没能让它工作。由于我使用的是vlr命令willstart reactor,因此一旦调用该命令,注册表就会发生更改,因此如果用户取消AutoCAD退出,然后打开一个新图形,则会再次显示当天的提示。

ReMark 发表于 2022-7-6 10:44:56

一旦“每日提示”的新颖性消失了,会有任何杀死它的规定吗?我是根据我以前运行的另一个具有类似功能的程序的经验提出这个问题的。过了一段时间,它变成了一个主要的皮塔。当一开始加载程序时,坐在多个启动屏幕上已经够糟糕的了,但是后来不得不查看提示,这让我感到很尴尬。无意冒犯,但你必须从用户的角度来看这一点。

lfe011969 发表于 2022-7-6 10:46:41

 
你提出了一个很好的论点,既然你已经看到了这种努力在现实世界中的结果,我一定会听从你的建议,要么找出一种永久禁用它的方法,要么在预定的时间内禁用它。当然,如果我真的把这个应用到我们的办公室。现在我正在尝试学习不同的概念,并且对这样的事情很感兴趣。我可能会使用此概念提醒用户AutoCAD套件的新开发或新增强。谢谢你的建议!

ReMark 发表于 2022-7-6 10:51:43

代码中是否可以包含计时元素,而不是禁用预定的时间长度,以便在一周的预定日期/时间(例如周一上午9点)显示警报/通知?

lfe011969 发表于 2022-7-6 10:55:35

我也这么认为。如果我们将变量设置为一年中第一个星期一的日期,然后将提示设置为显示(getvar“CDATE”)是否等于星期一变量加上7的倍数。现在我真的很感兴趣,所以我将不得不制定一些代码(如果李没有打败我,哈哈)。

lfe011969 发表于 2022-7-6 10:58:04

 
我是个白痴
 
CDATE变量将日期返回为YYYYMMDD。SSSSSS。。。。所以在任意日期加上7的倍数是行不通的。我想我们可以将每个星期一的日期存储在一个列表中,然后将CDATE的值与列表进行比较,然后激活提示代码,如果CDATE本身是列表的成员(有点丑陋的代码):
 
5
 
未经测试,您必须每年重置列表。我相信有更好的方法。
页: 1 [2]
查看完整版本: 退出AutoCAD的区别