EDA365电子论坛网

标题: 使用skill快速简易设置grids [打印本页]

作者: ChinaLian    时间: 2021-8-29 16:08
标题: 使用skill快速简易设置grids
使用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 ”即可改变栅格参数。


作者: opipo    时间: 2021-8-30 13:52
[size=18.6667px]一种可取的方法是将不同的栅格参数设置录制成 scr 文件,然后在 env 文件中设置快捷键来调用这个 scr 文件

作者: netbrain    时间: 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)'
作者: zc333    时间: 2022-8-4 20:07
使用skill快速简易设置grids
作者: zc333    时间: 2022-8-12 16:55
楼主这个方法 还不错嘛

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

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


作者: 萧翔    时间: 2023-6-20 11:50
谢谢分享,正好需要
作者: Allen1211    时间: 2025-7-9 16:17
大家好,我想请教一下,我在 走线命令下 或者move命令下,修改栅格。怎么修改栅格后 还在走线,move状态下呢?

作者: db-_-    时间: 2025-7-9 19:09
Allen1211 发表于 2025-7-9 16:17
大家好,我想请教一下,我在 走线命令下 或者move命令下,修改栅格。怎么修改栅格后 还在走线,move状态下 ...

把interactive改成general
作者: Allen1211    时间: 2025-7-10 16:59
db-_- 发表于 2025-7-9 19:09
把interactive改成general

很有用,谢谢大佬。

作者: cailiu    时间: 2025-7-11 11:54
大家好,我想请教一下,我在 走线命令下 或者move命令下,修改栅格。怎么修改栅格后 还在走线,move状态下 ...




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2