evaku0712 发表于 2023-3-17 14:13:19

請大家幫幫忙修改skill

本帖最后由 evaku0712 于 2023-3-17 14:15 编辑

請教高手幫忙 拜託了
這個源碼是這個之前有人分享的
但是在17.4版本 關掉對話框的選項不見了
所以對話框會一直無法結束
請教大佬們可以幫忙修理嗎 在這裡先說謝謝您了

;write by TaiPengYin
;e-mail:ytphrx@163.com
;three functions: move origin,change unit and change grid
;how to run this skill?
;step1: enter skill environment use command --> skill
;step2:load("e:/homedir/Grid_Origin_Unit.il")
;step3:in the command line key in comand--> g
;for the move origin can snap pin or arc center or line corssing point

(defun _setup_grid_callback (form)
    (case form->curField
               ("move_roigin"
                  move_origin_by_pcik()
               )
               ("mil_1"
                                        axlFormSetField(form "x_grid" nil)
                                        axlFormSetField(form "y_grid" nil)
                  grid_setup(1.0 1.0)
               )
               ("mil_5"
                                        axlFormSetField(form "x_grid" nil)
                                        axlFormSetField(form "y_grid" nil)
                                        grid_setup(5.0 5.0)
               )
               ("x_grid"
                                        axlFormSetField(form "mil_1" nil)
                                        axlFormSetField(form "mil_5" nil)
                                        if(axlFormGetField(form "y_grid")!=0.0
                                                then
                                                grid_setup(axlFormGetField(form "x_grid") axlFormGetField(form "y_grid"))
                                                else
                                                grid_setup(axlFormGetField(form "x_grid") axlFormGetField(form "x_grid"))
                                                )
               )
               ("y_grid"
                                        axlFormSetField(form "mil_1" nil)
                                        axlFormSetField(form "mil_5" nil)
                                        if(axlFormGetField(form "x_grid")!=0.0
                                                then
                                                grid_setup(axlFormGetField(form "x_grid") axlFormGetField(form "y_grid"))
                                                else
                                                grid_setup(axlFormGetField(form "y_grid") axlFormGetField(form "y_grid"))
                                                )
               )
                              ("unit_mil"
                   axlDBChangeDesignUnits("mils" 2)
               )
                              ("unit_mm"
                   axlDBChangeDesignUnits("millimeters" 4)
               )
                              ("unit_inch"
                                 axlDBChangeDesignUnits("inches" 5)
                              )
    )
)
(defun grid_setup (x y)
      sprintf(cmd"
                              define grid;
                              setwindow form.grid;
                              FORM grid all_etch all_etch_x_grids %f;
                              FORM grid all_etch all_etch_y_grids %f;
                              FORM grid non_etch non_etch_x_grids %f;
                              FORM grid non_etch non_etch_y_grids %f;
                              FORM grid done;
                              " x y x y
                              )
         axlShell(cmd)
)

