Skip to content

快速上手

⏱️最后更新: 2025/07/20

✈️ 创建用户环境

创建一个根目录用来存放用户环境,比如 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(确认设置是否生效)
执行命令

bash
echo $localenv

效果如图

picture 1

🐹 第一个 Skill 命令

进入 skill 环境

bash
Skill
# 或执行以下命令
set telskill

在 Allegro 命令行中打印欢迎信息

lisp
println("Hello Allegro!")

退出 skill 环境

bash
exit

picture 2

🐹 第一个 skill 脚本

创建 skill 脚本

新增 helloworld.il 文件,用记事本打开输入以下内容

lisp
;;; helloworld.il
printf("Hello World!\n")
axlUIConfirm(strcat("当前时间:" getCurrentTime()))

使用 skill 脚本

将脚本存放在某个路径下,比如 "D:\env\EDA\allegro\pcbenv\skill\helloworld.il"

在 allegro 中直接加载脚本并运行

在命令行输入命令

bash
skill load("D:\\env\\EDA\\allegro\\pcbenv\\skill\\helloworld.il")

执行后如下所示 picture 3

在 allegro 启动的时候加载脚本

编辑 allegro.ilinit 文件

lisp
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")

则启动 allegro 的时候即执行 skill 脚本,如下所示 picture 4

修改 allegro.ilinit 后不重启 PCB 强制重新加载 allegro.ilinit 文件的方法

bash
# 在命令行执行
skill load("allegro.ilinit")
在 allegro 菜单中加载脚本

新增men-toolbar.il 文件,内容如下

lisp
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 文件如下

lisp
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
axlSetFunckey("hw" "skill load(\"helloworld.il\")")
load("men-toolbar.il")

或者同时修改 helloworldallegro.ilinit 如下所示

lisp
;;; helloworld.il
axlCmdRegister("hw" 'helloworld)
defun( helloworld (@optional (cmdParam "") (oBool "")) ; 使用 @rest 接收多个参数
    printf("Hello World!\n")
	axlUIConfirm(strcat("当前时间:" getCurrentTime()))
)
lisp
;allegro.ilinit
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")
load("men-toolbar.il")

效果如下 picture 5

🐹 第一个 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

如下所示 picture 6

然后所有自定义的 *.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

lisp
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 文件

lisp
setSkillPath(buildString(append1(getSkillPath() "D:/env/EDA/allegro/pcbenv/skill")))
load("helloworld.il")
load("demoform.il")
load("men-toolbar.il")

4. 重启 PCB

输入命令 demoform 效果如下所示 picture 7