找回密码
 注册
关于网站域名变更的通知

怎么实现手动连续Copy Via?

查看数: 2283 | 评论数: 18 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-10-22 18:27

正文摘要:

请问各位大侠怎么实现按我给的ix iy连续点击按钮就连续复制Via,界面如下图

回复

betamelody 发表于 2014-10-23 11:08
  1. axlUIPopupSet(mypopup)
  2. axlSelect(?prompt "Select vias by pick or window.")
  3. vias = axlGetSelSet()
  4. via = car(vias)
  5. xy = nil
  6. when(via
  7.   println("11")
  8.   axlClearSelSet()
  9.   while(xy = axlEnterPoint()
  10.     axlCopyObject(via ?move list(xCoord(xy)-xCoord(via->xy) yCoord(xy)-yCoord(via->xy)) ?retainNet nil)
  11.     axlVisibleUpdate(t)
  12.   )
  13.   axlShell("done")
  14. );end when
复制代码
且帮楼主一次,下次问问题的时候一定要先做好调研,然后再整理好问题的表述
lyh289114980 发表于 2014-10-23 09:07
deargds 发表于 2014-10-23 09:03
正常情况执行完就会停止的,要看下具体的代码.

                  axlClearSelSet()
    axlSetFindFilter(?enabled `("NOALL" "VIAS")
                             ?onButtons `("VIAS"))
       mypopup = axlUIPopupDefine( nil
                 (list (list "Done" 'axlFinishEnterFun)
                 (list "Cancel" 'axlCancelEnterFun)))
    axlUIPopupSet( mypopup)       


    ; Use the generic select instead of box, so the user can use temp group
    axlSelect(?prompt "Select vias by pick or window.");   
    vias = axlGetSelSet()       
    x3=axlFormGetField(copyform "X11")
    y3=axlFormGetField(copyform "Y11")
    x=atof(x3)
    y=atof(y3)
       
        when(vias       
                axlCopyObject(vias, ?move x:y ?retainNet nil)
                axlVisibleUpdate(t)                                           
     );end when  
     );end defun

deargds 发表于 2014-10-23 13:16
本帖最后由 deargds 于 2014-10-23 16:37 编辑
lyh289114980 发表于 2014-10-23 12:15
唉。。。。算我描述不清吧,我的意思是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中途选择一次 ...

如果你希望ECOPY1按钮首次点击时允许选择VIAS,然后后面的点击只执行COPY VIA动作,可以参考下面代码,不过你需要在一次操作完成后将VIAS变量清除掉,以便下次选择目标VIA时生效:  另外针对程序建议选择目标VIA的动作跟COPY的动作分开来处理.
  1. unless(boundp('vias)
  2.         axlClearSelSet()
  3.         axlSetFindFilter(?enabled `("NOALL" "VIAS")
  4.         ?onButtons `("VIAS"))
  5.         mypopup = axlUIPopupDefine( nil
  6.         (list (list "Done" 'axlFinishEnterFun)
  7.         (list "Cancel" 'axlCancelEnterFun)))
  8.         axlUIPopupSet( mypopup)      

  9.         ; Use the generic select instead of box, so the user can use temp group
  10.         axlSelect(?prompt "Select vias by pick or window.");   
  11.         vias = axlGetSelSet()      
  12. )
复制代码
pallayout 发表于 2014-10-25 19:37
头都看晕了,执行copy命令,设一下参数就好,
lyh289114980 发表于 2014-10-24 09:01
deargds 发表于 2014-10-23 19:48
常规的输入框中添加POP定义即可,记忆参数需要在程序中做相应的处理。
FIELD xxx
FLOC 1 11\

谢谢版主,按照你格式已经好了。感谢!!!!
lyh289114980 发表于 2014-10-23 21:18
deargds 发表于 2014-10-23 19:48
常规的输入框中添加POP定义即可,记忆参数需要在程序中做相应的处理。
FIELD xxx
FLOC 1 11\

这个我会啊,但是只有自己预设的几个值啊,不能填写。是我哪出错了么
deargds 发表于 2014-10-23 19:48
lyh289114980 发表于 2014-10-23 18:06
版主请问下Allegro中的连线命令下的填写线宽的栏是怎么实现的,它可以选择以可以填写,而且它还能记住我 ...

常规的输入框中添加POP定义即可,记忆参数需要在程序中做相应的处理。
FIELD xxx
FLOC 1 11\
STRFILLIN 26 52
POP YourPopup
ENDFIELD
lyh289114980 发表于 2014-10-23 18:06
deargds 发表于 2014-10-23 13:16
如果你希望ECOPY1按钮首次点击时允许选择VIAS,然后后面的点击只执行COPY VIA动作,可以参考下面代码,不 ...

版主请问下Allegro中的连线命令下的填写线宽的栏是怎么实现的,它可以选择以可以填写,而且它还能记住我填写过的线宽值,用skill怎么写?谢谢!
lyh289114980 发表于 2014-10-23 15:39
deargds 发表于 2014-10-23 13:16
如果你希望ECOPY1按钮首次点击时允许选择VIAS,然后后面的点击只执行COPY VIA动作,可以参考下面代码,不 ...

这个方法可以试试,谢谢!
lyh289114980 发表于 2014-10-23 12:15
betamelody 发表于 2014-10-23 11:08
且帮楼主一次,下次问问题的时候一定要先做好调研,然后再整理好问题的表述

唉。。。。算我描述不清吧,我的意思是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中途选择一次Via,它的坐标a:b),连续点击n次按钮产生坐标n个via,这些Via的坐标依次为:(a+x^1,b+y^1);(a+x^2,b+y^2);(a+x^3,b+y^3)..........;(a+x^n,b+y^n).请注意我是连续点击按钮而不是连续点击屏幕上的任意点!
deargds 发表于 2014-10-23 11:31
本帖最后由 deargds 于 2014-10-23 11:40 编辑
lyh289114980 发表于 2014-10-23 10:36
这个就是Ecopy1按钮的全部代码啊,我的操作方式是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中 ...

那用axlEnterPoint()来循环选点就行了,参考betamelody版主的代码
lyh289114980 发表于 2014-10-23 10:36
deargds 发表于 2014-10-23 10:19
不是太明白你这个程序要实现的功能,还有操作的方式,代码能全部贴出来更好.

这个就是Ecopy1按钮的全部代码啊,我的操作方式是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中途选择一次Via),连续点击n次产生n个via。
deargds 发表于 2014-10-23 10:19
lyh289114980 发表于 2014-10-23 09:45
这样不行吧,把axlSelect放到循环中只是让你循环选择VIA啊,与手动连续点击按钮复制不同呀。

不是太明白你这个程序要实现的功能,还有操作的方式,代码能全部贴出来更好.
lyh289114980 发表于 2014-10-23 09:45
deargds 发表于 2014-10-23 09:28
axlSelect放到while循环中来执行,这样就不会结束了

这样不行吧,把axlSelect放到循环中只是让你循环选择VIA啊,与手动连续点击按钮复制不同呀。
deargds 发表于 2014-10-23 09:28
lyh289114980 发表于 2014-10-23 09:07
axlClearSelSet()
    axlSetFindFilter(?enabled `("NOALL" "VIAS")
                             ?onBu ...

axlSelect放到while循环中来执行,这样就不会结束了

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 09:51 , Processed in 0.187500 second(s), 31 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表