找回密码
 注册
关于网站域名变更的通知
查看: 1118|回复: 21
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    奋斗
    2025-7-15 15:40
  • 签到天数: 108 天

    [LV.6]常住居民II

    跳转到指定楼层
    1#
     楼主| 发表于 2024-10-11 22:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 fxz 于 2024-10-12 16:31 编辑

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

    密码:fzhbjwd、命令ATO
    操作:运行skill后
    1、选择对齐基准(可以是pin、via、clinesegs)
    2、选择模式(各symbol中被选中的元素,与基准对齐,确保它们具备相同横坐标/纵坐标)
    3、选择第一个symbol
    4、单击第一个symbol里需要与基准对齐的要素
    则第一个symbol会移动,其被选中的基准与对齐基准,按照选择的模式对齐
    5、选择第二个symbol
    6、单击第二个symbol里需要与基准对齐的要素
    则第二个symbol会移动,其被选中的基准与对齐基准,按照选择的模式对齐
    。。。
    完成后,右键->Done

    1-选择对齐基准.PNG (432.64 KB, 下载次数: 7)

    1-选择对齐基准.PNG

    2-选择第一个symbol.PNG (414.25 KB, 下载次数: 6)

    2-选择第一个symbol.PNG

    3-选择第一个symbol的pin.PNG (415.35 KB, 下载次数: 6)

    3-选择第一个symbol的pin.PNG

    4-选择第二个symbol.PNG (411.83 KB, 下载次数: 7)

    4-选择第二个symbol.PNG

    5-选择第二个symbol的pin.PNG (415 KB, 下载次数: 7)

    5-选择第二个symbol的pin.PNG

    6-最终效果.PNG (404.14 KB, 下载次数: 6)

    6-最终效果.PNG

    20241011-Align.rar

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

    Align skill操作视频.rar

    9.52 MB, 下载次数: 8, 下载积分: 贡献 -30 , 威望 -10

  • TA的每日心情
    奋斗
    2025-7-15 15:40
  • 签到天数: 108 天

    [LV.6]常住居民II

    推荐
     楼主| 发表于 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
  • TA的每日心情
    奋斗
    2025-7-15 15:40
  • 签到天数: 108 天

    [LV.6]常住居民II

    推荐
     楼主| 发表于 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, 下载次数: 6, 下载积分: 贡献 -30 , 威望 -10

    点评

    fxz
    怎么压缩包还是30威望没法改,记得之前写skill放压缩包里回别人的贴,才5威望。。。那直接看吧 ; -------------------------------------------------- ; Allegro version: 16.6 ; Written by: fxz ; date: 2024  详情 回复 发表于 2025-1-20 20:27
  • TA的每日心情
    奋斗
    2020-12-18 15:41
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    推荐
    发表于 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
  • TA的每日心情
    擦汗
    2024-4-3 15:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    6#
    发表于 2024-10-12 09:17 | 只看该作者
    没有图片吗

    点评

    fxz
    已经更新了。新手发帖,不太熟。。。  详情 回复 发表于 2024-10-12 12:23
  • TA的每日心情
    奋斗
    2025-7-15 15:40
  • 签到天数: 108 天

    [LV.6]常住居民II

    7#
     楼主| 发表于 2024-10-12 12:23 | 只看该作者

    已经更新了。新手发帖,不太熟。。。

    该用户从未签到

    8#
    发表于 2024-10-12 13:38 | 只看该作者
    mark一下看看
  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    9#
    发表于 2024-10-12 15:38 | 只看该作者
    5个金币?第一次见着还有要花金币的

    点评

    fxz
    发帖新手,没经验。。。 重新捣鼓了一下已经取消了  详情 回复 发表于 2024-10-12 16:35
  • TA的每日心情
    奋斗
    2025-7-15 15:40
  • 签到天数: 108 天

    [LV.6]常住居民II

    10#
     楼主| 发表于 2024-10-12 16:35 | 只看该作者
    db-_- 发表于 2024-10-12 15:38
    5个金币?第一次见着还有要花金币的

    发帖新手,没经验。。。
    重新捣鼓了一下已经取消了
  • TA的每日心情
    开心
    2025-6-20 15:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
    发表于 2024-10-12 22:41 | 只看该作者
    谢谢分钟

    “来自电巢APP”

    该用户从未签到

    12#
    发表于 2024-10-27 23:59 | 只看该作者
    用不了,不要下载了

    “来自电巢APP”

    该用户从未签到

    13#
    发表于 2024-12-3 03:02 | 只看该作者
    感谢分享

    “来自电巢APP”

  • TA的每日心情
    奋斗
    2019-11-19 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    14#
    发表于 2024-12-3 10:46 | 只看该作者
    本帖最后由 janey0615 于 2024-12-3 10:54 编辑

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

    谢谢

    点评

    贡献不够 可以分享到我邮箱吗 我给你看看  详情 回复 发表于 2024-12-3 11:24
  • TA的每日心情
    无聊
    2025-6-12 15:00
  • 签到天数: 120 天

    [LV.7]常住居民III

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

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

    点评

    站内发不了呢  详情 回复 发表于 2024-12-3 13:59
  • TA的每日心情
    奋斗
    2019-11-19 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    16#
    发表于 2024-12-3 13:59 | 只看该作者
    PANSHER 发表于 2024-12-3 11:24
    贡献不够   可以分享到我邮箱吗   我给你看看

    站内发不了呢
  • TA的每日心情
    郁闷
    2025-2-12 15:28
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    17#
    发表于 2024-12-16 15:24 | 只看该作者
    实验了,确实有error,用不了。

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

    微信图片_20241216152139.png

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

    微信图片_20241216152150.png

    该用户从未签到

    18#
    发表于 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
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-18 18:33 , Processed in 0.140625 second(s), 30 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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