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 文件(文件名可以按自己的喜欢去取)并打开,输入如下代码:
- ;---------------------------------------
- ; Allegro version: 16.6
- ; Written by: Lianora
- ; date: 2021-08-29
- ;---------------------------------------
- ;---------------------------------------
- ; 注册Allegro 命令
- ;---------------------------------------
- axlCmdRegister(
- "gd"
- 'lnChangeGrids
- ?cmdType "interactive"
- )
- ;---------------------------------------
- ; Allegro 命令调用函数
- ;---------------------------------------
- procedure(lnChangeGrids(@optional (grid "2.5"))
- let(()
- ; 获取当前设计单位
- cur_Units = car(axlDBGetDesignUnits())
- ; 将字符串转换成浮点数
- f_grid = atof(grid)
- ; 设置 non-etch grids
- new_grid = axlDBGridGet("non-etch")
- new_grid->xGrids = f_grid
- new_grid->yGrids = f_grid
- axlDBGridSet(new_grid)
- ; 设置所有 etch grids
- new_grid = axlDBGridGet("TOP")
- new_grid->name = 'etch
- new_grid->xGrids = f_grid
- new_grid->yGrids = f_grid
- axlDBGridSet(new_grid)
-
- printf("Set all girds to %s %s\n", grid, cur_Units)
- )
- )
复制代码
保存后退出。
步骤二:
在 SPB_Data\pcbenv 文件夹下面找到或者新建一个skill初始化文件 allegro.ilinit ,打开并输入以下代码。
- setSkillPath(append(getSkillPath() '("~/myskill")))
- 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
这种 滚轮设置丝滑不,好不好操作
作者: 萧翔 时间: 2023-6-20 11:50
谢谢分享,正好需要
作者: Allen1211 时间: 2025-7-9 16:17
大家好,我想请教一下,我在 走线命令下 或者move命令下,修改栅格。怎么修改栅格后 还在走线,move状态下呢?
作者: db-_- 时间: 2025-7-9 19:09
把interactive改成general
作者: Allen1211 时间: 2025-7-10 16:59
很有用,谢谢大佬。
作者: cailiu 时间: 2025-7-11 11:54
大家好,我想请教一下,我在 走线命令下 或者move命令下,修改栅格。怎么修改栅格后 还在走线,move状态下 ...
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |