rlx 发表于 2022-7-5 14:08:11

 
我的代码并没有改变任何东西,只是让我看到了SDI的状态,因为它不在选项卡级别上运行,而只在文档级别上运行。为什么不为revcloud命令本身做一个包装,在执行revcloud命令本身之前,测试模型/纸张空间?

Jef! 发表于 2022-7-5 14:10:31

唯一需要的是具有多视图布局的dwg。如果您切换到pspace V,则只有在没有活动mview的情况下,cvport才为6。在pspace中,如果mview处于活动状态,cvport将为2,因此为什么原始代码有2个嵌套的if语句。
 
大致上这就是原始代码所做的
-如果在模型中:将rev vars设置为300
-如果在纸上,那么。。。
[列表]
[*]如果视口处于活动状态:禁用视口、缩放扩展和重新激活视口。(左rev vars不变)
[*]如果没有vport处于活动状态:zoom extend,并将rev vars更改为6
它不能用一个if语句来完成,因此在翻译过程中您错过的是,当您进入PS if/没有活动的mviews时,您的代码不会进行缩放扩展。即使修复了这个问题,您仍然会有一个我的版本没有的不想要的行为:vars“*REVCLOUDMAXARCLENGTH”“*revcloudminarlength”不依赖于dwg。如果在dwg A中进入模型,进入dwg B,然后进入dwg B中的PS,“*REVCLOUDMAXARCLENGTH”和“*REVCLOUDMINARCLENGTH”将设置为6。将活动dwg再次更改为A(在模型中),“*REVCLOUDMAXARCLENGTH”和“*REVCLOUDMINARCLENGTH”仍将设置为6,而实际上,您需要将其设置为300,因此原始代码分为两部分:因为您还需要检测活动图形中的更改,不幸的是,如果我们尝试使用:vlr documentBecameCurrent,那么反应堆的多次燃烧又回来了。
关于你的第三点和第四点(至少在CAD 2015中,这似乎是你正在使用的版本),这正是我在之前的消息中所说的::VLR documentBecameCurrent触发器3次:当文档失去焦点时触发一次,当它恢复焦点时触发两次。(它唯一一次只反应两次似乎是,第一次文档失去焦点:它没有反应,这本身就相当令人困惑。之后它会被系统地触发)。但是,它不受打开其他dwg的数量或在没有反应器的文档之间切换的次数的影响。请试试我的反应堆监测反应堆,如果你得到与我相同的结果,请告诉我。您将能够看到什么被触发、何时触发、由什么触发以及在哪个图形中触发。这很有启发性,即使它带来的问题比答案多。我很好奇Bricscad是否也有同样的行为。。。
(vlr DocManager Reactor“Jef!:reactormonSTRdescription”'((:vlr documentBecameCurrent.Jef!:reactormon))(defun Jef!:reactormon(调用Reactor commandInfo/reactType reactData reactCall dwgname reactEvent reactCallback);ori(setq;reactInfo own;获取反应器类型reactictype(vl符号名称(vlr类型调用反应器));获取应用数据reactData(vlr数据调用reactor);获取回调列表reactCall(car(vlr reactions calling reactor));获取dwgname dwgname(vla get name(car commandInfo));提取事件Reactor reactEvent(vl符号名称(car reactCall));提取回调函数reactCallback(vl符号名(cdr reactCall))(警报(strcat)(“reactType”“reactData”“(vl princ to string(vlr reactions calling reactor))”)“\n已在以下dwg中反应:“\n-->”dwgname”“(vl princ to string(vlr notification calling reactor))”

renkor 发表于 2022-7-5 14:14:00

你好,我想猜猜Lisp程序是怎么回事,但我不能。。。
 
谁能给我解释一下吗?
 
谢谢
 

Jef! 发表于 2022-7-5 14:17:21

你好,Renkor。
这里有相当多的代码片段-正在进行中-主要的一段(我上一篇文章的最后一段代码)是关于主题的。它是一个反应器,当通过命令“starte”激活时,将自动更改“*REVCLOUDMAXARCLENGTH”&“*revcloudminarlength”变量(用于驱动修订云的尺寸)根据布局和dwg更改,模型中的值为300,图纸空间中的值为6。它还将在布局更改时自动缩放并扩展任何图纸空间。 
 
原始代码有一个被多次触发的副作用(它是Functional,但由于它打印了

renkor 发表于 2022-7-5 14:21:01

Ok, thanks a lot.
页: 1 [2]
查看完整版本: Lisp反应堆用于检测长安