964 发表于 2008-4-21 17:32:54

使用VLISP加载-运行-卸载VBA项目


,一个沼泽同胞把我转到了这段代码
(defun c:Command ()
(LOADER "Projectname.dvb")
(VL-VBARUN "Projectname.dvb!Module")
(command "vbaunload" "Projectname.dvb")
)
(defun loader (progname /)
(vl-vbaload (findfile progname))
)

它将加载你的项目,运行宏然后卸载项目。
出于多种原因,我真的很喜欢这个想法,而且效果很好。
但是,如果我有一个宏需要用户选择某些东西,那么有一个问题,
我将代码与一个宏一起使用,该宏要求用户选择一个blockref,这是结果:
Command: test
_.-VBARUN
Macro name: Tools.dvb!Blocklayers.BlockonlayersLoop Pick a blockrefvbaunload

它在用户选择blockref之前发出vbaunload命令...
有谁知道我如何能够暂停卸载,直到用户逃脱或完成拣选?
谢谢,
马克
**** Hidden Message *****

紫灵梦雪 发表于 2008-4-21 18:24:24

你能发布你的dvb或其中的代码,这样我们就可以看到发生了什么?

超级粽子 发表于 2008-4-21 19:06:13

vlisp说的是:Load a DVB。
尽快在该DVB中运行此宏。
尽快卸载DVBAutoCAD在做的时候在想什么:加载DVB必须运行宏,但我忙于运行宏,但我忙于运行宏,但我忙于运行宏,但我忙于运行宏,但我忙于运行宏必须卸载DVB,但我忙于卸载DVB,但我忙于卸载DVB,但我忙于卸载DVB,但我忙于卸载DVBDVB,但我很忙必须卸载DVB,但我忙于卸载DVB,但我忙于卸载DVB,但我正在忙卸载DVB发生在你身上的事情是,一旦你允许用户输入,autocad就不再忙了,正在等待输入, 您的 vlisp 会尽早为它提供输入,这正是您告诉它要做的。

英皇联盟 发表于 2008-4-21 20:26:35


鲍勃:
我认为ACAD需要多一点耐心
Geeez,想想我们对ACAD有多耐心
那么,当用户选择时,没有办法暂停它吗
我注意到,无论我使用何种方法卸载项目;如果VBA中需要用户输入,则似乎无法通过编程方式卸载它
CM,
这是我们所做的项目,您在其中拾取块,并从块定义表返回层
记住,您帮助编写了循环部分
然而,关键是,无论项目是什么,如果需要用户输入,看起来手动卸载是唯一的方法
马克

英皇联盟 发表于 2008-4-22 11:19:23

现在没有太多时间,肯定不足以计算出lispy位,但是可以从宏
sub unloadify(strMacro as string)
Dim PauseTime, Start
    PauseTime = 1
    Start = Timer
    Do While Timer < Start + PauseTime
    Loop'The pause so you give time for the macro to finish before trying to unload
thisdrawing.sendcommand "vbaunload" "Projectname.dvb"
的最后一行运行的lisp等价物呢?它很笨重,但应该可以工作。不过,问题是,为什么您要在使用后卸载它?使用后加载DVB比加载LSP更糟糕吗?

贝小姐 发表于 2008-4-22 11:35:33

嘿,鲍勃,我正在看你的宏,但我会先回答你的问题。
如果我不使用一个项目,我更愿意卸载它,但是更大的问题是
如果一个VBA项目被不同的用户共享,你需要编辑它,如果它被加载到某人的机器上,你将如何编辑它?我总是收到只读消息。
所以,我在想,如果您让宏做它该做的事情,然后卸载,您可以在一天中的任何时候编辑它,而不必知道谁加载了它,然后必须联系他们并解释如何卸载它。
据我所知,使用LISP,您可以保持加载例程,并且仍然可以编辑它。
例程更新后,只要重新加载,用户就会获得更新。
如果我错了,请纠正我。
我现在去看看您的宏。
谢谢您。
Mark

缘分 发表于 2008-4-22 11:54:34

意义。 我不编辑正在使用的副本,我编辑开发副本,然后在一天结束时替换它。 我有几次需要立即更新文件。 我告诉大家关闭acad,这样我就可以进行维护,然后告诉他们再次打开它,但世界不会只按照一个鼓的节奏移动。 可能适合你的东西,可能不适合某些人。

蒲飞 发表于 2008-4-22 12:05:26


嘿,这就是我说的,威利斯

男人帮 发表于 2008-4-22 12:33:54


Bob
您的部署方法对于acad.dvb文件是完全有意义的,因为它在用户计算机上一直固有地加载;否则,我宁愿省去每晚部署的麻烦
,我想知道,是否可以共享一个Acad.dvb?
我知道我们在这里共享.pc3文件,尽管有一个说custom.pc3,但总有一个用户只想总是滑上山。
因此,我们只需每天晚上覆盖.pc3文件即可。
那会在他的刀片下放一些雪泥
马克

天后联盟 发表于 2008-4-22 12:52:24

我把它们放在黑板上。一个不是标准的标准,根本不是标准。YMMV。如果我有一名员工导致我每天覆盖标准文件,我就会少一名员工。
页: [1] 2
查看完整版本: 使用VLISP加载-运行-卸载VBA项目