⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setlayout.il

📁 cadence 自动增加层和删除层的程序
💻 IL
📖 第 1 页 / 共 4 页
字号:
;                                   );end_when 
;                              when(next2_layer=="p" 
;                                   if(layernum<10
;                                      then
;                                        sprintf(need_layer_name,"%s%d","power0",layernum)
;                                      else
;                                        sprintf(need_layer_name,"%s%d","power",layernum)
;                                      );end_if
;                                   );end_when  
;                          );end_if
;                        creat_layer_list=reverse(new_layer_list) 
;                        ;foreach(layer_list new_layer_list
;                        ;        creat_layer_list=cons(layer_list creat_layer_list)
;                        ;        );end_foreach     
;                        
;                        foreach(new_Layer_name creat_layer_list
;                                if(getchar(new_Layer_name 1)=='a
;                                    then 
;                                     axlLayerCreateCrossSection(need_layer_name "Conductor" "Copper" new_Layer_name "Positive")              
;                                     ;axlShell("replay ./FR4.scr")
;                                     rpt = outfile("./FR4.scr")
;	                             fprintf(rpt "version 14.2\n\nscriptmode +invisible\n\nsetwindow pcb\n\ndefine xsection\n")
;	                             fprintf(rpt "setwindow form.xsection \n")
;	                             fprintf(rpt "FORM xsection %s edit Insert \n" need_layer_name)
;	                             fprintf(rpt "FORM xsection done \n")
;	                             close(rpt)
;	                             axlShell("replay ./FR4.scr")
;	                             deleteFile("FR4.scr")      
;
;                                   else
;                                     axlLayerCreateCrossSection(need_layer_name "Plane" "Copper" new_Layer_name "Negative")              
;                                     ;axlSell("replay ./FR4.scr")
;                                     rpt = outfile("./FR4.scr")
;	                             fprintf(rpt "version 14.2\n\nscriptmode +invisible\n\nsetwindow pcb\n\ndefine xsection\n")
;	                             fprintf(rpt "setwindow form.xsection \n")
;	                             fprintf(rpt "FORM xsection %s edit Insert \n" need_layer_name)
;	                             fprintf(rpt "FORM xsection done \n")
;	                             close(rpt)
;	                             axlShell("replay ./FR4.scr")
;	                             deleteFile("FR4.scr")      
;                                     
;                                     );end_"p"||"g"
;                                );endach 
;                       for(j 1 i-1        
;                           all_layer=cdr(all_layer)
;                           j++
;                           );end_for    
;                    );end_if next2_layer  
;                 );end_while loop 
;            );end_if next_layer     
;       );end_while isbottom          
;);end-prog
;);end-defun  _LX_SL_ADD
;============================================================================
                      ;_LX_PDGETC_ERR
