Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 30377|回复: 40

[求助] 在调用Form后如何先关闭Form再执行后续程序?

[复制链接]
发表于 2015-8-31 10:51:32 | 显示全部楼层 |阅读模式
本帖最后由 leilei4908 于 2015-8-31 10:57 编辑

  1. procedure( V2VFormAction(V2VForm)
  2. run = nil
  3. case( V2VForm->curField
  4. ("CMD_OK"
  5. axlFormClose(V2VForm)
  6. axlCancelEnterFun( )
  7. run = 1
  8. ); --------------------------
  9. )
  10. if(run then
  11. axlClearSelSet()
  12. axlSetFindFilter(?enabled '("noall" "vias") ?onButtons '("noall" "vias"))
  13. axlUIConfirm("Please Choose The Box By Mouse")
  14. axlSingleSelectBox()
  15. )
  16. )
复制代码


为什么弹出确认框前没有关闭V2VForm,而是执行完所有程序后才关闭的?是因为之后的程序还在procedure函数内么?
有没有什么方法在弹出确认框前就关闭V2VForm?

发表于 2015-8-31 18:54:14 来自手机 | 显示全部楼层
我遇到的情况是运行起来后比较卡,呈现的现象就是没有及时关掉。
发表于 2015-8-31 22:24:53 | 显示全部楼层
完整的代码贴一个。是不是函数的位置放错了
 楼主| 发表于 2015-9-1 09:07:25 | 显示全部楼层
  1. axlCmdRegister( "Via2ViaDistance" `Via2ViaDistance)
  2. procedure( Via2ViaDistance()
  3.         V2VForm = axlFormCreate( (gensym) "Via2Via.form" nil 'V2VFormAction t nil )
  4.         axlFormDisplay(V2VForm)
  5. )
  6. procedure( V2VFormAction(V2VForm)
  7.         run = nil
  8.         case( V2VForm->curField
  9.                 ("Box"
  10.                         axlFormClose(V2VForm)  
  11.                         axlCancelEnterFun( )
  12.                         run = 1
  13.                 ); --------------------------
  14.                 ("All"
  15.                         axlFormClose(V2VForm)  
  16.                         axlCancelEnterFun( )
  17.                         run = 2
  18.                 ); --------------------------
  19.         )
  20.         if(run then
  21.                 axlClearSelSet()
  22.                 axlSetFindFilter(?enabled '("noall" "vias")        ?onButtons '("noall" "vias"))
  23.                 if(run == 1 then
  24.                         axlUIConfirm("Please Choose The Box")
  25.                         axlSingleSelectBox()
  26.                 else
  27.                         axlAddSelectAll()
  28.                 )
  29.                 via_all_listi = axlGetSelSet()
  30.                 via_all_listj = cdr(via_all_listi)
  31.                 axlClearSelSet()
  32.                 ...
  33.                 axlVisibleDesign(nil);隐藏所有层面
  34.                 axlVisibleLayer("via class/top" t);显示via class-top
  35.                 axlVisibleLayer("via class/bottom" t);显示via class-bottom
  36.                 axlVisibleLayer("board geometry/outline" t)
  37.                 axlVisibleLayer("package geometry/silkscreen_top" t);
  38.                 axlVisibleLayer("package geometry/silkscreen_bottom" t);
  39.                 axlVisibleUpdate(t);立即更新
  40.         )
  41.         axlSetFindFilter(?enabled '("all")        ?onButtons '("noall" "vias"))
  42. )
  43. axlSetAlias("v2v" "Via2ViaDistance")
复制代码

不好意思,不能提供完整的源码,部分与问题不相关的已经删除
 楼主| 发表于 2015-9-1 09:09:34 | 显示全部楼层
本帖最后由 leilei4908 于 2015-9-1 09:10 编辑
vivienluo 发表于 2015-8-31 22:24
完整的代码贴一个。是不是函数的位置放错了


部分源码已贴,我估计是函数放错位置了
省略掉的部分有很大的计算量,是不是因为这个?
有什么修改建议么?
发表于 2015-9-1 10:55:22 | 显示全部楼层
把运行部分做到一个函数里面试试。。。
 楼主| 发表于 2015-9-1 11:43:39 | 显示全部楼层
  1. axlCmdRegister( "Via2ViaDistance" `Via2ViaDistance)
  2. procedure( Via2ViaDistance()
  3.         V2VForm = axlFormCreate( (gensym) "Via2Via.form" nil 'V2VFormAction t nil )
  4.         axlFormDisplay(V2VForm)
  5. )
  6. run = nil
  7. procedure( V2VFormAction(V2VForm)
  8.         case( V2VForm->curField
  9.                 ("Box"
  10.                         axlFormClose(V2VForm)  
  11.                         axlCancelEnterFun( )
  12.                         run = 1
  13.                 ); --------------------------
  14.                 ("All"
  15.                         axlFormClose(V2VForm)  
  16.                         axlCancelEnterFun( )
  17.                         run = 2
  18.                 ); --------------------------
  19.         )
  20. )
  21. procedure( check()
  22.         if(run then
  23.                 axlClearSelSet()
  24.                 axlSetFindFilter(?enabled '("noall" "vias")        ?onButtons '("noall" "vias"))
  25.                 if(run == 1 then
  26.                         axlUIConfirm("Please Choose The Box")
  27.                         axlSingleSelectBox()
  28.                 else
  29.                         axlAddSelectAll()
  30.                 )
  31.                 via_all_listi = axlGetSelSet()
  32.                 via_all_listj = cdr(via_all_listi)
  33.                 axlClearSelSet()
  34.                 ...
  35.                 axlVisibleDesign(nil);隐藏所有层面
  36.                 axlVisibleLayer("via class/top" t);显示via class-top
  37.                 axlVisibleLayer("via class/bottom" t);显示via class-bottom
  38.                 axlVisibleLayer("board geometry/outline" t)
  39.                 axlVisibleLayer("package geometry/silkscreen_top" t);
  40.                 axlVisibleLayer("package geometry/silkscreen_bottom" t);
  41.                 axlVisibleUpdate(t);立即更新
  42.         )
  43.         axlSetFindFilter(?enabled '("all")        ?onButtons '("noall" "vias"))
  44. )
  45. axlSetAlias("v2v" "Via2ViaDistance")
复制代码

也就是要改成这样的么?
发表于 2015-9-1 14:02:21 | 显示全部楼层
leilei4908 发表于 2015-9-1 11:43
也就是要改成这样的么?

试试。不行的话我可以帮你修改修改
 楼主| 发表于 2015-9-1 15:13:39 | 显示全部楼层
本帖最后由 leilei4908 于 2015-9-1 15:38 编辑
vivienluo 发表于 2015-9-1 14:02
试试。不行的话我可以帮你修改修改


这个到是可以搁置一段时间,现在主要要解决封闭lines创建shape的功能
  1. axlClearSelSet()
  2. axlSetFindFilter(?enabled '("noall" "lines")        ?onButtons '("noall" "lines"))
  3. axlSingleSelectBox()
  4. lines_listi = axlGetSelSet()
  5. axlClearSelSet()
  6. foreach(i lines_listi
  7.         print(i->objType)
  8. )
复制代码

为什么这里的objType都是"Path"?我需要把FindFilter的"lines"改成"linesegs"么?
对这些获取到的线段,我怎么判断是否是封闭图形?然后要转换成path?转成poly?最后转成shape?
官方的conpose shape是怎么做的?
发表于 2015-9-1 16:55:46 | 显示全部楼层
leilei4908 发表于 2015-9-1 15:13
这个到是可以搁置一段时间,现在主要要解决封闭lines创建shape的功能

为什么这里的objType都是"Path ...

判断一个path的起点或终点坐标与另一个path的起点或终点坐标是否一致。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-24 00:16 , Processed in 0.133526 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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