在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1242|回复: 8

[求助] layout界面添加菜单后如何弹出对话框并输入参数

[复制链接]
发表于 2024-1-2 17:23:07 | 显示全部楼层 |阅读模式
500资产
本帖最后由 Faker95278136 于 2024-1-2 17:26 编辑

请问,现在skill脚本已经写好,可以在CIW中调用相应函数并输入参数。有什么函数能弹出一个对话框,然后在相应位置输入参数,最后点确定键完成函数调用呢?
(下面是测试用的代码,针对程序里的x r R,希望效果是点击新生成的下拉菜单A的子菜单A1后,弹出对话框、输入三个参数(对应x r R),然后执行函数

11.png
22.png

最佳答案

发表于 2024-1-2 17:23:08 | 显示全部楼层
看8F
发表于 2024-1-2 18:00:15 | 显示全部楼层
本帖最后由 着着着火了 于 2024-1-2 18:01 编辑

写form,form的callback调用你的X(x r R)
菜单处的callback调用form,form调用X(...)
 楼主| 发表于 2024-1-2 19:51:53 | 显示全部楼层
代码如下:
 楼主| 发表于 2024-1-2 19:59:11 | 显示全部楼层


procedure(X(x r R)

cv=geGetEditCellView()
DonutGR=dbCreateDonut(cv list("METAL1" "drawing") x:0 R r)
rectGR=dbCreateRect(cv list("METAL1" "drawing") list(x:0 x+R:R))
dbLayerAnd(cv "METAL1" list(DonutGR) list(rectGR))
dbDeleteObject(DonutGR rectGR)
)
A1=hiCreateMenuItem(?name "A1" ?itemText "A1" ?callback "X(80 5 10)")
A=hiCreatePullDownMenu('A "A" list(A1))
hiInsertBannerMenu(getCurrentWindow()  A hiGetNumMEnus(getCurrentWindow())
)
 楼主| 发表于 2024-1-2 21:56:13 | 显示全部楼层
或者换一个问法,针对这样的需要输入多个参数生效的函数,怎么把它写成一个load .il之后,弹一个窗口出来让你输入这几个参数后再生效的形式?
33.png
 楼主| 发表于 2024-1-3 08:53:59 来自手机 | 显示全部楼层


着着着火了 发表于 2024-1-2 18:00
写form,form的callback调用你的X(x r R)
菜单处的callback调用form,form调用X(...)


可以给一下具体代码么
发表于 2024-1-3 09:28:10 | 显示全部楼层


Faker95278136 发表于 2024-1-3 08:53
可以给一下具体代码么


一个实现两个窗口跟随zoom的skill脚本
https://bbs.eetop.cn/thread-948611-1-1.html
(出处: EETOP 创芯网论坛 (原名:电子顶级开发网))


我在这个贴子里提了一些相关的用法,最后面贴了一张截图,你可以看看。我写的很多个脚本都有用到form,要是不知道form怎么写也可以找几个下下来参考参考。

发表于 2024-1-3 17:41:10 | 显示全部楼层





  1. procedure( Layout_InstallTrigger()
  2.     if(atof(substring(getSkillVersion() 6)) >= 37 then
  3.         deRegUserTriggers("maskLayoutXL" nil nil 'MyLayoutPulldownMenu)
  4.         )
  5.     if(atof(substring(getSkillVersion() 6)) < 37 then
  6.         deRegUserTriggers("maskLayout" nil nil 'MyLayoutPulldownMenu)
  7.         )
  8. ) ; procedure
  9. Layout_InstallTrigger()


  10. procedure( MyLayoutPulldownMenu(args)
  11. let((  menu_list_lay (window args->window))
  12.     menu_list_lay = list(
  13.                         hiCreateMenuItem(
  14.                                        ?name 'item1
  15.                                        ?itemText "CreateDonut"
  16.                                        ?callback "myCreateDonutForm()"
  17.                            )
  18.                         hiCreateMenuItem(
  19.                                        ?name 'item2
  20.                                        ?itemText "item2"
  21.                                        ?callback "
  22.                         hiDisplayAppDBox(
  23.                             ?name 'infoBox
  24.                             ?dboxBanner "This is Item2"
  25.                             ?buttonLayout 'Close
  26.                             ?dboxText "Nothing here!"
  27.                         )
  28.                         
  29.                         "
  30.                            )
  31.                                         ); list
  32.         hiCreatePulldownMenu(
  33.                'MyLayoutPulldownMenu
  34.                "My Layout Utils"
  35.                menu_list_lay
  36.         ) ; hiCreatePulldownMenu
  37.     hiInsertBannerMenu(window 'MyLayoutPulldownMenu length(hiGetBannerMenus(window)))
  38. );let
  39. )


  40. ;;;;;;;;;;;;;

  41. procedure(myCreateDonutForm()
  42. let((out_R hole_R xCoord  myCreateDonutForm fields_list)
  43.     fields_list=list(
  44.         hiCreateStringField(
  45.             ?name 'out_R
  46.             ?prompt "Donut out R"
  47.             ?defValue "10"
  48.             )
  49.         hiCreateStringField(
  50.             ?name 'hole_R
  51.             ?prompt "Donut hole R"
  52.             ?defValue "5"
  53.             )
  54.         hiCreateStringField(
  55.             ?name 'xCoord
  56.             ?prompt "X coord:"
  57.             ?defValue "80"
  58.             )
  59.         )

  60.         myCreateDonutForm=hiCreateAppForm(
  61.             ?name 'myCreateDonutForm
  62.             ?formTitle "Create Donut Form"
  63.             ?callback   " myCreateDonutCallback(myCreateDonutForm)"
  64.             ?fields fields_list
  65.             ?unmapAfterCB
  66.             t
  67.             )
  68.         hiDisplayForm(myCreateDonutForm)
  69.     )
  70. )


  71. procedure(myCreateDonutCallback(form)
  72. let((x R r)
  73.     x = atof(form ~> xCoord  ~>  value)
  74.     R = atof(form ~> out_R   ~>  value)
  75.     r = atof(form ~> hole_R  ~>  value)
  76.     myCreateDonut(x r R)

  77. )
  78. )



  79. procedure(myCreateDonut(x r R)
  80. let((cvid DonutGR rectGR )
  81.     cvid    =   getEditRep()
  82.     DonutGR =   dbCreateDonut(  cvid  list("m0" "drawing") x:0 R r)
  83.     rectGR  =   dbCreateRect(   cvid  list("m0" "drawing") list(x:0 x+R:R))
  84.     dbLayerAnd(cvid "m0" list(DonutGR) list(rectGR))
  85.     dbDeleteObject(DonutGR rectGR)
  86.     )
  87. )


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 17:34 , Processed in 0.023805 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表