EDA365电子论坛网

标题: 代码咨询。 [打印本页]

作者: EagleJi    时间: 2025-2-11 15:59
标题: 代码咨询。
procedure(less_angle()

axlSetFindFilter(?enabled list("noall" "CLINES") ?onButtons list("noall" "CLINES"))
axlClearSelSet()
axlAddSelectAll()
clines=axlGetSelSet()
axlClearSelSet()
foreach(cl clines
for(i 0 length(cl->segments)-2
  a=axlDBGetLength(nth(i cl->segments))
  b=axlDBGetLength(nth(i+1 cl->segments))
  c=axlDistance(car(nth(i cl->segments)->startEnd) cadr(nth(i+1 cl->segments)->startEnd))
  angle=acos((a**2+b**2-c**2)/(a*b*2))
;    if(a**2+b**2>=c**2 then
    if((acos((a**2+b**2-c**2)/(a*b*2))/3.141593)*180<134.9 then
;    if(angle<3.14*0.5 then
       axlHighlightObject(nth(i cl->segments) )
       axlHighlightObject(nth(i+1 cl->segments) )
      );if
     );for
        );foreach
)
axlCmdRegister("less_angle" 'less_angle)



求教,这段代码运行后,高亮的对象在allegro里执行取消高亮操作后,依旧显示高亮的状态,且没法取消。请问如果在此代码内完善此问题。


作者: db-_-    时间: 2025-2-11 16:40
复杂一点一般是增加右键菜单,用axlHighlightObject高亮,done后会自行清除高亮,印象中是这样。

图简单也可以把axlHighlightObject改成axlAddSelectObject,也能凑合用,切换另一个命令时就会取消高亮。
作者: EagleJi    时间: 2025-2-11 17:42
db-_- 发表于 2025-2-11 16:40
复杂一点一般是增加右键菜单,用axlHighlightObject高亮,done后会自行清除高亮,印象中是这样。

图简单 ...

我就知道,在365上才能解答此问题。
果然是大神,我问了一圈AI,给我的反馈都是axlHighlightObject这个命令会在后台一直刷新高亮这个动作,导致没有办法取消高亮。但是它们给的取消高亮的命令,全部都是在allegro里没定义的。着实是无奈。

我试了一下,简单的更换函数是可以完成高亮清楚的操作的。但是有点不好的是实际使用中,我们希望高亮的部分一直都亮着,让用户检查好后,自行消除。如果替换成axlAddSelectObject这个命令后,任意一个操作都可以消除高亮的对象,就不便于检查修改了。

大神,再帮帮忙。我初学者,命令不是很熟。

万分感谢!

作者: db-_-    时间: 2025-2-11 18:51
cline和seg好像是不支持永久高亮的(如果有,请大佬指教下)。所以我刚说的方法好像也行不通。

建议你还是用以前的方法高亮吧,实际上你用的是临时高亮,但是卡了一个BUG,所以去高亮不了,只能用奇怪的方法去高亮。可以再弄一个skill,一键清除高亮即可。比如下面的代码。
  1. skill axlDehighlightObject(setof(x flatten(axlDBGetDesign()->nets~>branches~>children~>segments) t) nil)
复制代码



作者: aarom    时间: 2025-2-12 00:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: aarom    时间: 2025-2-12 02:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: EagleJi    时间: 2025-2-12 15:28
db-_- 发表于 2025-2-11 18:51
cline和seg好像是不支持永久高亮的(如果有,请大佬指教下)。所以我刚说的方法好像也行不通。

建议你还 ...

实际操作了一下,虽然高亮取消不了,但是信号被移动后,就能自己消除高亮状态了。因此也能用。迫使用户在检查发现后,修改完毕,高亮状态就没了。多谢!
作者: cedard    时间: 2025-2-13 11:00
db-_- 发表于 2025-2-11 16:40
复杂一点一般是增加右键菜单,用axlHighlightObject高亮,done后会自行清除高亮,印象中是这样。

图简单 ...

求教一下增加右键功能是哪一个api,我之前好像看到过,有点忘记了,谢谢大佬

作者: db-_-    时间: 2025-2-13 11:02
cedard 发表于 2025-2-13 11:00
求教一下增加右键功能是哪一个api,我之前好像看到过,有点忘记了,谢谢大佬

axlUIPopupSetaxlUIPopupDefine

以及对应菜单的处理

作者: cedard    时间: 2025-2-13 11:19
db-_- 发表于 2025-2-13 11:02
axlUIPopupSetaxlUIPopupDefine

以及对应菜单的处理

谢谢大佬的无私回复





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2