|
本帖最后由 王开鑫55 于 2018-1-16 17:49 编辑
- ;封装的中心点镜像,不在中心不在原地
- axlCmdRegister("Original_mirror" 'Original_mirror )
- defun(Original_mirror ()
- let(()
- mirror_form()
- formm = axlFormCreate((gensym) "./mirror.form" nil 'pform_Action_drlh t nil)
- axlFormDisplay(formm)
- ;deleteFile("./mirror.form")
- );end let
- );end defun
- (defun mirror_form ()
- (prog ()
- pform = outfile("./mirror.form" "w")
- fprintf(pform "FILE_TYPE=FORM_DEFN VERSION=2\n")
- fprintf(pform "FORM toolwindow\n")
- fprintf(pform "FIXED\n")
- fprintf(pform "PORT 15 8\n")
- ;PORT w h
- fprintf(pform "HEADER "www"\n")
- fprintf(pform "TILE\n")
- fprintf(pform "TEXT "Mirror"\n")
- fprintf(pform "TLOC 0 0\n")
- fprintf(pform "ENDTEXT\n")
- fprintf(pform "FIELD mirror\n")
- fprintf(pform "FLOC 1 2\n") ;FLOC x y
- fprintf(pform "MENUBUTTON "mirror" 10 3\n")
- fprintf(pform "ENDFIELD\n")
-
- fprintf(pform "FIELD done\n")
- fprintf(pform "FLOC 1 6\n")
- fprintf(pform "MENUBUTTON "Done" 10 3\n")
- fprintf(pform "ENDFIELD\n")
-
- fprintf(pform "ENDTILE\n")
- fprintf(pform "ENDFORM\n")
- close(pform)
- ))
- (defun pform_Action_drlh (formm)
- (case formm->curField
- ("done"
- axlFormClose(formm)
- axlCancelEnterFun()
- deleteFile("./mirror.form")
- axlMsgPut("Done")
- nil
- )
- ("mirror"
- mirror()
- t
- )
-
- );end case
- );end defun
- (defun mirror ()
- axlVisibleLayer("pin/top" t)
- axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" t)
- axlVisibleLayer("pin/bottom" t)
- axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" t)
- axlClearSelSet()
- axlSetFindFilter(?enabled '(noall symbols) ?onButtons '(noall symbols))
- allsymbols = axlGetSelSet(axlSelect(?prompt "Select symbols by pick or box."))
- axlClearSelSet()
- foreach(sym allsymbols
- sym_mirror=axlTransformObject(sym,?move '(0.0,0.0) , ?mirror t, ?allOrNone t)
- );end foreach
- axlVisibleUpdate(t)
- )
复制代码 PS:以下两点情况不能使用:
fix元件不能mirror.
建立封装时元件中心点不在元件中心的,mirror后不在原来位置。
支持点选,框选
养成良好的习惯,画封装时原点放在中心位置。有兴趣的可以进行代码扩展,函数:axlDBGetSymbolBodyExtent |
|