;============================================================================
(defun _LX_PDGETC_ERR ()
prog( ()
    if(statepara == "ss"||statepara == nil then
      ;_LX_SL_ERROR()
      axlMsgPut("Don't have the demand of CREATE NEW LAYR") ;输出“没有新建层的要求”
      return(nil)
     );end_if

    alllayer = parseString(statepara "") 
    all_layer=cdr(alllayer)
;---------------------have or not "  "-----------------------------------------------------            
    Err_slash=0
    foreach(Err_letter all_layer
            if(Err_letter==" "
               then
                 Err_slash=Err_slash+1
                 if(Err_slash>1
                    then
                       _LX_SL_ERROR()
                    );end_if
               else
                Err_slash=0
               );end_if 
           );end_foreach  
;----------------------have or not " s(bottom)"---------------------------------------------------            
    if(nthelem(1 alllayer)!="s"
     then 
         _LX_SL_ERROR()
    );end_if
    
  Err_bottom=nil
  foreach(letter all_layer 
          Err_bottom=cons(letter Err_bottom)
          );end_foreach 
  if(nthelem(2 Err_bottom)==" "
     then 
         _LX_SL_ERROR()
    );end_if
    
  if(nthelem(1 Err_bottom)!="s"
     then 
         _LX_SL_ERROR()
    );end_if
;--------------------------------------------------------------------------------------------                    
   foreach(eachletter all_layer 
          if(eachletter!=" "&&eachletter!="p"&&eachletter!="s"&&eachletter!="g"
             then
                 _LX_SL_ERROR()
             );end_if    
          );end_foreach 
;---------------ERR END--------------------------------   
));end_defun
;==================================================================
;			_LX_SL_ERROR Function
;==================================================================
(defun _LX_SL_ERROR ()
prog( ()
      axlMsgPut("The format of INPUT isn't right") ;输出“输入格式不对”
      return(nil)
);end-prog
);end-defun 
;==================================================================
;           _LX_SL_delete()
;==================================================================
(defun _LX_SL_delete (statepara)
prog( ()
    para1 = nthelem(2 parseString(statepara "-"))
    alllayer = parseString(para1 "") 
    all_layer=cdr(alllayer)
;----------get del_layer_list and del_fr4_list-------------  
   layernum=0
   del_fr4_list=nil
   layerlist=axlGetParam("paramLayerGroup:etch")->groupMembers
   foreach(del_fr4 layerlist
           layernum=layernum+1
           if(del_fr4==para1
              then
              sprintf(del_fr4_name,"%s%d","unnamed",layernum*2)
              );end_if
           );end_foreach  
   delete_now_layer=para1                                                                  
   rpt = outfile("./dellayer.scr")                                                                   
   fprintf(rpt "version 14.2\n\nscriptmode +invisible\n\nsetwindow pcb\n\ntrapsize 1497\ndefine xsection\n")                                              
   fprintf(rpt "setwindow form.xsection \n")
   fprintf(rpt "FORM xsection %s edit Delete\n" del_fr4_name)
   axlVisibleDesign(nil)
   sprintf(vpin "PIN/%s" delete_now_layer)
   sprintf(vvia "VIA/%s" delete_now_layer)
   sprintf(vetch "ETCH/%s" delete_now_layer)
   sprintf(vantietch "ANTI ETCH/%s" delete_now_layer)
   axlVisibleLayer( vpin t )
   axlVisibleLayer( vetch t )
   axlVisibleLayer( vantietch t )
   axlSetFindFilter(?enabled list("noall" "pins" "vias" "clines" "lines" "Shapes" "text") ?onButtons list("noall" "pins" "vias" "clines" "lines" "Shapes" "text"))
   axlDeleteObject(axlGetSelSet(axlAddSelectAll()))
   fprintf(rpt "FORM xsection %s edit Delete\n" delete_now_layer)
   fprintf(rpt "FORM xsection done \n")                                                          
   close(rpt)                                                                             
   axlShell("replay ./dellayer.scr")                                           
   deleteFile("dellayer.scr")                                                  
   ;axlFormListDeleteAll(form "current_layer")
   ;layerlist=axlGetParam("paramLayerGroup:etch")->groupMembers
   ;foreach( selectlayer layerlist (axlFormSetField form "current_layer" selectlayer))
 );end_prog	
);end-defunction _LX_SL_delete()
;====================================================================                                                                               
               ;_LX_CreatCam
;====================================================================                                                                               
(defun _LX_CreatCam ()
prog( ()
     _LX_Getlayer()
     _LX_CreatCamtxt(_LX_layername) 
));end__LX_CreatCam 
;=============================================================================  
                    ;_LX_Getlayer
;=============================================================================  
(defun _LX_Getlayer ()
prog( ()
     _LX_layername=nil
     _LX_layername=axlGetParam("paramLayerGroup:etch")->groupMembers

));end__LX_Getlayer     
;=============================================================================  
                    ;_LX_CreatCamtxt
