Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17298|回复: 21

如何实现form里面根据层面分别显示routekeepout 和constriant region

[复制链接]
发表于 2014-11-29 10:56:15 | 显示全部楼层 |阅读模式
如题,如何实现form里面根据层面分别显示routekeepout 和constriant region,用什么语句
图像 1.jpg
 楼主| 发表于 2014-11-30 12:30:53 | 显示全部楼层
Text_Loc=9
  Nun_lay=0
  (foreach Item Etch_Layers
    Nun_lay=Nun_lay+1
    fprintf(lstForm "TEXT \"%d\"\n" Nun_lay)
    fprintf(lstForm "TLOC 2 %d\n" Text_Loc)
    fprintf(lstForm "ENDTEXT\n")

    fprintf(lstForm "TEXT \"%s\"\n" Item)
    fprintf(lstForm "TLOC 5 %d\n" Text_Loc)
    fprintf(lstForm "ENDTEXT\n")

    fprintf(lstForm "FIELD %s_Control\n" Item)
    fprintf(lstForm "FLOC 12 %d\n" Text_Loc)
    fprintf(lstForm "COLOR 2 1\n")
    fprintf(lstForm "ENDFIELD\n")

    Text_Loc=Text_Loc + 2
  ); end foreach Item Etch_Layers

代码如上 如何分层显示%s_Control 对应的routekeepout
图像 1.jpg
 楼主| 发表于 2014-11-30 12:53:05 | 显示全部楼层
比如点击top 后面 KO下方的框 显示route keepout top ,并且显示他的颜色
 楼主| 发表于 2014-11-30 13:19:16 | 显示全部楼层
(foreach Item Etch_Layers
   ("%s_control" Item)

    if(PalColor_form->curValue then  
                                axlVisibleLayer("route keepout/%s Item" t)
                                axlVisibleUpdate(t)
                else
                                axlVisibleLayer("route keepout/%s Item" nil)
                                axlVisibleUpdate(nil)
)
)
请问哪里有问题 或者怎么改一下
发表于 2014-12-1 13:00:50 来自手机 | 显示全部楼层
你的%s没法传递值啊。
 楼主| 发表于 2014-12-2 13:26:49 | 显示全部楼层
要如何實現傳遞指,  我就是想如圖片, 點擊對應的層面顯示對應層面的routekeepout
 楼主| 发表于 2014-12-2 13:30:30 | 显示全部楼层
