王开鑫55 发表于 2017-5-30 18:38:44

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

本帖最后由 王开鑫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                                                            

王开鑫55 发表于 2017-6-2 12:58:29

来个人,帮忙看一下呀

vivienluo 发表于 2017-6-5 14:04:13

anyPin = axlGetSelSet(axlSingleSelectPoint())            有问题。

王开鑫55 发表于 2017-6-5 17:00:16

vivienluo 发表于 2017-6-5 14:04
anyPin = axlGetSelSet(axlSingleSelectPoint())            有问题。

楼主,有时间帮我改一下呀,不知道为啥出线skill,先点选在得到他的dbid好像没有错有啊,我理解的哟问题?

王开鑫55 发表于 2017-6-7 21:49:55

换成这样,按按钮的时候,左下方还是出现skill
axlSingleSelectPoint()      
anyPin = car(axlGetSelSet())
页: [1]
查看完整版本: form界面按按钮,command会出现skill,但程序能完成,做多个按钮会退不出把