fxz 发表于 2025-1-20 20:19 怎么压缩包还是30威望没法改,记得之前写skill放压缩包里回别人的贴,才5威望。。。那直接看吧 ; -------------------------------------------------- ; Allegro version: 16.6 ; Written by: fxz ; date: 2024.02.23 ; -------------------------------------------------- ; 操作:1、首先选择一个pin/via/clineseg作为基准,2、弹窗内选择模式:把各元件选定要素与基准将x/y坐标对齐。3、选择元件后,点击元件上与基准对齐的部位,元件会被移动。4、完成操作后右键->Done ; 可以更改基准的可选种类,以及需要对齐的元素种类,实现任意元素向任意类型的基准对齐 ; -------------------------------------------------- axlCmdRegister( "ATO" 'Place_AlignToObject ?cmdType "interactive" ?doneCmd 'lnDone ?cancelCmd 'lnCancel ) ; -------------------------------------------------- ; 主程序入口函数 ; -------------------------------------------------- procedure(Place_AlignToObject() let(() ; 设置 find 栏参数,勾选 "pins" "vias""clinesegs" axlSetFindFilter( ?enabled list("noall" "pins" "vias" "clinesegs") ?onButtons list("noall" "pins" "vias" "clinesegs") ) ; 设置右键弹出功能项 ln_popup = axlUIPopupDefine(nil (list (list "Done" 'lnDone) (list "Oops" 'lnOops) (list "Cancel" 'lnCancel)) ) axlUIPopupSet(ln_popup) ; 定义一个循环标记 notdone = t ln_mark = axlDBTransactionStart() l_object1 = nil ; 等待获取第一个元素 并获取坐标 printf("Please select the 1st object as reference...\n") l_object1 = axlGetSelSet(axlSingleSelectPoint()) l_object11=car(l_object1) pin_loc1=l_object11->xy x1=nth(0 pin_loc1) y1=nth(1 pin_loc1) Align_mode=axlUIMultipleChoice("Please Select Mode" '("The x of all ref point is same" "The y of all ref point is same")) while(notdone ; 如果获取了第一个元素,则准备点击元件 if(l_object1 then axlSetFindFilter( ?enabled list("noall" "symbols") ?onButtons list("noall" "symbols") ) l_symbol1 = axlGetSelSet(axlSingleSelectPoint()) l_symbol11 = car(l_symbol1 ) ) ; 如果获取了元件则准备点击与基准对齐的部位 if(l_symbol1 then axlSetFindFilter( ?enabled list("noall" "pins" "vias" "clinesegs") ?onButtons list("noall" "pins" "vias" "clinesegs") ) printf("Please select the 2nd object of symbol...\n") l_object2 = axlGetSelSet(axlSingleSelectPoint()) ) l_object22=car(l_object2) pin_loc2=l_object22->xy x2=nth(0 pin_loc2) y2=nth(1 pin_loc2) dx=x2-x1 dy=y2-y1 d1=list(-dx 0) d2=list(0 -dy) case(Align_mode (1 axlTransformObject(l_symbol11, ?move d2)) (0 axlTransformObject(l_symbol11, ?move d1)) (t printf("Error!!!\n")) );case axlClearSelSet() ) ) ) ; -------------------------------------------------- ; 结束命令回调函数 ; -------------------------------------------------- procedure(lnDone() let(() axlDBTransactionCommit(ln_mark) notdone = nil axlCancelEnterFun() ) ) ; -------------------------------------------------- ; 回撤命令回调函数 ; -------------------------------------------------- procedure(lnOops() let(() axlDBTransactionOops(ln_mark) axlCancelEnterFun() ) ) ; -------------------------------------------------- ; 取消命令回调函数 ; -------------------------------------------------- procedure(lnCancel() let(() axlDBTransactionCommit(ln_mark) notdone = nil axlCancelEnterFun() ) ) |
zhualuo2 发表于 2025-1-20 16:36 刚才把skill放到E盘重新测试了一下,确实会报错,.应该就是您说的这个问题,因为我源码里有个加密语句encrypt("D:/AlignToObject.il" "D:/AlignToObject_ps.il" "fzhbjwd"),调用了D盘目录下的源码il文件生成加密版il文件 暂时没找到更好的解决方法,先分享源码吧 |
1.63 KB, 下载次数: 7, 下载积分: 贡献 -30 , 威望 -10
本帖最后由 zhualuo2 于 2025-1-21 11:03 编辑 fxz 发表于 2025-1-20 20:27 源码试过了,好用!感谢楼主分享! 另外,加密文件不需要把加密命令写进.il文件里吧。 这里分享一个自己写的加密解密工具(只能解密无密码的文件),可以方便加密操作。
|
2.25 KB, 下载次数: 14, 下载积分: 贡献 -30 , 威望 -10
zhualuo2 发表于 2025-1-21 10:57 非常感谢 ![]() ![]() ,刚才试过了,直接在源码skill目录下生成加密版ile,很好用~ |
08181001 发表于 2025-1-19 09:05 如果您试了试还有问题的话,我私聊帮您看看? |
08181001 发表于 2025-1-19 09:05 我平时用的是EDA365skill里的user plugins加载自己写的skill,刚才也试了skill加载命令(命令栏输入skill load("D:/AlignToObject_ps.il" "fzhbjwd"),再输入命令ATO ),也没有问题 |
| 实验了,确实有error,用不了。 |
微信图片_20241216152139.png (51.23 KB, 下载次数: 9)
微信图片_20241216152150.png (43.33 KB, 下载次数: 11)
PANSHER 发表于 2024-12-3 11:24 站内发不了呢 |
janey0615 发表于 2024-12-3 10:46 贡献不够 可以分享到我邮箱吗 我给你看看 |
/1
关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )
GMT+8, 2025-11-22 03:53 , Processed in 0.203125 second(s), 32 queries , Gzip On.
地址:深圳市南山区科技生态园2栋A座805 电话:19926409050