嘉立创 EDA SKILLS 级插件二次开发完全指南:从环境搭建到自动布线 / 等长 / 差分 / 封装绘制实战——上

前言

随着国产 EDA 的快速普及,嘉立创 EDA 已经成为国内硬件工程师、学生、创客群体最常用的 PCB 设计工具之一。但在实际工作中,我们常常会遇到大量重复性操作:批量修改上百个过孔尺寸、手动绕几十组等长线、逐个绘制标准封装、反复调整差分线间距...... 这些机械性工作不仅耗时耗力,还容易出错。

嘉立创 EDA 开放的SKILLS 级扩展插件体系,正是解决这些痛点的最佳方案。通过二次开发,我们可以把重复工作自动化、把定制需求工具化、把设计规范固化到插件里,极大提升设计效率。

很多工程师对二次开发望而却步,觉得 "要懂很多编程知识""门槛很高"。其实嘉立创 EDA 的二次开发门槛非常低:基于 JavaScript/TypeScript 语言,API 设计简洁易懂,官方提供完整的 SDK 模板,哪怕只有一点编程基础,也能快速开发出实用的工具。

这篇文章,我们从最基础的环境搭建讲起,深入解析扩展配置、核心 API、对象模型,再通过批量工具、自动布线、自动等长布线、自动差分线、自动封装绘制五大实战项目,带你从零掌握 SKILLS 级插件的开发方法。有入门级的 step-by-step 教程,也有工程级的优化技巧,读完就能动手开发自己的插件。


第一章 嘉立创 EDA 二次开发体系全景

1.1 什么是 SKILLS 级扩展插件

SKILLS 级扩展(Extension)是嘉立创 EDA 专业版推出的完整插件开发体系,允许开发者调用 EDA 内核 API,开发自定义功能工具,并且可以集成到 EDA 的菜单、工具栏、右键菜单中,就像原生功能一样使用。

简单来说:原生功能满足通用需求,扩展插件满足定制化、自动化、批量化的个性化需求

它的核心价值体现在四个方面:

  1. 效率提升:批量处理重复操作,一键完成几十步手动工作
  2. 规范固化:把企业的设计规范、检查标准做成插件,保证所有设计一致性
  3. 功能扩展:补充原生没有的功能,比如特殊的自动布线、定制化 BOM 导出
  4. 生态连接:打通 EDA 与其他工具的链路,比如直接调用仿真、生产、管理系统

1.2 两套开发体系:专业版扩展 vs 标准版脚本

嘉立创 EDA 实际上有两套二次开发体系,分别对应专业版和标准版,定位和能力差异很大,很多初学者容易混淆。我们用一张表完整对比:

对比维度 专业版扩展(SKILLS 级插件) 标准版轻量脚本
定位 完整工具级插件,可发布上架 临时一次性脚本,快速处理
运行环境 专业版内置 Node.js+Chromium 扩展宿主 标准版浏览器沙箱环境
开发语言 TypeScript(推荐)/ JavaScript 纯 JavaScript
API 权限 全量 API:UI 扩展、文件 IO、系统交互、画布操作 有限 API:仅画布内元素操作
UI 能力 可自定义对话框、侧边栏、菜单、工具栏按钮 无自定义 UI,仅原生弹窗
入口方式 顶部菜单、右键菜单、工具栏按钮、命令面板 手动粘贴运行或脚本管理器保存
打包形式 编译打包为.eext扩展包,可安装卸载 .js文本文件
发布方式 可发布到扩展广场,所有用户安装使用 个人本地使用,无法公开发布
性能 原生级性能,支持大数据量批量操作 性能一般,大数据量易卡顿
调试方式 日志调试、断点调试、独立脚本验证 仅输出日志调试
适用场景 复杂工具开发、企业定制功能、公开分享 临时批量处理、简单计算、一次性操作
学习门槛 稍高,需要了解工程化开发 极低,懂 JS 就能写

选型建议:如果只是临时改个线宽、批量挪个器件,用标准版脚本足够;如果想做成完整工具、经常使用、或者需要复杂 UI 和文件操作,一定要用专业版扩展。

1.3 技术栈深度解析

嘉立创 EDA 扩展的技术栈对前端工程师非常友好,对硬件工程师也很容易上手。

1.3.1 核心开发语言
  • TypeScript(推荐):微软推出的类型增强版 JavaScript,有类型提示、编译时检查,适合开发中大型插件,能大幅减少运行时错误。官方 SDK 默认使用 TS。
  • JavaScript:原生 JS 也可以直接开发,适合小工具和快速原型,无需编译。
1.3.2 运行时架构

专业版扩展采用双进程模型

  1. 主进程:Node.js 环境,负责文件 IO、系统调用、复杂计算、扩展管理,权限高
  2. 渲染进程:Chromium 环境,负责 UI 渲染、画布交互,运行扩展的前端代码

