Aftertouch 发表于 2022-7-6 23:22:02

Ribbon Diesel函数

大家好,
 
我在功能区中再次遇到了一些关于DIESEL函数的问题。。。
 
当“UserI3”为2时,我想要一个功能区按钮高亮显示。
 
我使用以下代码:

$(if,$(and,2,$(getvar,UserI3)),!.)

 
但当UserI3为2或3时,该按钮会高亮显示。
为什么会这样?
 
而且
当值为1或4时,如果我希望按钮高亮显示,代码会是什么样子?

tombu 发表于 2022-7-6 23:40:38

首先,当UserI3为2或3时,它应该高亮显示,因为1+2=3,请参见AutoCAD帮助中的logand(AutoLISP),它与DIESEL中的“and”函数相同。
 
Diesel函数在快捷菜单中效果很好,但在功能区中效果不太好。功能区显示不会在每次更改设置时重新生成。当您在功能区中单击它时,它可能会起作用,但如果您在命令行或lisp例程中更改了值,它将不会更改。每次打开快捷菜单时都会生成快捷菜单,因此它们总是最新的。
 
从2006年开始我就开始使用
$(if,$(and,16384,$(getvar,osmode)),,$(if,$(and,1,$(getvar,osmode)),!.))&Endpoint作为对象捕捉光标菜单中端点的显示名称。仅当同时启用Osnap和设置端点捕捉时,才会高亮显示。我所有的快照都是这样设置的。
 
您可以从该菜单中创建另一个弹出按钮,也可以创建自己的弹出按钮。现在还不知道你真正想做什么,但也许你正在寻找一个对话框,其中包含从USERI值加载的值。

Aftertouch 发表于 2022-7-6 23:46:29

嘿tombu,
 
我不得不说你错了。
每次我用lisp/命令行更改变量时,功能区按钮都会更新。
如果我使用:(setvar“UserI3”1)然后(setvar“UserI3”2)然后(setvar“UserI3”3)等等。。。它每次都会更新。。。
 
它只是没有按我想要的方式更新。:-)

tombu 发表于 2022-7-6 23:55:34

 
你说得对,现在它确实每次都在更新,相信这是2017年的新功能。太棒了,我得在我的缎带上再加一些。
 
要在UserI3中打开和关闭位代码1,我将使用
使用

$(if,$(and,2,$(getvar,UserI3)),!.)
作为显示名称。
 
要在UserI3中打开和关闭位代码2,我将使用
使用

$(if,$(and,2,$(getvar,UserI3)),!.)
作为显示名称。
 
要在UserI3中打开和关闭位代码4,我将使用
使用

$(if,$(and,2,$(getvar,UserI3)),!.)
作为显示名称。
 
你查看了我在上面发布的帮助链接了吗?
你知道为什么当“UserI3”为2、3(2+1)、6(2+4)、7(2+1+4)等时,功能区按钮会高亮显示。如果没有添加2位代码,将其设置为1、4、5(4+1)等,则不会高亮显示。

Aftertouch 发表于 2022-7-7 00:05:37

嘿Tombu,
很高兴听到你也要使用这个功能!
 
再次感谢您的代码。。。它接近我需要的,但不完全是。
我会尽力解释我在找什么。。。
 
我有一个命令,在某些情况下使用UserI3。关闭过滤。该命令还更改了UserI3的值。
变量UserI3可以是:1、2、3或4。这不是一个位数或任何东西,它只是我在LISP中读取的一个数字,它会根据这个数字做一些事情。。。
 
如果UserI3的值是2或3,我想使用“Displayname”突出显示一个按钮。
 
在lisp中,我会使用以下内容:
 
8
但我无法将其转换为柴油机。

tombu 发表于 2022-7-7 00:18:17

只需要问一下,为什么决定不使用位码来限制USERI3?
9将满足您的需求。

Aftertouch 发表于 2022-7-7 00:26:12

嘿,汤布,再次感谢你的回复。我很接近,但我一直搞砸了美元和,符号。。。
 
好我不使用它们作为位代码的原因是因为我不知道如何在我的情况下正确使用变量作为位代码。。。每个用户数3都链接到一组变量。通过突出显示的按钮,我想显示属性在特定集合中设置为开或关。
我像某种视觉检查方法一样使用色带。
而不是使用可变控件或一些对话框。。。所有的数字都是随机的,所以我认为它不能进行位编码。此外,我必须承认,我不知道如何设置位代码…:-)
页: [1]
查看完整版本: Ribbon Diesel函数