mm= stract(Item "_control")  
("mm"
  if(PalColor_form->curValue then  
                                axlVisibleLayer("route keepout/Item" t)
                                axlVisibleUpdate(t)
                else
                                axlVisibleLayer("route keepout/Item" nil)
                                axlVisibleUpdate(nil)
   ) 這樣 要如果改正
 楼主| 发表于 2014-12-2 13:32:44 | 显示全部楼层

mm= stract(Item "_control")  
("mm"
  if(PalColor_form->curValue then  
mn=stract(route keepout/ "Item")  
                                axlVisibleLayer("mn" t)
                                axlVisibleUpdate(t)
                else
                                axlVisibleLayer("mn" nil)
                                axlVisibleUpdate(nil)
   )
 楼主| 发表于 2014-12-2 21:58:30 | 显示全部楼层

axlCmdRegister("alColor" 'PalColor)
defun( PalColor ()
Etch_Layers=(axlGetParam("paramLayerGroup:ETCH")->groupMembers)

  formFileName = "./PalColor.form"
  PalColor_form_create()
  
  alColor_form = axlMiniStatusLoad('form, formFileName 'PalColor_action t)
  PalColor_form = axlFormCreate( (gensym) formFileName `(ne inner "msglines" 2) `PalColor_action t nil)
  axlFormDisplay(PalColor_form)
  deleteFile(formFileName)
  axlControlRaise('options)
)


procedure(PalColor_form_create()
Num_Lay=0
  (foreach Item Etch_Layers
    Num_Lay=Num_Lay + 1
  ); end foreach Item Etch_Layers
  Port_Size=Num_Lay + 15


        lstForm = outfile( formFileName "w")
        fprintf(lstForm "FILE_TYPE=FORM_DEFN VERSION=2\n")
        fprintf(lstForm "FORM\n")
        fprintf(lstForm "FIXED\n")
        fprintf(lstForm "ORT 40 10\n")
        fprintf(lstForm "HEADER \"Change Block\"\n")
        fprintf(lstForm "TILE\n")
        
        fprintf(lstForm "TEXT \"Global Visibility:\"\n")
        fprintf(lstForm "FLOC 2 1\n")
        fprintf(lstForm "ENDTEXT\n")
        
        fprintf(lstForm "FIELD btnVisAllOn\n")
        fprintf(lstForm "FLOC 10 1\n")
        fprintf(lstForm "MENUBUTTON \"On\" 5 3\n")
        fprintf(lstForm "ENDFIELD\n")

        fprintf(lstForm "FIELD btnVisAllOff\n")
        fprintf(lstForm "FLOC 16 1\n")
        fprintf(lstForm "MENUBUTTON \"Off\" 5 3\n")
        fprintf(lstForm "ENDFIELD\n")
        
        fprintf(lstForm "TEXT \"Outline\"\n")
        fprintf(lstForm "FLOC 2 4\n")
        fprintf(lstForm "ENDTEXT\n")

        fprintf(lstForm "FIELD clrOutline\n")
        fprintf(lstForm "FLOC 10 4\n")
        fprintf(lstForm "COLOR 3 1\n")
        fprintf(lstForm "ENDFIELD\n")


  fprintf(lstForm "GROUP \"Etch Layers\"\n")
  fprintf(lstForm "GLOC 1 5\n")
  fprintf(lstForm "GSIZE 20 %d\n" Num_Lay * 2 + 4 )
  fprintf(lstForm "ENDGROUP\n")
fprintf(lstForm "TEXT \"KO\"\n")
fprintf(lstForm "OPTIONS underline\n")

        fprintf(lstForm "FLOC 12 7\n")
        fprintf(lstForm "ENDTEXT\n")
  ;-------------------------------;
  ; Set the layer toggle buttons  ;
  ;-------------------------------;
  Text_Loc=9
  Nun_lay=0
  (foreach Item Etch_Layers
    Nun_lay=Nun_lay+1
    fprintf(lstForm "TEXT \"%d\"\n" Nun_lay)
    fprintf(lstForm "TLOC 2 %d\n" Text_Loc)
    fprintf(lstForm "ENDTEXT\n")

    fprintf(lstForm "TEXT \"%s\"\n" Item)
    fprintf(lstForm "TLOC 5 %d\n" Text_Loc)
    fprintf(lstForm "ENDTEXT\n")

    fprintf(lstForm "FIELD %s_control\n" Item)
    fprintf(lstForm "FLOC 12 %d\n" Text_Loc)
    fprintf(lstForm "COLOR 2 1\n")
    fprintf(lstForm "ENDFIELD\n")

    Text_Loc=Text_Loc + 2
  ); end foreach Item Etch_Layers


        
        fprintf(lstForm "ENDTILE\n")
        fprintf(lstForm "ENDFORM\n")
        close(lstForm)
)



defun(PalColor_action (PalColor_form)

case(PalColor_form->curField


   ("clrOutline"
         


if(PalColor_form->curValue then  
                                axlVisibleLayer("BOARD GEOMETRY/OUTLINE" t)
                                axlVisibleUpdate(t)
                else
                                axlVisibleLayer("BOARD GEOMETRY/OUTLINE" nil)
                                axlVisibleUpdate(nil)
)

if(axlIsVisibleLayer("BOARD GEOMETRY/OUTLINE") then
     clrlayer=axlLayerGet("BOARD GEOMETRY/OUTLINE")
     axlFormSetField( PalColor_form "clrOutline" clrlayer->color )
         axlVisibleUpdate(nil)
  else
         axlFormSetField( PalColor_form "clrOutline" 'black)
    )

   
   )

("btnVisAllOff"
                                    axlVisibleDesign(nil)       
                            axlVisibleUpdate(nil)   
                ;Button Field
                ;Enter Action Here
               
                )
("btnVisAllOn"
                                    axlVisibleDesign(t)       
                            axlVisibleUpdate(t)   
                ;Button Field
                ;Enter Action Here
               
                )

(foreach Item Etch_Layers
mm=strcat(etch/ "Item")
mn=strcat(Item "_control")
("mn"
if(PalColor_form->curValue then  
                                axlVisibleLayer("mm" t)
                                axlVisibleUpdate(t)
                else
                                axlVisibleLayer("mm" nil)
                                axlVisibleUpdate(nil)
)

)
)


))

        
        
 楼主| 发表于 2014-12-2 21:59:34 | 显示全部楼层
请帮忙看怎么传递函数的值 , 实现layer 分层控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 09:05 , Processed in 0.157244 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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