两者通过 IPC 通信,API 层做了封装,开发者感知不到进程差异,直接调用全局eda对象即可。

1.3.3 构建工具链
  • 包管理:npm/yarn,管理第三方依赖
  • 编译工具:TypeScript 编译器,把 TS 编译为 JS
  • 打包工具 :官方 SDK 内置打包器,把代码、资源、配置打包成.eext格式
  • 调试工具:VS Code + Chrome DevTools,支持断点调试

1.4 扩展的运行原理与沙箱机制

很多人关心安全问题:插件会不会乱改文件、会不会有病毒?嘉立创 EDA 的扩展有严格的沙箱机制:

  1. 权限声明制 :所有权限必须在extension.json中声明,用户安装时会提示权限列表
  2. 文件系统沙箱:默认只能访问 EDA 指定的目录,不能随意访问磁盘文件
  3. 网络沙箱:默认禁止网络访问,需要申请网络权限
  4. 审核机制:上架扩展广场的插件都要经过官方审核,确保安全

1.5 与主流 EDA 脚本体系对比

客观来看,每个 EDA 的二次开发体系各有优劣:

EDA 软件 二次开发语言 特点 上手难度 生态丰富度
Cadence Allegro Skill 语言 功能极强,内核级控制,几乎无所不能 非常丰富
Altium Designer VBScript/Delphi 易用,Windows 生态好,功能较全 中等 丰富
KiCad Python 开源免费,跨平台,社区活跃 中等 较丰富
嘉立创 EDA JavaScript/TypeScript 门槛最低,上手最快,国产生态适配好 简单 快速发展中

嘉立创 EDA 二次开发的最大优势是门槛低、上手快、中文生态好,对于国内工程师来说,学习成本远低于国外 EDA 的脚本语言。


第二章 开发环境从零搭建

2.1 前置依赖安装与配置

2.1.1 Node.js 安装与版本选择

Node.js 是运行 TypeScript 和 npm 的基础,是开发扩展的必备环境。

版本选择

  • 推荐:Node.js 18.x LTS 或 20.x LTS(长期支持版)
  • 不推荐:最新尝鲜版,可能有兼容性问题
  • 最低要求:16.x 以上

安装步骤

  1. 去 Node.js 官网下载对应系统的安装包(Windows 选.msi,Mac 选.pkg)

  2. 双击安装,一路下一步,默认会自动配置环境变量

  3. 安装完成后,打开命令提示符(CMD)或终端,输入以下命令验证:

    node -v

    输出类似 v18.17.0 表示安装成功

    npm -v

    输出类似 9.6.7 表示npm安装成功

常见问题

  • 如果提示node不是内部或外部命令,说明环境变量没配置好,手动把 Node.js 安装目录加到系统 PATH 里

  • npm 安装慢,可以切换淘宝镜像:

    npm config set registry https://registry.npmmirror.com

2.1.2 VS Code 开发环境配置

推荐使用 VS Code 作为代码编辑器,对 TypeScript 支持最好。

必备插件

  1. JavaScript and TypeScript Nightly:微软官方的 TS 语言支持,提供代码提示、补全、跳转
  2. ESLint:代码规范检查,提前发现错误
  3. Path Intellisense:路径自动补全

可选优化插件

  • Todo Tree:标记待办事项
  • Better Comments:彩色注释
2.1.3 嘉立创 EDA 专业版安装

开发扩展必须安装嘉立创 EDA 专业版客户端,网页版不支持扩展开发。

  • 下载地址:嘉立创 EDA 官网 → 下载 → 专业版客户端
  • 版本要求:V2.3.0 以上,建议用最新正式版
  • 安装后登录账号,确保能正常打开 PCB 文件

2.2 SDK 模板工程获取与初始化

官方提供了标准的模板工程,已经配置好编译、打包、类型声明,不用从零搭工程。

2.2.1 克隆模板工程

打开终端,进入你想存放工程的目录,执行:

复制代码
# 克隆官方模板仓库
git clone https://gitee.com/JLCEDA/pro-extension-sdk-template.git jlceda-skills-demo

# 进入工程目录
cd jlceda-skills-demo

没有 git 的话,也可以直接去 Gitee 仓库下载 ZIP 压缩包,解压后使用。

2.2.2 安装依赖
复制代码
npm install

这个命令会自动下载所有需要的依赖包,包括 TypeScript、类型声明、打包工具等。网络不好的话多试几次,或者用淘宝镜像。

2.2.3 工程目录结构深度解析

安装完依赖后,你会看到这样的目录结构,每个文件和文件夹都有明确的作用:

复制代码
jlceda-skills-demo/
├── src/                      # 【核心】源代码目录,所有业务代码写在这里
│   └── index.ts              # 扩展入口文件,activate/deactivate函数在这里
├── images/                   # 资源目录,放图标、截图等图片
│   └── logo.png              # 扩展图标,建议256x256 PNG
├── extension.json            # 【核心】扩展配置文件,定义所有元信息
├── package.json              # npm项目配置,依赖、脚本、版本信息
├── tsconfig.json             # TypeScript编译配置
├── .edaignore                # 打包忽略文件,类似.gitignore
└── README.md                 # 扩展说明文档

