找回密码
 注册
查看: 1742|回复: 6
打印 上一主题 下一主题

使用skill快速简易设置grids

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-8-29 16:08 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

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

x
使用skill设置grids
   在平时设计PCB的过程中,经常会涉及到更改栅格点的操作,例如在布局时使用 5mil 栅格点,可以很方便的控制器件间距;而在布线时使用 2.5mil 甚至 1mil 的栅格点,可以提示走线的顺畅度。
   软件自带的栅格设置功能使用起来比较繁琐,一种可取的方法是将不同的栅格参数设置录制成 scr 文件,然后在 env 文件中设置快捷键来调用这个 scr 文件。这种方法有一个弊端,就是当需要更多不同的栅格设置时,会产生很多的 scr 文件,也需要更多的快捷键来对应不同的 scr 文件,这样对快捷键资源是一种浪费。
   下面介绍一种使用 skill 来设置栅格的方法,只需在命令窗口中输入一行代码,就可以完成 n 多种不同栅格设置,具体的步骤如下:
步骤一:
   在 SPB_Data\myskill 文件夹下新建一个 lnChangeGrids.il 文件(文件名可以按自己的喜欢去取)并打开,输入如下代码:
  1. ;---------------------------------------
  2. ; allegro version: 16.6
  3. ; Written by: Lianora
  4. ; date: 2021-08-29
  5. ;---------------------------------------

  6. ;---------------------------------------
  7. ; 注册Allegro 命令
  8. ;---------------------------------------
  9. axlCmdRegister(
  10.         "gd"
  11.         'lnChangeGrids
  12.         ?cmdType "interactive"
  13. )

  14. ;---------------------------------------
  15. ; Allegro 命令调用函数
  16. ;---------------------------------------
  17. procedure(lnChangeGrids(@optional (grid "2.5"))
  18.         let(()
  19.         ; 获取当前设计单位
  20.                 cur_Units = car(axlDBGetDesignUnits())
  21.         ; 将字符串转换成浮点数
  22.                 f_grid = atof(grid)
  23.         ; 设置 non-etch grids
  24.                 new_grid = axlDBGridGet("non-etch")
  25.                 new_grid->xGrids = f_grid
  26.                 new_grid->yGrids = f_grid
  27.                 axlDBGridSet(new_grid)
  28.         ; 设置所有 etch grids
  29.                 new_grid = axlDBGridGet("TOP")
  30.                 new_grid->name = 'etch
  31.                 new_grid->xGrids = f_grid
  32.                 new_grid->yGrids = f_grid
  33.                 axlDBGridSet(new_grid)
  34.                
  35.                 printf("Set all girds to %s %s\n", grid, cur_Units)
  36.         )
  37. )
复制代码

保存后退出。
步骤二:
   在 SPB_Data\pcbenv 文件夹下面找到或者新建一个skill初始化文件 allegro.ilinit ,打开并输入以下代码。
  1. setSkillPath(append(getSkillPath() '("~/myskill")))

  2. load("lnChangeGrids.il")
复制代码
第1行是设置 skill 的加载路径;
第2行是加载设置栅格的 skill 文件,双引号里面的字符串就是步骤一中新建的 skill 文件名,包含文件名后缀。
步骤三:
   任意打开一个PCB,在命令窗口中输入:“ gd 5 ”即可改变栅格参数。

该用户从未签到

7#
发表于 2023-6-20 11:50 | 只看该作者
谢谢分享,正好需要
  • TA的每日心情
    奋斗
    2025-4-18 15:00
  • 签到天数: 589 天

    [LV.9]以坛为家II

    6#
    发表于 2022-8-12 17:02 | 只看该作者
    netbrain 发表于 2021-10-1 22:43
    看我的,用ctrl加鼠标滚轮,放在env里就可以了。
    button Cwheel_up 'skill axlDBGridSet(vectorToList(vec ...

    这种 滚轮设置丝滑不,好不好操作

  • TA的每日心情
    奋斗
    2025-4-18 15:00
  • 签到天数: 589 天

    [LV.9]以坛为家II

    5#
    发表于 2022-8-12 16:55 | 只看该作者
    楼主这个方法 还不错嘛
  • TA的每日心情
    奋斗
    2025-4-18 15:00
  • 签到天数: 589 天

    [LV.9]以坛为家II

    4#
    发表于 2022-8-4 20:07 | 只看该作者
    使用skill快速简易设置grids

    该用户从未签到

    3#
    发表于 2021-10-1 22:43 | 只看该作者
    看我的,用ctrl加鼠标滚轮,放在env里就可以了。
    button Cwheel_up 'skill axlDBGridSet(vectorToList(vector(nil stringToSymbol("name") stringToSymbol("all") stringToSymbol("objType") "grids" stringToSymbol("readOnly") nil stringToSymbol("xOrigin") 0.0 stringToSymbol("yOrigin") 0.0 stringToSymbol("xMajor") 0.1 stringToSymbol("yMajor") 0.1 stringToSymbol("xGrids") list(car(axlDBGridGet("non-etch")->xGrids)*2 car(axlDBGridGet("non-etch")->xGrids)*2 car(axlDBGridGet("non-etch")->xGrids)*2 car(axlDBGridGet("non-etch")->xGrids)*2 car(axlDBGridGet("non-etch")->xGrids)*2) stringToSymbol("yGrids") list(car(axlDBGridGet("non-etch")->yGrids)*2 car(axlDBGridGet("non-etch")->yGrids)*2 car(axlDBGridGet("non-etch")->yGrids)*2 car(axlDBGridGet("non-etch")->yGrids)*2 car(axlDBGridGet("non-etch")->yGrids)*2)))) printf("GRID SPACE = %A" axlDBGridGet("non-etch")->xMajor)'
    button Cwheel_down 'skill axlDBGridSet(vectorToList(vector(nil stringToSymbol("name") stringToSymbol("all") stringToSymbol("objType") "grids" stringToSymbol("readOnly") nil stringToSymbol("xOrigin") 0.0 stringToSymbol("yOrigin") 0.0 stringToSymbol("xMajor") 0.1 stringToSymbol("yMajor") 0.1 stringToSymbol("xGrids") list(car(axlDBGridGet("non-etch")->xGrids)/2 car(axlDBGridGet("non-etch")->xGrids)/2 car(axlDBGridGet("non-etch")->xGrids)/2 car(axlDBGridGet("non-etch")->xGrids)/2 car(axlDBGridGet("non-etch")->xGrids)/2) stringToSymbol("yGrids") list(car(axlDBGridGet("non-etch")->yGrids)/2 car(axlDBGridGet("non-etch")->yGrids)/2 car(axlDBGridGet("non-etch")->yGrids)/2 car(axlDBGridGet("non-etch")->yGrids)/2 car(axlDBGridGet("non-etch")->yGrids)/2)))) printf("GRID SPACE = %A" axlDBGridGet("non-etch")->xMajor)'

    点评

    这种 滚轮设置丝滑不,好不好操作  详情 回复 发表于 2022-8-12 17:02

    该用户从未签到

    2#
    发表于 2021-8-30 13:52 | 只看该作者
    [size=18.6667px]一种可取的方法是将不同的栅格参数设置录制成 scr 文件,然后在 env 文件中设置快捷键来调用这个 scr 文件
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-4-19 08:26 , Processed in 0.109375 second(s), 29 queries , Gzip On.

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

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

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