找回密码
 注册
关于网站域名变更的通知

通用对齐工具skill(任选对齐基准,移动元件使其被选中要素与基准对齐)

查看数: 1447 | 评论数: 21 | 收藏 7
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
fxz
发布时间: 2024-10-11 22:42

正文摘要:

本帖最后由 fxz 于 2024-10-12 16:31 编辑 个人写的通用对齐工具skill(任选对齐基准,移动元件使其被选中要素与基准对齐) 密码:fzhbjwd、命令ATO 操作:运行skill后 1、选择对齐基准(可以是pin、via、cl ...

回复

fxz 发表于 2025-1-20 20:27
fxz 发表于 2025-1-20 20:19
刚才把skill放到E盘重新测试了一下,确实会报错,.应该就是您说的这个问题,因为我源码里有个加密语句enc ...

怎么压缩包还是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()
        )
)


点评

源码试过了,好用!感谢楼主分享! 另外,加密文件不需要把加密命令写进.il文件里吧。 这里分享一个自己写的加密解密工具(只能解密无密码的文件),可以方便加密操作。  详情 回复 发表于 2025-1-21 10:57
fxz 发表于 2025-1-20 20:19
zhualuo2 发表于 2025-1-20 16:36
出错,不能用,应该是skill文件里面有调用D:/AlignToObject.il的命令。估计skill文件只能放到D盘进行调用, ...

刚才把skill放到E盘重新测试了一下,确实会报错,.应该就是您说的这个问题,因为我源码里有个加密语句encrypt("D:/AlignToObject.il" "D:/AlignToObject_ps.il" "fzhbjwd"),调用了D盘目录下的源码il文件生成加密版il文件
暂时没找到更好的解决方法,先分享源码吧

AlignToObject源码.rar

1.63 KB, 下载次数: 7, 下载积分: 贡献 -30 , 威望 -10

点评

fxz
怎么压缩包还是30威望没法改,记得之前写skill放压缩包里回别人的贴,才5威望。。。那直接看吧 ; -------------------------------------------------- ; Allegro version: 16.6 ; Written by: fxz ; date: 2024  详情 回复 发表于 2025-1-20 20:27
zhualuo2 发表于 2025-1-21 10:57
本帖最后由 zhualuo2 于 2025-1-21 11:03 编辑
fxz 发表于 2025-1-20 20:27
怎么压缩包还是30威望没法改,记得之前写skill放压缩包里回别人的贴,才5威望。。。那直接看吧
; ------ ...

源码试过了,好用!感谢楼主分享!
另外,加密文件不需要把加密命令写进.il文件里吧。
这里分享一个自己写的加密解密工具(只能解密无密码的文件),可以方便加密操作。

Decrypt.rar

2.25 KB, 下载次数: 14, 下载积分: 贡献 -30 , 威望 -10

点评

fxz
非常感谢,刚才试过了,直接在源码skill目录下生成加密版ile,很好用~  详情 回复 发表于 2025-1-21 21:04
fxz 发表于 2025-1-21 21:04
zhualuo2 发表于 2025-1-21 10:57
源码试过了,好用!感谢楼主分享!
另外,加密文件不需要把加密命令写进.il文件里吧。
这里分享一个自 ...

非常感谢,刚才试过了,直接在源码skill目录下生成加密版ile,很好用~

zhualuo2 发表于 2025-1-20 16:36
本帖最后由 zhualuo2 于 2025-1-20 16:37 编辑

出错,不能用,应该是skill文件里面有调用D:/AlignToObject.il的命令。估计skill文件只能放到D盘进行调用,且名字不能修改。

点评

fxz
刚才把skill放到E盘重新测试了一下,确实会报错,.应该就是您说的这个问题,因为我源码里有个加密语句encrypt("D:/AlignToObject.il" "D:/AlignToObject_ps.il" "fzhbjwd"),调用了D盘目录下的源码il文件生成加密版i  详情 回复 发表于 2025-1-20 20:19
fxz 发表于 2025-1-19 21:44
08181001 发表于 2025-1-19 09:05
与楼上的情况一下,不同用

如果您试了试还有问题的话,我私聊帮您看看?
fxz 发表于 2025-1-19 21:39
08181001 发表于 2025-1-19 09:05
与楼上的情况一下,不同用

我平时用的是EDA365skill里的user plugins加载自己写的skill,刚才也试了skill加载命令(命令栏输入skill load("D:/AlignToObject_ps.il" "fzhbjwd"),再输入命令ATO ),也没有问题
08181001 发表于 2025-1-19 09:05
与楼上的情况一下,不同用

点评

fxz
如果您试了试还有问题的话,我私聊帮您看看?  详情 回复 发表于 2025-1-19 21:44
fxz
我平时用的是EDA365skill里的user plugins加载自己写的skill,刚才也试了skill加载命令(命令栏输入skill load("D:/AlignToObject_ps.il" "fzhbjwd"),再输入命令ATO ),也没有问题  详情 回复 发表于 2025-1-19 21:39
ywb_008 发表于 2024-12-16 15:24
实验了,确实有error,用不了。

微信图片_20241216152139.png (51.23 KB, 下载次数: 9)

微信图片_20241216152139.png

微信图片_20241216152150.png (43.33 KB, 下载次数: 11)

微信图片_20241216152150.png
janey0615 发表于 2024-12-3 13:59
PANSHER 发表于 2024-12-3 11:24
贡献不够   可以分享到我邮箱吗   我给你看看

站内发不了呢
PANSHER 发表于 2024-12-3 11:24
janey0615 发表于 2024-12-3 10:46
在command里输入ATO,有error。 我把.il放到PCBENV文件夹了。看起来是.il文件里面把路径设置成D盘根目录了 ...

贡献不够   可以分享到我邮箱吗   我给你看看

点评

站内发不了呢  详情 回复 发表于 2024-12-3 13:59
janey0615 发表于 2024-12-3 10:46
本帖最后由 janey0615 于 2024-12-3 10:54 编辑

在command里输入ATO,有error。 我把.il放到PCBENV文件夹了。看起来是.il文件里面把路径设置成D盘根目录了。怎么修改这个目录呢?

谢谢

点评

贡献不够 可以分享到我邮箱吗 我给你看看  详情 回复 发表于 2024-12-3 11:24
ee_windy 发表于 2024-12-3 03:02
感谢分享

“来自电巢APP”

deam 发表于 2024-10-27 23:59
用不了,不要下载了

“来自电巢APP”

特洛伊 发表于 2024-10-12 22:41
谢谢分钟

“来自电巢APP”

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|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

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