我们重点讲三个最核心的文件:

  1. src/index.ts :插件的代码入口,扩展激活时执行activate函数,卸载时执行deactivate函数。所有功能逻辑都从这里开始。
  2. extension.json:插件的 "身份证",告诉 EDA 这个插件叫什么、有什么功能、菜单在哪里、需要什么权限。
  3. package.json:Node.js 项目的配置文件,管理依赖和脚本命令。
2.2.4 package.json 脚本说明

打开package.json,可以看到几个预设的脚本命令:

命令 作用
npm run dev 开发模式,监听文件变化,自动编译
npm run build 生产构建,编译并打包生成.eext扩展包
npm run compile 只编译 TypeScript,不打包

2.3 第一个 Hello World 扩展

我们来写第一个最简单的扩展:点击菜单弹出 "Hello World" 提示。

2.3.1 编写入口代码

打开src/index.ts,输入以下代码:

复制代码
/**
 * 第一个扩展插件:Hello World
 */

// 扩展激活时自动调用
export function activate() {
  // 注册一个命令,命令ID为"hello-world"
  eda.sys_Command.registerCommand("hello-world", () => {
    // 命令执行时,弹出消息提示
    eda.sys_Message.showMessage(
      "Hello 嘉立创EDA SKILLS!", 
      ESYS_ToastMessageType.INFO
    );
  });
}

// 扩展卸载时自动调用
export function deactivate() {
  // 在这里清理资源、移除事件监听
  console.log("扩展已卸载");
}

代码解释

  • activate:扩展的入口函数,EDA 加载扩展时自动执行
  • eda.sys_Command.registerCommand:注册一个命令,命令 ID 是唯一标识
  • eda.sys_Message.showMessage:弹出右下角消息提示
  • ESYS_ToastMessageType是枚举类型,有 INFO、WARNING、ERROR、SUCCESS 四种
2.3.2 配置 extension.json

打开extension.json,修改为以下内容:

复制代码
{
  "name": "hello-world-demo",
  "uuid": "请替换为你自己生成的UUID",
  "displayName": "Hello World演示",
  "description": "第一个嘉立创EDA扩展插件,弹出Hello World",
  "publisher": "Demo开发者",
  "version": "1.0.0",
  "license": "MIT",
  "engines": {
    "eda": "^2.3.0"
  },
  "categories": "其他",
  "entry": "./dist/index",
  "images": {
    "logo": "./images/logo.png"
  },
  "headerMenus": {
    "tools": [
      {
        "id": "hello-world-menu",
        "title": "Hello World测试",
        "command": "hello-world"
      }
    ]
  }
}

关键配置说明

  • name:扩展唯一标识,只能用小写字母、数字、横杠,不能有中文和空格
  • uuid:全球唯一 ID,可以用在线 UUID 生成工具生成一个,不能和其他扩展重复
  • entry:编译后的入口文件路径,默认./dist/index,不要改
  • headerMenus.tools:在顶部 "工具" 菜单下添加一个菜单项,点击执行command对应的命令
2.3.3 编译打包

在终端执行:

复制代码
npm run build

编译成功后,会在build/dist/目录下生成一个.eext文件,这就是我们的扩展安装包。

2.3.4 导入 EDA 测试
  1. 打开嘉立创 EDA 专业版
  2. 顶部菜单 → 高级扩展管理器
  3. 点击右上角 导入扩展 ,选择刚才生成的.eext文件
  4. 安装完成后,重启 EDA
  5. 打开任意一个 PCB 文件,点击顶部菜单 工具Hello World 测试
  6. 如果右下角弹出 "Hello 嘉立创 EDA SKILLS!",恭喜你,第一个扩展开发成功!

2.4 常见环境问题排查

问题现象 可能原因 解决方案
npm install 报错 网络问题、版本不兼容 切换淘宝镜像,升级 Node.js 到 LTS 版本
编译失败,提示类型错误 TS 语法错误,或者 API 拼写错误 检查代码拼写,确认方法名和参数正确
导入扩展后菜单不显示 extension.json 配置错误,或者命令 ID 不匹配 检查 command 字段和 registerCommand 的 ID 是否完全一致
点击菜单没反应 入口函数没导出,或者代码有异常 检查是否 export 了 activate 函数,查看扩展日志的报错信息
扩展安装失败 版本不兼容,或者包损坏 确认 EDA 版本满足 engines 要求,重新 build
相关推荐
小码农叔叔6 个月前
【AI智能体】Skills 智能体驱动开发从使用到项目实战详解
skills·skills使用详解·skills详解·skills使用·skills实战·skills开发·skills自定义开发