快速上手
✈️ 创建用户环境
创建一个根目录用来存放用户环境,比如 D:\env\EDA\allegro
设置环境变量 Home = D:\env\EDA\allegro
则以下关键文件读取路径为 D:\env\EDA\allegro\pcbenv
- env
- allegro.ilinit
- allegro.strokes
✈️ 确认环境变量是否生效
- 系统 env
~\Cadence\SPB_17.4\share\pcb\text
- 用户 env
$Home/pcbenv/
在 allegro 软件中查看当前用户 env(确认设置是否生效)
执行命令
echo $localenv
效果如图
🐹 第一个 Skill 命令
进入 skill 环境
Skill
# 或执行以下命令
set telskill
在 Allegro 命令行中打印欢迎信息
println("Hello Allegro!")
退出 skill 环境
exit
🐹 第一个 skill 脚本
创建 skill 脚本
新增 helloworld.il
文件,用记事本打开输入以下内容
;;; helloworld.il
printf("Hello World!\n")
axlUIConfirm(strcat("当前时间:" getCurrentTime()))
使用 skill 脚本
将脚本存放在某个路径下,比如 "D:\env\EDA\allegro\pcbenv\skill\helloworld.il"
在命令行输入命令
skill load("D:\\env\\EDA\\allegro\\pcbenv\\skill\\helloworld.il")
执行后如下所示
编辑 allegro.ilinit
文件
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")
则启动 allegro 的时候即执行 skill 脚本,如下所示
修改 allegro.ilinit 后不重启 PCB 强制重新加载 allegro.ilinit 文件的方法
# 在命令行执行
skill load("allegro.ilinit")
新增men-toolbar.il
文件,内容如下
defun(toolmenucreat (arg)
judge = axlGetVariable("autosave_dbcheck")
case(judge
(nil
SKILLToolsMenu = '(
(popup "SmartUtils")
(popup "tool-1")
("t1","hw")
("t2","hw")
(end)
(separator)
(popup "tool-1")
("t1","hw")
("t2","hw")
(end)
(popup "tool-1")
("t1","hw")
("t2","hw")
(end)
)
)
)
let( (q)
q = axlUIMenuFind(nil -1) /*定位菜单位置于主菜单尾部*/
res = axlUIMenuInsert(q SKILLToolsMenu)
)
)
axlTriggerSet('menu 'toolmenucreat)
只修改 allegro.ilinit
文件如下
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
axlSetFunckey("hw" "skill load(\"helloworld.il\")")
load("men-toolbar.il")
或者同时修改 helloworld
和 allegro.ilinit
如下所示
;;; helloworld.il
axlCmdRegister("hw" 'helloworld)
defun( helloworld (@optional (cmdParam "") (oBool "")) ; 使用 @rest 接收多个参数
printf("Hello World!\n")
axlUIConfirm(strcat("当前时间:" getCurrentTime()))
)
;allegro.ilinit
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")
load("men-toolbar.il")
效果如下
🐹 第一个 Form 窗口
1. 确定 form 表单存放路径
默认所有的 form
表单默认存放路径为 C:\Cadence\Cadence\SPB_17.4\share\pcb\text\forms
首先,创建一个目录专门用于存放所有自定义的 form 表单,比如 D:\ENV\EDA\Allegro\pcbenv\skill\forms
然后修改 env
文件,在文件中追加路径 set FORMPATH = . $ALLEGRO_SITE/forms $GLOBAL/forms $HOME/pcbenv/skill/forms
如下所示
然后所有自定义的 *.form
表单就默认放到这个路径下
1. 创建 demo.Form
FILE_TYPE=FORM_DEFN VERSION=2
FORM
FIXED
PORT 25 20
HEADER "Referencedesigner.com"
TILE
#======================
FIELD report
FLOC 2 2
CHECKLIST "Create report"
ENDFIELD
FIELD Run_button
FLOC 2 17
MENUBUTTON "Run" 7 3
ENDFIELD
FIELD Close_button
FLOC 11 17
MENUBUTTON "Close" 7 3
ENDFIELD
#======================
ENDTILE
ENDFORM
2. 创建 skill 文件 demoform.il
axlCmdRegister( "demoform" `demoform)
; -----------------------------------------------------------------
procedure( demoform()
demo_form = axlFormCreate( (gensym) "demo.form" nil 'demo_form_Action t)
axlFormDisplay(demo_form)
); end of procedure
; -----------------------------------------------------------------
procedure( demo_form_Action(demoformObj)
case( demoformObj->curField
("Close_button"
axlFormClose( demoformObj )
axlCancelEnterFun( )
); --------------------------
("Run_button"
if( axlFormGetField( demoformObj "report") then
axlUIConfirm( "Report value is t (True) ")
else
axlUIConfirm( "Report value is nil (False) ")
); end if
); --------------------------
); end case
); end of procedure
3. 修改 allegro.init 文件
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")
load("demoform.il")
load("men-toolbar.il")
4. 重启 PCB
输入命令 demoform
效果如下所示