Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6217|回复: 4

form界面按按钮,command会出现skill,但程序能完成,做多个按钮会退不出把

[复制链接]
发表于 2017-5-30 18:38:44 | 显示全部楼层 |阅读模式
本帖最后由 王开鑫55 于 2017-5-30 18:42 编辑

怎样解决command跳出skill?并没有循环,是按钮函数有bug?
/***********定义FORM!*********/                                                                    
axlCmdRegister("occ" 'actions)                                                                     
                                                                                                   
defun( actions ()                                                                                   
Createform()                                                                                    
)                                                                                               
                                                                                                   
/***********定义FORM!*********/                                                                    
defun( Createform ()                                                                                
let(()                                                                                          
  formPath = "./orignChange.form"                                                            
  pform = outfile( formPath "w")                                                              
                                                                                             
  ;form 头,可以用f_FormBegin(pform 31 10 "Free Origin" "TOOLWINDOW") f_FormEnd(pform)代替   
                                                                                             
  fprintf(pform "FILE_TYPE=FORM_DEFN VERSION=2\n")                                            
                                                                                                   
  fprintf(pform "FORM\n")                                                                     
                                                                                                   
  fprintf(pform "FIXED\n")                                                              
                                                                                                   
  fprintf(pform "PORT 31 10\n")                                                               
                                                                                             
  fprintf(pform "HEADER \"Move Origin\"\n")                                                   
                                                                                             
  fprintf(pform "TILE\n")                                                                     
                                                                                             
  ;主体开始                                                                                   
                                                                                             
  fprintf(pform "TEXT \"move origin\"\n")                                                     
                                                                                             
  fprintf(pform "FLOC 20 0\n")                                                               
                                                                                             
  fprintf(pform "ENDTEXT\n")                                                                  
                                                                                             
  fprintf(pform "GROUP \"Origin Manager\"\n")                                                
                                                                                                   
  fprintf(pform "FLOC 2 1\n")                                                                 
                                                                                             
  fprintf(pform "FSIZE 28 18\n")                                                              
                                                                                             
  fprintf(pform "ENDGROUP\n")                                                                 
                                                                                             
                                                                                             
                                                                                             
  fprintf(pform "FIELD jumpAnypad\n")                                                         
                                                                                             
  fprintf(pform "FLOC 3 3\n")                                                                 
                                                                                             
  fprintf(pform "MENUBUTTON \"AnyPad\" 8 4\n")                                                
                                                                                             
  fprintf(pform "ENDFIELD\n")                                                                 
                                                                                             
  fprintf(pform "TEXT \"Jump To Any Pad.\"\n")                                                
                                                                                             
  fprintf(pform "FLOC 12 4\n")                                                               
                                                                                             
  fprintf(pform "ENDTEXT\n")                                                                  
                                                                                             
  fprintf(pform "GROUP \"Message Field\"\n")                                                  
                                                                                             
  fprintf(pform "FLOC 2 19\n")                                                               
                                                                                             
  fprintf(pform "FSIZE 28 8\n")                                                               
                                                                                             
  fprintf(pform "ENDGROUP\n")                                                                 
                                                                                             
  fprintf(pform "TEXT\n")                                                                     
                                                                                             
  fprintf(pform "FLOC 4 21\n")                                                               
                                                                                                   
  fprintf(pform "INFO msg 28\n")                                                              
                                                                                             
  fprintf(pform "FSIZE 24 7\n")                                                               
                                                                                             
  fprintf(pform "ENDTEXT\n")                                                                  
  fprintf(pform "ENDTILE\n")                                                                  
                                                                                          
     fprintf(pform "ENDFORM\n");结束form文件制作                                                
                                                                                          
   close(pform);关闭输出端口。                                                            
                                                                                    
                                                                                          
   newform = axlFormCreate( (gensym) "orignChange.form" `(e inner) `OriginHandle t nil)   
                                                                                                   
   axlUIWPerm( newform t )                                                                 
                                                                                          
   axlFormDisplay( newform );显示此form                                                   
                                                                                          
   ;定义此form各个按钮调用相应的函数                                                      
   defvar( msg , "Click the key to select the origin location!" );defvar定义全局变量,变量m
   axlFormSetField( newform   "jumpAnypad"    nil)                                       
   axlFormSetField( newform   "msg"            msg);msg 插入部分的                        
                                                                                               
   deleteFile(formPath);删除form文件                                                      
  )                                                                                          
  )                                                                                          
                                                                                             
/***********触发函数部分!*********/                                                            
defun( OriginHandle (newform)                                                                     
                                                                                                   
           let( ()                                                                                 
            case( newform->curField                                                        
             ( "jumpAnypad"    jumpAnypad()  );   触发按钮时,command窗口调skill                                         
             );end case                                      
                 );end let                                                                          
            );defun pform_Action                                                                    
/***********按钮函数*********/                                                                     
  defun(  jumpAnypad ()                                                                           
                                                                                                   
   let( ()                                                                                    
    axlClearSelSet()                                                                           
    axlFormSetField( newform "msg" "Please Pick A Pad!")                                       
    axlSetFindFilter(?enabled list( "noall" "pins") ?onButtons list( "noall" "pins"));筛选      
    anyPin = axlGetSelSet(axlSingleSelectPoint())                                               
  when( anyPin                                                                                      
    orx = xCoord(car(anyPin)->xy)                                                               
    ory = yCoord(car(anyPin)->xy)                                                               
     axlDBChangeDesignOrigin(list(minus(orx) minus(ory)))                                       
    ;anyPin = car(anyPin)                                                                       
    ;axlFormSetField( newform "msg" sprintf( nil "The Origin Move to Pin%L!" (anyPin->numbe)))  
    )                                                                                             
      );let                                                                                         
          axlClearSelSet()                                                                    
          axlDBRefreshId(nil);debug,避免连续多次出现定位出错的bug!                          
          );end defun jumpAnypad                                                              

skill

skill
 楼主| 发表于 2017-6-2 12:58:29 | 显示全部楼层
来个人,帮忙看一下呀
发表于 2017-6-5 14:04:13 | 显示全部楼层
  anyPin = axlGetSelSet(axlSingleSelectPoint())              有问题。
 楼主| 发表于 2017-6-5 17:00:16 | 显示全部楼层
vivienluo 发表于 2017-6-5 14:04
anyPin = axlGetSelSet(axlSingleSelectPoint())              有问题。

楼主,有时间帮我改一下呀,不知道为啥出线skill,先点选在得到他的dbid好像没有错有啊,我理解的哟问题?
 楼主| 发表于 2017-6-7 21:49:55 | 显示全部楼层
换成这样,按按钮的时候,左下方还是出现skill
axlSingleSelectPoint()      
anyPin = car(axlGetSelSet())
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-26 14:22 , Processed in 0.153611 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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