找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1036|回复: 18
打印 上一主题 下一主题

怎么实现手动连续Copy Via?

[复制链接]

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
跳转到指定楼层
1#
发表于 2014-10-22 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位大侠怎么实现按我给的ix iy连续点击按钮就连续复制Via,界面如下图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!
~

7

主题

444

帖子

4989

积分

EDA365版主(50)

Rank: 5

积分
4989
推荐
发表于 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
复制代码
且帮楼主一次,下次问问题的时候一定要先做好调研,然后再整理好问题的表述

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
推荐
 楼主| 发表于 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

~

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

推荐
发表于 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. )
复制代码
谁画出这天地 又画下我和你

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

2#
发表于 2014-10-23 08:39 | 只看该作者
每次点击时,XY坐标按给定距离递增,再进行VIA创建

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
3#
 楼主| 发表于 2014-10-23 08:45 | 只看该作者
deargds 发表于 2014-10-23 08:39
每次点击时,XY坐标按给定距离递增,再进行VIA创建

原理是这样,但是按下按钮不是程序执行完毕了吗?怎么能让它中途暂停下来等待点击下一个命令呢?
~

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

4#
发表于 2014-10-23 09:03 | 只看该作者
lyh289114980 发表于 2014-10-23 08:45
原理是这样,但是按下按钮不是程序执行完毕了吗?怎么能让它中途暂停下来等待点击下一个命令呢?

正常情况执行完就会停止的,要看下具体的代码.
谁画出这天地 又画下我和你

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

6#
发表于 2014-10-23 09:28 | 只看该作者
lyh289114980 发表于 2014-10-23 09:07
axlClearSelSet()
    axlSetFindFilter(?enabled `("NOALL" "VIAS")
                             ?onBu ...

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

谁画出这天地 又画下我和你

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
7#
 楼主| 发表于 2014-10-23 09:45 | 只看该作者
deargds 发表于 2014-10-23 09:28
axlSelect放到while循环中来执行,这样就不会结束了

这样不行吧,把axlSelect放到循环中只是让你循环选择VIA啊,与手动连续点击按钮复制不同呀。
~

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

8#
发表于 2014-10-23 10:19 | 只看该作者
lyh289114980 发表于 2014-10-23 09:45
这样不行吧,把axlSelect放到循环中只是让你循环选择VIA啊,与手动连续点击按钮复制不同呀。

不是太明白你这个程序要实现的功能,还有操作的方式,代码能全部贴出来更好.
谁画出这天地 又画下我和你

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
9#
 楼主| 发表于 2014-10-23 10:36 | 只看该作者
deargds 发表于 2014-10-23 10:19
不是太明白你这个程序要实现的功能,还有操作的方式,代码能全部贴出来更好.

这个就是Ecopy1按钮的全部代码啊,我的操作方式是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中途选择一次Via),连续点击n次产生n个via。
~

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

11#
发表于 2014-10-23 11:31 | 只看该作者
本帖最后由 deargds 于 2014-10-23 11:40 编辑
lyh289114980 发表于 2014-10-23 10:36
这个就是Ecopy1按钮的全部代码啊,我的操作方式是:我在X1和Y1中输入两数值,然后点击Ecopy1这个按钮(中 ...

那用axlEnterPoint()来循环选点就行了,参考betamelody版主的代码
谁画出这天地 又画下我和你

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
12#
 楼主| 发表于 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).请注意我是连续点击按钮而不是连续点击屏幕上的任意点!
~

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
14#
 楼主| 发表于 2014-10-23 15:39 | 只看该作者
deargds 发表于 2014-10-23 13:16
如果你希望ECOPY1按钮首次点击时允许选择VIAS,然后后面的点击只执行COPY VIA动作,可以参考下面代码,不 ...

这个方法可以试试,谢谢!
~

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
15#
 楼主| 发表于 2014-10-23 18:06 | 只看该作者
deargds 发表于 2014-10-23 13:16
如果你希望ECOPY1按钮首次点击时允许选择VIAS,然后后面的点击只执行COPY VIA动作,可以参考下面代码,不 ...

版主请问下Allegro中的连线命令下的填写线宽的栏是怎么实现的,它可以选择以可以填写,而且它还能记住我填写过的线宽值,用skill怎么写?谢谢!
~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-1-11 21:03 , Processed in 0.067448 second(s), 36 queries , Gzip On.

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

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

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