Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1205|回复: 2

[分享] 請大家幫幫忙修改skill

[复制链接]
发表于 2023-3-17 14:13:19 | 显示全部楼层 |阅读模式
本帖最后由 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" "FLOC  1 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" "FLOC  1 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" "FLOC  1 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)


发表于 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\"")
 楼主| 发表于 2023-4-28 07:46:22 | 显示全部楼层
非常感謝您
經過修改後沒問題了👌
實在太感謝🙏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 13:51 , Processed in 0.134860 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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