(defun move_origin_by_pcik ()
    popup = axlUIPopupDefine(nil
                         (list       (list "Done" `axlFinishEnterFun)
                              (list "Cancel" `axlCancelEnterFun)))
    axlUIPopupSet(popup)
    (axlClearSelSet)
    (axlSetFindFilter ?enabled(list "noall" "linesegs" "PINS" "nameform")
                        ?onButtons(list "noall" "linesegs" "PINS"))
    axlOpenFindFilter()
    org_x=0
    org_y=0
    axlSelect()
    line_dbid = axlGetSelSet()
   if(length(line_dbid)==1&&nindex(lowerCase(car(line_dbid)->objType) "line")==1
          then
          foreach(line_dbid_son line_dbid
                     if(car(car(line_dbid_son->startEnd))==car(car(last(line_dbid_son->startEnd)))
                         then
                         org_x=car(car(line_dbid_son->startEnd))
                         else
                         org_y=car(last(car(line_dbid_son->startEnd)))
                        )
                   )
          (axlClearSelSet)
          axlSelect()
          line_dbid = axlGetSelSet()
          if(length(line_dbid)==1&&nindex(lowerCase(car(line_dbid)->objType) "line")==1
               then
               foreach(line_dbid_son line_dbid
                           if(car(car(line_dbid_son->startEnd))==car(car(last(line_dbid_son->startEnd)))
                              then
                              org_x=car(car(line_dbid_son->startEnd))
                              else
                              org_y=car(last(car(line_dbid_son->startEnd)))
                           )
                     )
             )
          else
                  if(length(line_dbid)==1&&nindex(lowerCase(car(line_dbid)->objType) "arc")==1
                        then
                org_x=car(car(line_dbid)->xy)
               org_y=car(last(car(line_dbid)->xy))
                        else
                        if(length(line_dbid)==1&&nindex(lowerCase(car(line_dbid)->objType) "pin")==1
                              then
                              org_x=car(car(line_dbid)->xy)
                org_y=car(last(car(line_dbid)->xy))
                           )
                        )
       )
    axlDBChangeDesignOrigin(-org_x:-org_y)
    axlWindowBoxSet(list(-150:-150 150:150))
    axlDBRefreshId(nil)
      axlCancelEnterFun()
    (axlClearSelSet)
      (axlSetFindFilter ?enabled(list "noall") ?onButtons(list "noall"))
)
;-----------------create form file---------------------
(defun create_form_file ()
      home_dir_form=strcat(getShellEnvVar("HOME") "/setup_grid.form")
      out_file_port=outfile(home_dir_form)
      fprintf(out_file_port "%s\n" "FILE_TYPE=FORM_DEFN VERSION=2")
      fprintf(out_file_port "%s\n" "FORM TOOLWINDOW")
      fprintf(out_file_port "%s\n" "FIXED")
      fprintf(out_file_port "%s\n" "PORT 42 50")
      fprintf(out_file_port "%s\n" "HEADER \"Setup Grid Origin Unit\"")

      fprintf(out_file_port "%s\n" "TILE")

      fprintf(out_file_port "%s\n" "FIELD move_roigin")
      fprintf(out_file_port "%s\n" "FLOC1 1")
      fprintf(out_file_port "%s\n" "MENUBUTTON \"Move Origin\" 7 3")
      fprintf(out_file_port "%s\n" "ENDFIELD")

   fprintf(out_file_port "%s\n" "GROUP \"Setup Grid\".")
      fprintf(out_file_port "%s\n" "FLOC1 3")
      fprintf(out_file_port "%s\n" "GSIZE 40 7")
      fprintf(out_file_port "%s\n" "ENDGROUP")

      fprintf(out_file_port "%s\n" "FIELD mil_1")
      fprintf(out_file_port "%s\n" "FLOC 3 6")
      fprintf(out_file_port "%s\n" "FGROUP\"ByGroup\"")
      fprintf(out_file_port "%s\n" "CHECKLIST \"1\" \"alf\"")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "FIELD mil_5")
      fprintf(out_file_port "%s\n" "FLOC 7 6")
      fprintf(out_file_port "%s\n" "FGROUP\"ByGroup\"")
      fprintf(out_file_port "%s\n" "CHECKLIST \"5\" \"alf\"")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "TEXT others:")
      fprintf(out_file_port "%s\n" "TLOC 14 6")
      fprintf(out_file_port "%s\n" "ENDTEXT")


      fprintf(out_file_port "%s\n" "FIELD x_grid")
      fprintf(out_file_port "%s\n" "FLOC 20 6")
      fprintf(out_file_port "%s\n" "REALFILLIN 5 20")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "FIELD y_grid")
      fprintf(out_file_port "%s\n" "FLOC 27 6")
      fprintf(out_file_port "%s\n" "REALFILLIN 5 20")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "GROUP \"Unit\".")
      fprintf(out_file_port "%s\n" "FLOC1 11")
      fprintf(out_file_port "%s\n" "GSIZE 40 7")
      fprintf(out_file_port "%s\n" "ENDGROUP")

      fprintf(out_file_port "%s\n" "FIELD unit_mil")
      fprintf(out_file_port "%s\n" "FLOC 3 14")
      fprintf(out_file_port "%s\n" "FGROUP\"ByGroup\"")
      fprintf(out_file_port "%s\n" "CHECKLIST \"mil\" \"alf1\"")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "FIELD unit_mm")
      fprintf(out_file_port "%s\n" "FLOC 10 14")
      fprintf(out_file_port "%s\n" "FGROUP\"ByGroup\"")
      fprintf(out_file_port "%s\n" "CHECKLIST \"mm\" \"alf1\"")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "FIELD unit_inch")
      fprintf(out_file_port "%s\n" "FLOC 17 14")
      fprintf(out_file_port "%s\n" "FGROUP\"ByGroup\"")
      fprintf(out_file_port "%s\n" "CHECKLIST \"inch\" \"alf1\"")
      fprintf(out_file_port "%s\n" "ENDFIELD")

      fprintf(out_file_port "%s\n" "ENDTILE")
      fprintf(out_file_port "%s\n" "ENDFORM")
      close( out_file_port)
)

(defun _Set_Grid_Trim ()
            create_form_file()
            home_dir_form=strcat(getShellEnvVar("HOME") "/setup_grid.form")
                        form = axlFormCreate( (gensym) home_dir_form `("C" "OUTER") `_setup_grid_callback t)
                        if(form==nil
                   then
                      axlUIYesNo("Can't load the form file!\nSkill will exit!")
                   else
                      axlFormDisplay( form)
                                  axlUIWPerm(form t)
                      deleteFile(home_dir_form)
                        )
)
axlCmdRegister( "Grid_Origin_Unit" `_Set_Grid_Trim)
axlCmdRegister( "Origin" `_Set_Grid_Trim)


zhualuo2 发表于 2023-4-27 15:51:01

是窗口右上角的关闭按钮不见了吗?
试一下将
fprintf(out_file_port "%s\n" "FILE_TYPE=FORM_DEFN VERSION=2")
fprintf(out_file_port "%s\n" "FORM TOOLWINDOW")
fprintf(out_file_port "%s\n" "FIXED")
fprintf(out_file_port "%s\n" "PORT 42 50")
fprintf(out_file_port "%s\n" "HEADER \"Setup Grid Origin Unit\"")
改为:
fprintf(out_file_port "%s\n" "FILE_TYPE=FORM_DEFN VERSION=2")
fprintf(out_file_port "%s\n" "FORM AUTOGREYTEXT")
fprintf(out_file_port "%s\n" "FIXED")
fprintf(out_file_port "%s\n" "PORT 42 50")
fprintf(out_file_port "%s\n" "HEADER \"Setup Grid Origin Unit\"")

evaku0712 发表于 2023-4-28 07:46:22

非常感謝您
經過修改後沒問題了👌
實在太感謝🙏
页: [1]
查看完整版本: 請大家幫幫忙修改skill