;=============================================================================  
(defun _LX_CreatCamtxt (layername)
prog( ()
     deleteFile("./cam.txt")
     if(layername==nil
        then
           axlMsgPut("have not *.teach file.")
        else
           design_unit=nthelem(1 axlDBGetDesignUnits())
           extrac_accuracy=nthelem(2 axlDBGetDesignUnits())
           if(extrac_accuracy==0||extrac_accuracy==1||extrac_accuracy==2||extrac_accuracy==3 ||extrac_accuracy==4
              then
                case(extrac_accuracy
                    (0
                    ExtraAccuracy=6
                    )
                    (1
                     ExtraAccuracy=60
                    t)
                    (2
                     ExtraAccuracy=600
                    t)
                    (3
                     ExtraAccuracy=6000
                    t)
                    (4
                     ExtraAccuracy=60000
                    t)                    
                    );end_case
                if( design_unit == "millimeters" then ExtraAccuracy=ExtraAccuracy/40)
                if( design_unit == "inches" then ExtraAccuracy=ExtraAccuracy/1000)           
                rpt=outfile("./cam.txt")
                i=0
                foreach(eachname layername
                   case(car(parseString(eachname ""))
                       ("T"
                        i=i+1
                        fprintf(rpt "(axlfcreate \"art01\" '(0 0 0 %d 0 1 0 0 0 0 0 0 0) '(\"VIA CLASS/TOP\" \"PIN/TOP\" \"ETCH/TOP\" \"BOARD GEOMETRY/OUTLINE\" ))\n",ExtraAccuracy)
                       t)
                       ("B"
                        i=i+1
                        if(i<10
                           then
                             sprintf(camlayer,"%s%d","art0",i)
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 1 1 0 0 0 0 0 0) '(\"VIA CLASS/BOTTOM\" \"PIN/BOTTOM\" \"ETCH/BOTTOM\" \"BOARD GEOMETRY/OUTLINE\" ))\n",camlayer,ExtraAccuracy)
                           else                                                                                                                                                                        
                             sprintf(camlayer,"%s%d","art",i)                                                                                                                                          
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 1 1 0 0 0 0 0 0) '(\"VIA CLASS/BOTTOM\" \"PIN/BOTTOM\" \"ETCH/BOTTOM\" \"BOARD GEOMETRY/OUTLINE\" ))\n",camlayer,ExtraAccuracy)
                          );end_if
                       t)   
                       ("A"
                        i=i+1
                        if(i<10
                           then
                             sprintf(camlayer,"%s%d","art0",i)
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 1 0 0 0 0 0 0 0) '(\"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                           else                                                                                                                                                            
                             sprintf(camlayer,"%s%d","art",i)                                                                                                                              
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 1 0 0 0 0 0 0 0) '(\"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                          );end_if
                       t)
                       ("P"
                        i=i+1
                        if(i<10
                           then
                             sprintf(camlayer,"%s%d","pgp0",i)
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 0 0 0 0 0 0 0 0) '(\"ANTI ETCH/%s\" \"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" \"ANTI ETCH/ALL\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                           else                                                                                                                                                                                               
                             sprintf(camlayer,"%s%d","pgp",i)                                                                                                                                                                 
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 0 0 0 0 0 0 0 0) '(\"ANTI ETCH/%s\" \"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" \"ANTI ETCH/ALL\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                          );end_if                                                                                                                                                                                            
                       t)                                                                                                                                                                                                     
                       ("G"                                                                                                                                                                                                   
                        i=i+1                                                                                                                                                                                                 
                        if(i<10                                                                                                                                                                                               
                           then                                                                                                                                                                                               
                             sprintf(camlayer,"%s%d","pgp0",i)                                                                                                                                                                
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 0 0 0 0 0 0 0 0) '(\"ANTI ETCH/%s\" \"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" \"ANTI ETCH/ALL\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                           else                                                                                                                                                                                               
                             sprintf(camlayer,"%s%d","pgp",i)                                                                                                                                                                 
                             fprintf(rpt "(axlfcreate \"%s\" '(0 0 0 %d 0 0 0 0 0 0 0 0 0) '(\"ANTI ETCH/%s\" \"VIA CLASS/%s\" \"PIN/%s\" \"ETCH/%s\" \"BOARD GEOMETRY/OUTLINE\" \"ANTI ETCH/ALL\" ))\n",camlayer,ExtraAccuracy,eachname,eachname,eachname,eachname)
                          );end_if
                       t)         
                     );end_case
                  );end_foreach   
                fprintf(rpt "(axlfcreate \"adt\" '(0 0 0 %d 0 1 0 0 0 0 0 0 0) '(\"REF DES/SILKSCREEN_TOP\" \"PIN/TOP\" \"PACKAGE GEOMETRY/SILKSCREEN_TOP\" \"BOARD GEOMETRY/SILKSCREEN_TOP\" \"BOARD GEOMETRY/OUTLINE\" ))\n",ExtraAccuracy)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -