找回密码
 注册
12
返回列表 发新帖
楼主: fxz
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    奋斗
    2025-2-10 15:05
  • 签到天数: 107 天

    [LV.6]常住居民II

    16#
     楼主| 发表于 2025-1-19 21:39 | 只看该作者
    08181001 发表于 2025-1-19 09:05
    与楼上的情况一下,不同用

    我平时用的是EDA365skill里的user plugins加载自己写的skill,刚才也试了skill加载命令(命令栏输入skill load("D:/AlignToObject_ps.il" "fzhbjwd"),再输入命令ATO ),也没有问题
  • TA的每日心情
    奋斗
    2025-2-10 15:05
  • 签到天数: 107 天

    [LV.6]常住居民II

    17#
     楼主| 发表于 2025-1-19 21:44 | 只看该作者
    08181001 发表于 2025-1-19 09:05
    与楼上的情况一下,不同用

    如果您试了试还有问题的话,我私聊帮您看看?
  • TA的每日心情
    奋斗
    2020-12-18 15:41
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    18#
    发表于 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
  • TA的每日心情
    奋斗
    2025-2-10 15:05
  • 签到天数: 107 天

    [LV.6]常住居民II

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

  • TA的每日心情
    奋斗
    2025-2-10 15:05
  • 签到天数: 107 天

    [LV.6]常住居民II

    20#
     楼主| 发表于 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()
            )
    )


  • TA的每日心情
    奋斗
    2020-12-18 15:41
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    21#
    发表于 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, 下载次数: 13, 下载积分: 贡献 -30 , 威望 -10

  • TA的每日心情
    奋斗
    2025-2-10 15:05
  • 签到天数: 107 天

    [LV.6]常住居民II

    22#
     楼主| 发表于 2025-1-21 21:04 | 只看该作者
    zhualuo2 发表于 2025-1-21 10:57
    源码试过了,好用!感谢楼主分享!
    另外,加密文件不需要把加密命令写进.il文件里吧。
    这里分享一个自 ...

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

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-30 14:41 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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