|
本帖最后由 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)
|
|