Claim this agent
Agent DossierCLAWHUBSafety 84/100

Xpersona Agent

EasyEDA API Skill

EasyEDA Pro API skill for AI agents. Use when working with EasyEDA Pro EDA software, including PCB design, schematic editing, footprint/symbol management, and project operations. Supports live debugging in EasyEDA and EasyEDA extension development. Provides complete API reference (120+ classes, 62 enums, 70 interfaces), extension-development documentation, and a WebSocket bridge server to execute code in the running EasyEDA Pro client. Trigger on: "嘉立创EDA,启动!", "立创EDA,启动!", "EDA,启动!", "EasyEDA", "PCB", "schematic", "footprint", "EDA", "circuit board", "嘉立创EDA", "原理图", "PCB设计". **IMPORTANT**: 嘉立创EDA's English name is **EasyEDA**. They are the SAME product. Never use other transliterations like "EasyEDA Pro" (unless specifically versioned), "EASYEDA", "easyeda", etc. Always use "EasyEDA" for English references and "嘉立创EDA" for Chinese references.

OpenClaw · self-declared
11.9K downloadsTrust evidence available
clawhub skill install s1742kvk50chxzh6t6hetdf9y983h56r:easyeda-api

Overall rank

#62

Adoption

11.9K downloads

Trust

Unknown

Freshness

Oct 9, 2026

Freshness

Last checked Oct 9, 2026

Best For

EasyEDA API Skill is best for general automation workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

CLAWHUB, CLAWHUB, runtime-metrics, public facts pack

Overview

Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.

Self-declaredCLAWHUB

Overview

Executive Summary

EasyEDA Pro API skill for AI agents. Use when working with EasyEDA Pro EDA software, including PCB design, schematic editing, footprint/symbol management, and project operations. Supports live debugging in EasyEDA and EasyEDA extension development. Provides complete API reference (120+ classes, 62 enums, 70 interfaces), extension-development documentation, and a WebSocket bridge server to execute code in the running EasyEDA Pro client. Trigger on: "嘉立创EDA,启动!", "立创EDA,启动!", "EDA,启动!", "EasyEDA", "PCB", "schematic", "footprint", "EDA", "circuit board", "嘉立创EDA", "原理图", "PCB设计". **IMPORTANT**: 嘉立创EDA's English name is **EasyEDA**. They are the SAME product. Never use other transliterations like "EasyEDA Pro" (unless specifically versioned), "EASYEDA", "easyeda", etc. Always use "EasyEDA" for English references and "嘉立创EDA" for Chinese references. Capability contract not published. No trust telemetry is available yet. 11.9K downloads reported by the source. Last updated 10/9/2026.

No verified compatibility signals11.9K downloads

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Oct 9, 2026

Vendor

Clawhub

Artifacts

0

Benchmarks

0

Last release

1.1.24

Install & run

Setup Snapshot

clawhub skill install s1742kvk50chxzh6t6hetdf9y983h56r:easyeda-api
  1. 1

    Install using `clawhub skill install s1742kvk50chxzh6t6hetdf9y983h56r:easyeda-api` in an isolated environment before connecting it to live workloads.

  2. 2

    No published capability contract is available yet, so validate auth and request/response behavior manually.

  3. 3

    Review the upstream CLAWHUB listing at https://clawhub.ai/yanranxiaoxi/easyeda-api before using production credentials.

Evidence & Timeline

Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.

Self-declaredCLAWHUB

Artifacts & Docs

Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.

Self-declaredCLAWHUB

Captured outputs

Artifacts Archive

Extracted files

5

Examples

6

Snippets

0

Languages

Unknown

Executable Examples

bash

npm install

bash

npm run build:docs

bash

npm run server

bash

curl http://localhost:49620/health

bash

curl -X POST http://localhost:49620/execute \
  -H "Content-Type: application/json" \
  -d '{"code": "return await eda.dmt_Project.getCurrentProjectInfo();"}'

bash

# Check EasyEDA connection status (assuming the service is on port 49620)
curl http://localhost:49620/health

# Execute EasyEDA code
curl -X POST http://localhost:49620/execute \
  -H "Content-Type: application/json" \
  -d '{"code": "return await eda.dmt_Project.getCurrentProjectInfo();"}'
Extracted Files

README.md

[English](#) | [简体中文](./README.zh-Hans.md)

# EasyEDA API Skill

An EasyEDA Pro API skill package for AI coding tools such as Claude Code, OpenCode, QwenCode, and any other tool that supports the [Agent Skills](https://agentskills.io/) standard.

This skill supports both online debugging of EasyEDA Pro through AI and extension development for EasyEDA Pro.
When developing EasyEDA extensions, AI can use the extension-development documentation, API references, type information, usage examples, and bridge debugging capabilities provided by this skill to help with API lookup, code generation, and integration debugging.
If you want to analyze or modify EasyEDA document source files directly instead of operating through the API, this project also provides documentation for the source file formats.

- 📚 **Structured API documentation** — Automatically builds hierarchical indexes from reference docs for fast AI lookup
- 🧾 **Document source format specifications** — Explains project, schematic, and PCB source formats for direct source analysis and modification
- 🔌 **WebSocket Bridge** — A Node.js server that bridges AI tools and the EasyEDA client
- 🤖 **SKILL.md** — A complete skill instruction file

## Quick Start

### 1. Install dependencies

```bash
npm install
```

### 2. Build API documentation

```bash
npm run build:docs
```

This reads the raw API documentation from the `reference/` directory and generates structured docs into the `docs/` directory.

### 3. Start the WebSocket Bridge server

```bash
npm run server
```

The server automatically chooses an available port in the `49620-49629` range and waits for the EasyEDA client to connect.

### 4. Connect from EasyEDA

Install the `run-api-gateway.eext` extension in EasyEDA. Download:

- https://jlcext.com/item/oshwhub-official/run-api-gateway

After the extension is loaded, it connects to the Bridge server automatically by scanning the port range and verifying the handshake.

### 5. Use from an AI coding tool

AI coding tools such as Claude Code, OpenCode, and QwenCode automatically read `SKILL.md` for instructions, then use the HTTP API to send code to EasyEDA:

```bash
# Check EasyEDA connection status (assuming the service is on port 49620)
curl http://localhost:49620/health

# Execute EasyEDA code
curl -X POST http://localhost:49620/execute \
  -H "Content-Type: application/json" \
  -d '{"code": "return await eda.dmt_Project.getCurrentProjectInfo();"}'
```

## One-Command Packaging

```bash
npm run pack
```

This performs the following steps:
1. Build API documentation (`docs/`)
2. Package `SKILL.md`, documentation, and the server into `dist/easyeda-api/`
3. Generate `dist/easyeda-api.zip` for upload

If the documentation has already been built, you can skip that step:

```bash
npm run pack:fast
```

### Publish to ClawHub

```bash
npx clawhub@latest publish dist/easyeda-api/
```

Or upload the zip file at https://clawhub.ai/upload

## Architecture

```
┌──────────────┐   HTTP/WS     ┌────

references/_index.md

# EasyEDA Pro API 文档索引

> 此文档由构建脚本自动生成,供 AI 编程工具使用。
> 全局变量 `eda` 是 EDA 类的实例,所有 API 通过 `eda.xxx` 调用。

## 快速导航

- [classes/](classes/) - 类文档(包含全部方法和属性)
- [enums/](enums/) - 枚举文档
- [interfaces/](interfaces/) - 接口文档(包含全部属性)
- [types/](types/) - 类型别名文档

## API 访问方式

所有 API 通过全局变量 `eda` 访问,例如:
- `eda.dmt_Board.createBoard()` — 文档树 / 板子管理
- `eda.pcb_PrimitiveLine.create()` — PCB 直线图元创建
- `eda.sys_WebSocket.register()` — WebSocket 连接注册
- `eda.sch_PrimitiveComponent.create()` — 原理图器件创建

---

# 类 (Classes)

| 类名 | 描述 | 备注 |
|------|------|------|
| [DMT_Board](classes/DMT_Board.md) | Document tree / Board management class |  |
| [DMT_EditorControl](classes/DMT_EditorControl.md) | Document tree / Editor control class |  |
| [DMT_Event](classes/DMT_Event.md) | Document tree / event class |  |
| [DMT_Folder](classes/DMT_Folder.md) | Document tree / Folder class |  |
| [DMT_Panel](classes/DMT_Panel.md) | Document tree / Panel management class |  |
| [DMT_Pcb](classes/DMT_Pcb.md) | Document tree / PCB management class |  |
| [DMT_Project](classes/DMT_Project.md) | Document tree / Project management class |  |
| [DMT_Schematic](classes/DMT_Schematic.md) | Document tree / Schematic management class |  |
| [DMT_SelectControl](classes/DMT_SelectControl.md) | Document tree / selection control class |  |
| [DMT_Team](classes/DMT_Team.md) | Document tree / Team class |  |
| [DMT_Workspace](classes/DMT_Workspace.md) | Document tree / Workspace class |  |
| [EDA](classes/EDA.md) | EasyEDA Pro user API interface |  |
| [IPCB_ComplexPolygon](classes/IPCB_ComplexPolygon.md) | Complex polygon |  |
| [IPCB_Polygon](classes/IPCB_Polygon.md) | Single polygon |  |
| [IPCB_PrimitiveArc](classes/IPCB_PrimitiveArc.md) | Arc line primitive |  |
| [IPCB_PrimitiveAttribute](classes/IPCB_PrimitiveAttribute.md) | Property primitive |  |
| [IPCB_PrimitiveComponent](classes/IPCB_PrimitiveComponent.md) | Device primitive |  |
| [IPCB_PrimitiveComponentPad](classes/IPCB_PrimitiveComponentPad.md) | Device pad primitive |  |
| [IPCB_PrimitiveDimension](classes/IPCB_PrimitiveDimension.md) | Dimension primitive |  |
| [IPCB_PrimitiveFill](classes/IPCB_PrimitiveFill.md) | Fill primitive |  |
| [IPCB_PrimitiveImage](classes/IPCB_PrimitiveImage.md) | Image primitive |  |
| [IPCB_PrimitiveLine](classes/IPCB_PrimitiveLine.md) | Line primitive |  |
| [IPCB_PrimitiveObject](classes/IPCB_PrimitiveObject.md) | Binary embedded object primitive |  |
| [IPCB_PrimitivePad](classes/IPCB_PrimitivePad.md) | Pad primitive |  |
| [IPCB_PrimitivePolyline](classes/IPCB_PrimitivePolyline.md) | Polyline primitive |  |
| [IPCB_PrimitivePour](classes/IPCB_PrimitivePour.md) | Copper border primitive |  |
| [IPCB_PrimitivePoured](classes/IPCB_PrimitivePoured.md) | Copper fill primitive |  |
| [IPCB_PrimitiveRegion](classes/IPCB_PrimitiveRegion.md) | Region primitive |  |
| [IPCB_PrimitiveString](classes/IPCB_PrimitiveString.md) | Text primitive |  |
| [IPCB_PrimitiveVia](classes/IPCB_PrimitiveVia.md) | Via primitive | 

references/_quick-reference.md

# EasyEDA API 快速参考

> 此文件提供所有类及其方法/属性的签名一览,便于 AI 快速查找。
> 详细参数和返回值请查看 docs/classes/<ClassName>.md

## 全局入口

```typescript
declare const eda: EDA;
```

EDA 类的属性即为各模块的入口,如 `eda.dmt_Board`, `eda.pcb_PrimitiveLine` 等。

---

## DMT_Board

Document tree / Board management class

```typescript
class DMT_Board
```

- **copyboard**: `function copyBoard(sourceBoardName: string): Promise<string | undefined>;`
- **createboard**: `function createBoard(schematicUuid?: string, pcbUuid?: string): Promise<string | undefined>;`
- **deleteboard**: `function deleteBoard(boardName: string): Promise<boolean>;`
- **getallboardsinfo**: `function getAllBoardsInfo(): Promise<Array<IDMT_BoardItem>>;`
- **getboardinfo**: `function getBoardInfo(boardName: string): Promise<IDMT_BoardItem | undefined>;`
- **getcurrentboardinfo**: `function getCurrentBoardInfo(): Promise<IDMT_BoardItem | undefined>;`
- **modifyboardname**: `function modifyBoardName(originalBoardName: string, boardName: string): Promise<boolean>;`

---

## DMT_EditorControl

Document tree / Editor control class

```typescript
class DMT_EditorControl
```

- **activatedocument**: `function activateDocument(tabId: string): Promise<boolean>;`
- **activatesplitscreen**: `function activateSplitScreen(splitScreenId: string): Promise<boolean>;`
- **closedocument**: `function closeDocument(tabId: string): Promise<boolean>;`
- **createsplitscreen**: `function createSplitScreen( 	splitScreenType: EDMT_EditorSplitScreenDirection, 	tabId: string, ): Promise<{ sourceSplitScreenId: string; newSplitScreenId: string } | undefined>;`
- **generateindicatormarkers**: `function generateIndicatorMarkers( 	markers: Array<IDMT_IndicatorMarkerShape>, 	color?: { r: number; g: number; b: number; alpha: number }, 	lineWidth?: number, 	zoom?: boolean, 	tabId?: string, ): Promise<boolean>;`
- **getcurrentrenderedareaimage**: `function getCurrentRenderedAreaImage(tabId?: string): Promise<Blob | undefined>;`
- **getsplitscreenidbytabid**: `function getSplitScreenIdByTabId(tabId: string): Promise<string | undefined>;`
- **getsplitscreentree**: `function getSplitScreenTree(): Promise<IDMT_EditorSplitScreenItem | undefined>;`
- **gettabsbysplitscreenid**: `function getTabsBySplitScreenId(splitScreenId: string): Promise<Array<IDMT_EditorTabItem>>;`
- **mergealldocumentfromsplitscreen**: `function mergeAllDocumentFromSplitScreen(): Promise<boolean>;`
- **movedocumenttosplitscreen**: `function moveDocumentToSplitScreen(tabId: string, splitScreenId: string): Promise<boolean>;`
- **opendocument**: `function openDocument(documentUuid: string, splitScreenId?: string): Promise<string | undefined>;`
- **openlibrarydocument**: `function openLibraryDocument( 	libraryUuid: string, 	libraryType: ELIB_LibraryType.SYMBOL | ELIB_LibraryType.FOOTPRINT, 	uuid: string, 	splitScreenId?: string, ): Promise<string | undefined>;`
- **removeindicatormarkers**: `function removeIndicatorMarkers(tabId?: string): Promise<boolean>;`
- **tilealldocumenttosplitscreen**: `functi

references/classes/DMT_Board.md

# DMT\_Board class

Document tree / Board management class

## Signature

```typescript
class DMT_Board
```

## Remarks

Operations related to board management in the currently open project

## Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead>
<tbody><tr><td>

[copyBoard(sourceBoardName)](./DMT_Board.md)

</td><td>

</td><td>

Copy Board

</td></tr>
<tr><td>

[createBoard(schematicUuid, pcbUuid)](./DMT_Board.md)

</td><td>

</td><td>

**_(BETA)_** Create Board

</td></tr>
<tr><td>

[deleteBoard(boardName)](./DMT_Board.md)

</td><td>

</td><td>

Delete Board

</td></tr>
<tr><td>

[getAllBoardsInfo()](./DMT_Board.md)

</td><td>

</td><td>

Get all in the project board detailed properties of

</td></tr>
<tr><td>

[getBoardInfo(boardName)](./DMT_Board.md)

</td><td>

</td><td>

Get detailed properties of Board

</td></tr>
<tr><td>

[getCurrentBoardInfo()](./DMT_Board.md)

</td><td>

</td><td>

Get detailed properties of Current board

</td></tr>
<tr><td>

[modifyBoardName(originalBoardName, boardName)](./DMT_Board.md)

</td><td>

</td><td>

Modify Board name

</td></tr>
</tbody></table>

---

## 方法详情

### copyboard

# DMT\_Board.copyBoard() method

Copy Board

## Signature

```typescript
function copyBoard(sourceBoardName: string): Promise<string | undefined>;
```

## Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead>
<tbody><tr><td>

sourceBoardName

</td><td>

string

</td><td>

Source board name

</td></tr>
</tbody></table>

## Returns

Promise&lt;string \| undefined&gt;

New board name, if it is `undefined` the copy fails

## Example

```javascript
// 1. 取第一块板子的名称作为复制源
const boards = await eda.dmt_Board.getAllBoardsInfo();
const sourceName = boards[0].name;

// 2. 复制板子,返回新板子名称
const newBoardName = await eda.dmt_Board.copyBoard(sourceName);
console.log('source:', sourceName);
console.log('copy:', newBoardName);

// 3. 删除复制的板子,保持工程整洁
const deleted = await eda.dmt_Board.deleteBoard(newBoardName);
console.log('deleted:', deleted);
```

### createboard

# DMT\_Board.createBoard() method

> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Create Board

## Signature

```typescript
function createBoard(schematicUuid?: string, pcbUuid?: string): Promise<string | undefined>;
```

## Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead>
<tbody><tr><td>

schematicUuid

</td><td>

string

</td><td>

_(Optional)_ Associated schematic UUID

</td></tr>
<tr><td>

pcbUuid

</td><td>

string

</td><td>

_(Optional)_ Associated PCB UUID

</td></tr>
</tbody></table>

## Returns

Promise&lt;string \| undefined&gt;

Board name, if it is `undefined` creation fails

## Example

```javascript
// 1. 无参调用,由系统自动创建一对原理图/PCB 文档并关联
const boardName = await eda.dmt_Board.createBoard();
console.log('create:', boardN

references/classes/DMT_EditorControl.md

# DMT\_EditorControl class

Document tree / Editor control class

## Signature

```typescript
class DMT_EditorControl
```

## Remarks

Here the editor control is based on the sheets under the currently open engineering design. Any other `documentUuid` will be considered a non-existent document page

## Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead>
<tbody><tr><td>

[activateDocument(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Activate a document

</td></tr>
<tr><td>

[activateSplitScreen(splitScreenId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Activate a split screen

</td></tr>
<tr><td>

[closeDocument(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Close document

</td></tr>
<tr><td>

[createSplitScreen(splitScreenType, tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Create Split screen

</td></tr>
<tr><td>

[generateIndicatorMarkers(markers, color, lineWidth, zoom, tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Generate indicator markers

</td></tr>
<tr><td>

[getCurrentRenderedAreaImage(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Get the canvas rendering region image

</td></tr>
<tr><td>

[getSplitScreenIdByTabId(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Use tab ID get split screen ID

</td></tr>
<tr><td>

[getSplitScreenTree()](./DMT_EditorControl.md)

</td><td>

</td><td>

Get the editor split screen property tree

</td></tr>
<tr><td>

[getTabsBySplitScreenId(splitScreenId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Get all tabs under the specified split screen ID

</td></tr>
<tr><td>

[mergeAllDocumentFromSplitScreen()](./DMT_EditorControl.md)

</td><td>

</td><td>

Merge all split screens

</td></tr>
<tr><td>

[moveDocumentToSplitScreen(tabId, splitScreenId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Move a document to the specified split screen

</td></tr>
<tr><td>

[openDocument(documentUuid, splitScreenId)](./DMT_EditorControl.md)

</td><td>

</td><td>

Open document

</td></tr>
<tr><td>

[openLibraryDocument(libraryUuid, libraryType, uuid, splitScreenId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Open library symbol, footprint document

</td></tr>
<tr><td>

[removeIndicatorMarkers(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Remove indicator markers

</td></tr>
<tr><td>

[tileAllDocumentToSplitScreen()](./DMT_EditorControl.md)

</td><td>

</td><td>

Tile all documents

</td></tr>
<tr><td>

[zoomTo(x, y, scaleRatio, tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Zoom to coordinates

</td></tr>
<tr><td>

[zoomToAllPrimitives(tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Zoom to all primitives (fit all)

</td></tr>
<tr><td>

[zoomToRegion(left, right, top, bottom, tabId)](./DMT_EditorControl.md)

</td><td>

</td><td>

**_(BETA)_** Zoom to region

</td></tr>
<tr><td>

[zoomToSelectedPrimitives(tabId)]

Editorial read

Docs & README

Docs source

CLAWHUB

Editorial quality

thin

Skill: EasyEDA API Skill Owner: yanranxiaoxi Summary: EasyEDA Pro API skill for AI agents. Use when working with EasyEDA Pro EDA software, including PCB design, schematic editing, footprint/symbol management, and project operations. Supports live debugging in EasyEDA and EasyEDA extension development. Provides complete API reference (120+ classes, 62 enums, 70 interfaces), extension-development documentation, and a W

Full README

Skill: EasyEDA API Skill

Owner: yanranxiaoxi

Summary: EasyEDA Pro API skill for AI agents. Use when working with EasyEDA Pro EDA software, including PCB design, schematic editing, footprint/symbol management, and project operations. Supports live debugging in EasyEDA and EasyEDA extension development. Provides complete API reference (120+ classes, 62 enums, 70 interfaces), extension-development documentation, and a WebSocket bridge server to execute code in the running EasyEDA Pro client. Trigger on: "嘉立创EDA,启动!", "立创EDA,启动!", "EDA,启动!", "EasyEDA", "PCB", "schematic", "footprint", "EDA", "circuit board", "嘉立创EDA", "原理图", "PCB设计". IMPORTANT: 嘉立创EDA's English name is EasyEDA. They are the SAME product. Never use other transliterations like "EasyEDA Pro" (unless specifically versioned), "EASYEDA", "easyeda", etc. Always use "EasyEDA" for English references and "嘉立创EDA" for Chinese references.

Tags: latest:1.1.24

Version history:

v1.1.24 | 2026-09-10T08:36:14.032Z | auto

  • Major expansion of API documentation: 54 new files and 87 updated, including new interface reference files for extension and UI/grid development.
  • Added guide for AI integration: new "how-to-start-for-ai.md" with instructions tailored for AI agent usage.
  • Extended class coverage: new documentation for classes such as PCB_ImageTool, SYS_ExternalApi, and SYS_Help.
  • Updated and reorganized skill metadata for versioning consistency.
  • Removed obsolete files: deprecated type and skill card references eliminated for clarity.
  • Improved and updated quick reference and main index documentation for easier API lookup and navigation.

v1.1.23 | 2026-08-27T10:00:30.473Z | auto

  • Updated metadata version to 1.1.28
  • SKILL.md revised for accuracy and clarity; minor documentation refinements
  • Removed obsolete skill-card.md file
  • package.json and package-lock.json updated accordingly

v1.1.22 | 2026-08-27T04:00:26.547Z | auto

  • Updated package version to 1.1.22.
  • Incremented SKILL.md version metadata to 1.1.27.
  • Removed the redundant skill-card.md file.
  • Minor updates to package files for consistency.

v1.1.21 | 2026-08-25T08:07:35.410Z | auto

  • Added new interface documentation: ISCH_ExportPngResolution.
  • Removed outdated file: skill-card.md.
  • Updated and expanded API reference documentation for multiple classes.
  • Updated version metadata in SKILL.md.
  • General improvements and clarifications to reference and quick-reference docs.
  • Package files updated for improved accuracy and dependency management.

v1.1.20 | 2026-08-25T03:41:33.226Z | auto

  • Removed obsolete skill-card.md file.
  • Updated package metadata and version numbers.
  • Minor documentation and metadata adjustments for consistency.
  • No functional or API changes introduced in this release.

v1.1.19 | 2026-08-25T02:01:18.895Z | auto

  • Updated package metadata to version 1.1.24.
  • Removed the skill-card.md file.
  • Minor documentation and metadata updates in SKILL.md.

v1.1.18 | 2026-08-24T04:04:15.282Z | auto

  • Updated skill version to 1.1.18.
  • Incremented internal version metadata to "1.1.23" in SKILL.md.
  • Removed the redundant file: skill-card.md.
  • Made minor updates to dependencies and internal documentation references.
  • No functional or API changes.

v1.1.17 | 2026-08-21T13:23:16.972Z | auto

  • Updated SKILL.md metadata version to 1.1.22
  • Removed skill-card.md
  • Updated dependency information and metadata in package.json and package-lock.json
  • No functional API or interface changes

v1.1.16 | 2026-08-21T09:46:24.206Z | auto

  • Updated package and documentation files to reflect new versioning.
  • The skill version is now 1.1.21 (was 1.1.20).
  • Removed the "skill-card.md" file.
  • General package maintenance, including updates to SKILL.md and package files.

v1.1.15 | 2026-08-21T08:49:21.208Z | auto

  • Updated version metadata to 1.1.20.
  • Updated API documentation links and internal references in SKILL.md.
  • Removed the obsolete skill-card.md file.
  • Minor improvements to documentation structure and clarity.

v1.1.14 | 2026-08-21T03:37:59.405Z | auto

  • Updated package metadata and documentation version to 1.1.18.
  • Removed the skill-card.md file.
  • Minor documentation and metadata adjustments in SKILL.md.

v1.1.13 | 2026-08-20T14:24:03.193Z | auto

  • Updated metadata version to 1.1.17.
  • Removed the deprecated skill-card.md file.
  • Minor package and documentation maintenance for consistency.
  • No functional or API changes introduced in this release.

v1.1.12 | 2026-08-20T09:55:12.179Z | auto

  • Version bump and sync to 1.1.15.
  • Removed obsolete files: skill-card.md, and two enum reference files.
  • Updated API documentation and references for consistency.
  • Minor cleanup and maintenance in documentation files.

v1.1.11 | 2026-08-20T03:18:03.821Z | auto

  • Updated version to 1.1.12.
  • Documentation and API references have been refreshed across 348 files.
  • Removed obsolete file: skill-card.md.
  • No functional API or core logic changes; improvements are primarily in documentation and reference consistency.

v1.1.10 | 2026-08-19T13:27:52.323Z | auto

  • Version updated to 1.1.10.
  • Documentation and metadata updated in SKILL.md.
  • Old skill-card.md removed.
  • Dependency files (package.json, package-lock.json) updated.
  • No changes to API or runtime functionality.

v1.1.9 | 2026-08-19T12:05:19.958Z | auto

easyeda-api v1.1.9

  • Updated package metadata and dependencies.
  • Removed deprecated documentation file: skill-card.md.
  • Minor internal documentation and maintenance updates.
  • No public API or workflow changes.

v1.1.8 | 2026-08-19T10:50:31.903Z | auto

  • Removed the unused skill-card.md file.
  • Updated documentation in README.md and README.zh-Hans.md.
  • Package metadata and lockfile updated for consistency.
  • No user-facing API changes or new features.

v1.1.7 | 2026-08-18T10:51:08.238Z | auto

  • Version bumped to 1.1.7 in SKILL.md and package files.
  • Updated authoring metadata and documentation to reflect the new version.
  • Removed redundant skill-card.md file to reduce duplication.

v1.1.5 | 2026-08-18T08:07:08.835Z | auto

  • Downgraded version from 1.1.6 to 1.1.5 in skill metadata.
  • Removed the unused file: skill-card.md.
  • Updated package metadata in package.json and package-lock.json to reflect version 1.1.5.
  • No changes to core functionality or documented features.

v1.1.4 | 2026-08-18T06:32:43.712Z | auto

  • Version rolled back from 1.1.6 to 1.1.4 in metadata.
  • Removed skill-card.md file.
  • Documentation and metadata changes only; no runtime logic affected.
  • No changes to API or user-facing features.

v1.1.6 | 2026-08-18T04:19:50.877Z | auto

  • Major API documentation expansion: 76 new files added, many existing ones updated and improved.
  • Added comprehensive class, enum, and interface references under the new references/ directory.
  • Numerous new enums, interfaces, and class docs now available for extension developers.
  • Updated download links and instructions for the EasyEDA extension, replacing previous URLs.
  • Improved and clarified documentation for PCB, schematic, and project source formats.
  • Removed outdated types and documentation files to reduce clutter and ensure accuracy.

v1.1.3 | 2026-04-24T01:53:37.968Z | auto

  • Added a README.md file for improved documentation and usability.
  • Updated skill version to 1.1.3.
  • Minor adjustments to package metadata and dependencies.

v1.1.2 | 2026-04-24T01:38:45.219Z | auto

  • Added 11 new reference files for additional classes and interfaces in the EasyEDA API.
  • Updated 289 files, including API documentation and guides, to expand and refine the API reference and extension development documentation.
  • Increased API coverage, notably with new classes (e.g., PCB_RayTracerEngine, SCH_Net) and interfaces related to project, schematic, and rendering features.
  • Minor updates to skill metadata and documentation structure for improved navigation and usability.

v1.1.1 | 2026-04-23T08:03:00.323Z | auto

  • Bump version to 1.1.1 in metadata.
  • Documentation updated to reflect the new version.
  • No functional changes; internal metadata and documentation refresh only.

v1.1.0 | 2026-04-23T02:04:43.411Z | auto

  • Added comprehensive EasyEDA document source format references, including project, schematic, and PCB structure documentation (format/ directory).
  • Significantly expanded documentation to support tasks involving raw source analysis, editing, or generation, not just API usage.
  • Updated skill manifest and version.
  • No breaking changes to existing API documentation or behavior.
  • Package and lock files updated for the new documentation set.

v1.0.8 | 2026-04-02T07:49:55.697Z | auto

easyeda-api 1.0.8

  • Updated version number in metadata to 1.0.8.
  • Added CLAUDE_SKILL_DIR to required environment variables in the skill metadata.
  • No changes to runtime logic or API; documentation updated for compatibility requirements.

v1.0.7 | 2026-04-02T07:39:21.965Z | auto

easyeda-api v1.0.7

  • Updated version metadata to 1.0.7.
  • Minor documentation and metadata changes in SKILL.md (no functional or API changes).
  • No user-facing feature or compatibility changes.

v1.0.6 | 2026-04-02T05:59:00.812Z | auto

easyeda-api 1.0.6

  • Updated package version to 1.0.6.
  • Minor edits to documentation in SKILL.md (formatting, metadata update, fixed ASCII diagram alignment).
  • No changes to core logic or functionality.

v1.0.5 | 2026-04-02T01:33:51.775Z | auto

easyeda-api v1.0.5

  • Bumped version to 1.0.5 in SKILL.md and package files.
  • No functional or interface changes—documentation and metadata update only.

v1.0.4 | 2026-04-01T09:39:21.914Z | auto

  • Bumped version to 1.0.4.
  • Updated metadata version tag in SKILL.md.
  • No functional changes; documentation and version alignment only.

v1.0.3 | 2026-03-24T06:03:29.795Z | auto

EasyEDA API Skill 1.0.3 — Adds documentation and usage for EasyEDA extension development

  • Expanded SKILL.md to clarify support for EasyEDA extension development, including usage, debugging workflow, and extension-specific resources.
  • Added direct download link and instructions for the required EasyEDA bridge extension.
  • Improved connection instructions and user prompts for connecting/joining EDA windows.
  • Updated version metadata to 1.0.3.
  • No code/API changes; this release focuses on improved documentation, extension developer onboarding, and accuracy of usage instructions.

v1.0.2 | 2026-03-20T10:03:12.953Z | auto

  • Bump version to 1.0.2.
  • Update SKILL.md metadata version field from 1.0.1 to 1.0.2.
  • No functional or documentation changes other than metadata update.

v1.0.1 | 2026-03-20T07:28:01.458Z | auto

  • Updated version to 1.0.1 with minor documentation and metadata adjustments.
  • Expanded and clarified command trigger phrases in the SKILL.md for improved usability.
  • Improved SKILL.md metadata consistency and formatting for trigger phrases and version.
  • No functional or breaking changes; package and documentation updates only.

v1.0.0 | 2026-03-20T05:47:45.298Z | user

Initial release: EasyEDA Pro API integration skill for AI agents.

  • Provides full API reference (120+ classes, 62 enums, 70 interfaces, 19 type aliases) for EasyEDA Pro (嘉立创EDA专业版).
  • Includes a Node.js WebSocket bridge server to execute code in EasyEDA Pro's runtime from AI agents.
  • Supports command triggers and auto-discovery of running bridge server/EDA windows.
  • Usage guides for session setup, connection, window selection, and code execution.
  • Enforced product naming consistency: always use "EasyEDA" (English) or "嘉立创EDA" (Chinese).
  • Complete documentation and quick reference for all API classes, methods, enums, and interfaces.

Archive index:

Archive v1.1.24: 456 files, 711473 bytes

Files: format/index.md (7050b), format/pcb/3d.md (4645b), format/pcb/attr.md (2064b), format/pcb/common.md (9692b), format/pcb/component.md (3692b), format/pcb/dimension.md (2047b), format/pcb/index.md (1219b), format/pcb/obj.md (1436b), format/pcb/pad_via.md (4795b), format/pcb/panel.md (1598b), format/pcb/partition.md (1030b), format/pcb/primitive.md (4993b), format/pcb/rule.md (2334b), format/pcb/shape.md (12240b), format/pcb/text.md (1963b), format/project/blob.md (1349b), format/project/common.md (935b), format/project/group.md (1644b), format/project/index.md (808b), format/project/instance.md (1329b), format/project/meta.md (3551b), format/project/variant.md (611b), format/schematic/attr.md (2105b), format/schematic/common.md (1445b), format/schematic/component.md (6838b), format/schematic/index.md (940b), format/schematic/obj.md (1249b), format/schematic/pin.md (2308b), format/schematic/shape.md (6973b), format/schematic/structure.md (1553b), format/schematic/table.md (2449b), format/schematic/text.md (1295b), format/schematic/wire.md (4953b), guide/ancillary-projects.md (4311b), guide/ancillary-projects/pro-api-sdk.md (56b), guide/ancillary-projects/pro-api-types.md (92b), guide/error-handling.md (1238b), guide/extension-json.md (4928b), guide/extensions-marketplace.md (4227b), guide/how-to-start-for-ai.md (17521b), guide/how-to-start.md (16338b), guide/i18n.md (3049b), guide/index.md (951b), guide/inline-frame.md (1390b), guide/invoke-apis.md (4110b), guide/stability.md (3198b), package-lock.json (1967b), package.json (262b), README.md (4807b), README.zh-Hans.md (4454b), references/_index.md (38791b), references/_quick-reference.md (193745b), references/classes/DMT_Board.md (8459b), references/classes/DMT_EditorControl.md (33440b), references/classes/DMT_Event.md (6139b), references/classes/DMT_Folder.md (12495b), references/classes/DMT_Panel.md (9807b), references/classes/DMT_Pcb.md (10269b), references/classes/DMT_Project.md (9458b), references/classes/DMT_Schematic.md (35259b), references/classes/DMT_SelectControl.md (2512b), references/classes/DMT_Team.md (3322b), references/classes/DMT_Workspace.md (3732b), references/classes/EDA.md (12516b), references/classes/IPCB_ComplexPolygon.md (6044b), references/classes/IPCB_Polygon.md (3090b), references/classes/IPCB_PrimitiveArc.md (37653b), references/classes/IPCB_PrimitiveAttribute.md (64926b), references/classes/IPCB_PrimitiveComponent.md (52305b), references/classes/IPCB_PrimitiveComponentPad.md (8772b), references/classes/IPCB_PrimitiveDimension.md (27831b), references/classes/IPCB_PrimitiveFill.md (28795b), references/classes/IPCB_PrimitiveImage.md (31889b), references/classes/IPCB_PrimitiveLine.md (32186b), references/classes/IPCB_PrimitiveObject.md (39835b), references/classes/IPCB_PrimitivePad.md (61154b), references/classes/IPCB_PrimitivePolyline.md (26817b), references/classes/IPCB_PrimitivePour.md (42693b), references/classes/IPCB_PrimitivePoured.md (12285b), references/classes/IPCB_PrimitiveRegion.md (29858b) (+56 more)

File v1.1.24:README.md

English | 简体中文

EasyEDA API Skill

An EasyEDA Pro API skill package for AI coding tools such as Claude Code, OpenCode, QwenCode, and any other tool that supports the Agent Skills standard.

This skill supports both online debugging of EasyEDA Pro through AI and extension development for EasyEDA Pro. When developing EasyEDA extensions, AI can use the extension-development documentation, API references, type information, usage examples, and bridge debugging capabilities provided by this skill to help with API lookup, code generation, and integration debugging. If you want to analyze or modify EasyEDA document source files directly instead of operating through the API, this project also provides documentation for the source file formats.

  • 📚 Structured API documentation — Automatically builds hierarchical indexes from reference docs for fast AI lookup
  • 🧾 Document source format specifications — Explains project, schematic, and PCB source formats for direct source analysis and modification
  • 🔌 WebSocket Bridge — A Node.js server that bridges AI tools and the EasyEDA client
  • 🤖 SKILL.md — A complete skill instruction file

Quick Start

1. Install dependencies

npm install

2. Build API documentation

npm run build:docs

This reads the raw API documentation from the reference/ directory and generates structured docs into the docs/ directory.

3. Start the WebSocket Bridge server

npm run server

The server automatically chooses an available port in the 49620-49629 range and waits for the EasyEDA client to connect.

4. Connect from EasyEDA

Install the run-api-gateway.eext extension in EasyEDA. Download:

  • https://jlcext.com/item/oshwhub-official/run-api-gateway

After the extension is loaded, it connects to the Bridge server automatically by scanning the port range and verifying the handshake.

5. Use from an AI coding tool

AI coding tools such as Claude Code, OpenCode, and QwenCode automatically read SKILL.md for instructions, then use the HTTP API to send code to EasyEDA:

# Check EasyEDA connection status (assuming the service is on port 49620)
curl http://localhost:49620/health

# Execute EasyEDA code
curl -X POST http://localhost:49620/execute \
  -H "Content-Type: application/json" \
  -d '{"code": "return await eda.dmt_Project.getCurrentProjectInfo();"}'

One-Command Packaging

npm run pack

This performs the following steps:

  1. Build API documentation (docs/)
  2. Package SKILL.md, documentation, and the server into dist/easyeda-api/
  3. Generate dist/easyeda-api.zip for upload

If the documentation has already been built, you can skip that step:

npm run pack:fast

Publish to ClawHub

npx clawhub@latest publish dist/easyeda-api/

Or upload the zip file at https://clawhub.ai/upload

Architecture

┌──────────────┐   HTTP/WS     ┌────────────────┐   WebSocket   ┌──────────┐
│   AI Agent   │ ◄───────────► │ Bridge Server  │ ◄───────────► │  EasyEDA │
│ (Skill Tool) │  Port Range   │   (Node.js)    │  Port Range   │ (Client) │
└──────────────┘  49620-49629  └────────────────┘  49620-49629  └──────────┘

Communication Protocol

| Message Type | Direction | Description | |--------------|-----------|-------------| | execute | AI → EDA | Execute JavaScript code | | result | EDA → AI | Return execution result | | error | EDA → AI | Return execution error | | handshake | Server → Client | Connection verification (includes service: "easyeda-bridge") | | ping/pong | Bidirectional | Heartbeat |

Directory Structure

easyeda-api-skill/
  SKILL.md              # AgentSkills standard skill definition
  AGENTS.md             # Agent prompt guide
  package.json          # Project configuration
  reference/            # Raw API reference docs (gitignored)
  docs/                 # Built structured docs (gitignored)
  format/               # EasyEDA document source format specs (project/schematic/pcb)
  guide/                # API development guides
  user-guide/           # User guides
  server/index.mjs      # WebSocket Bridge server
  scripts/
    build-docs.mjs      # Documentation build script
    pack.mjs            # Packaging script
  dist/                 # Packaging output (gitignored)
    easyeda-api/        # Publishable skill directory
    easyeda-api.zip     # Zip archive for ClawHub upload

File v1.1.24:references/_index.md

EasyEDA Pro API 文档索引

此文档由构建脚本自动生成,供 AI 编程工具使用。 全局变量 eda 是 EDA 类的实例,所有 API 通过 eda.xxx 调用。

快速导航

  • classes/ - 类文档(包含全部方法和属性)
  • enums/ - 枚举文档
  • interfaces/ - 接口文档(包含全部属性)
  • types/ - 类型别名文档

API 访问方式

所有 API 通过全局变量 eda 访问,例如:

  • eda.dmt_Board.createBoard() — 文档树 / 板子管理
  • eda.pcb_PrimitiveLine.create() — PCB 直线图元创建
  • eda.sys_WebSocket.register() — WebSocket 连接注册
  • eda.sch_PrimitiveComponent.create() — 原理图器件创建

类 (Classes)

| 类名 | 描述 | 备注 | |------|------|------| | DMT_Board | Document tree / Board management class | | | DMT_EditorControl | Document tree / Editor control class | | | DMT_Event | Document tree / event class | | | DMT_Folder | Document tree / Folder class | | | DMT_Panel | Document tree / Panel management class | | | DMT_Pcb | Document tree / PCB management class | | | DMT_Project | Document tree / Project management class | | | DMT_Schematic | Document tree / Schematic management class | | | DMT_SelectControl | Document tree / selection control class | | | DMT_Team | Document tree / Team class | | | DMT_Workspace | Document tree / Workspace class | | | EDA | EasyEDA Pro user API interface | | | IPCB_ComplexPolygon | Complex polygon | | | IPCB_Polygon | Single polygon | | | IPCB_PrimitiveArc | Arc line primitive | | | IPCB_PrimitiveAttribute | Property primitive | | | IPCB_PrimitiveComponent | Device primitive | | | IPCB_PrimitiveComponentPad | Device pad primitive | | | IPCB_PrimitiveDimension | Dimension primitive | | | IPCB_PrimitiveFill | Fill primitive | | | IPCB_PrimitiveImage | Image primitive | | | IPCB_PrimitiveLine | Line primitive | | | IPCB_PrimitiveObject | Binary embedded object primitive | | | IPCB_PrimitivePad | Pad primitive | | | IPCB_PrimitivePolyline | Polyline primitive | | | IPCB_PrimitivePour | Copper border primitive | | | IPCB_PrimitivePoured | Copper fill primitive | | | IPCB_PrimitiveRegion | Region primitive | | | IPCB_PrimitiveString | Text primitive | | | IPCB_PrimitiveVia | Via primitive | | | ISCH_PrimitiveArc | Arc primitive | | | ISCH_PrimitiveAttribute | Property primitive | | | ISCH_PrimitiveBus | Bus primitive | | | ISCH_PrimitiveCbbSymbolComponent | Reuse block symbol primitive | | | ISCH_PrimitiveCircle | Circle primitive | | | ISCH_PrimitiveComponent | Device primitive | | | ISCH_PrimitiveComponentPin | Device pin primitive | | | ISCH_PrimitiveObject | Binary embedded object primitive | | | ISCH_PrimitivePin | Pin primitive | | | ISCH_PrimitivePolygon | Polygon (polyline) primitive | | | ISCH_PrimitiveRectangle | Rectangle primitive | | | ISCH_PrimitiveText | Text primitive | | | ISCH_PrimitiveWire | Wire primitive | | | LIB_3DModel | Comprehensive library / 3D model class | | | LIB_Cbb | Comprehensive library / reuse block class | | | LIB_Classification | Comprehensive library / library classification index class | | | LIB_Device | Comprehensive library / device class | | | LIB_Footprint | Comprehensive library / footprint class | | | LIB_LibrariesList | Comprehensive library / library list class | | | LIB_PanelLibrary | Comprehensive library / panel library class | | | LIB_SelectControl | Comprehensive library / selection control class | | | LIB_SimulationModel | Comprehensive library / simulation model class | | | LIB_Symbol | Comprehensive library / symbol class | | | PCB_Document | PCB & footprint / document operation class | | | PCB_Drc | PCB & footprint / design rule check (DRC) class | | | PCB_Event | PCB & footprint / event class | | | PCB_ImageTool | PCB 图片工具类 | | | PCB_Layer | PCB & footprint / layer operation class | | | PCB_ManufactureData | PCB & footprint / manufacture data class | | | PCB_MathPolygon | PCB & footprint / polygon math class | | | PCB_Net | PCB & footprint / net class | | | PCB_Primitive | PCB & footprint / primitive class | | | PCB_PrimitiveArc | PCB & footprint / arc line primitive class | | | PCB_PrimitiveAttribute | PCB & footprint / property primitive class | | | PCB_PrimitiveComponent | PCB & footprint / device primitive class | | | PCB_PrimitiveDimension | PCB & footprint / dimension primitive class | | | PCB_PrimitiveFill | PCB & footprint / fill primitive class | | | PCB_PrimitiveImage | PCB & footprint / image primitive class | | | PCB_PrimitiveLine | PCB & footprint / line primitive class | | | PCB_PrimitiveObject | PCB & footprint / binary embedded object primitive class | | | PCB_PrimitivePad | PCB & footprint / pad primitive class | | | PCB_PrimitivePolyline | PCB & footprint / polyline primitive class | | | PCB_PrimitivePour | PCB & footprint / copper border primitive class | | | PCB_PrimitivePoured | PCB & footprint / copper fill primitive class | | | PCB_PrimitiveRegion | PCB & footprint / forbidden region and constrained region primitive class | | | PCB_PrimitiveString | PCB & footprint / text primitive class | | | PCB_PrimitiveVia | PCB & footprint / via primitive class | | | PCB_RayTracerEngine | PCB & footprint / ray tracer engine class | | | PCB_SelectControl | PCB & footprint / selection control class | | | PNL_Document | Panel / document operation class | | | SCH_Document | Schematic & symbol / document operation class | | | SCH_Drc | Schematic & symbol / design rule check (DRC) class | | | SCH_Event | Schematic & symbol / event class | | | SCH_ManufactureData | Schematic & symbol / manufacture data class | | | SCH_Net | Schematic & symbol / net class | | | SCH_Netlist | Schematic & symbol / netlist class | | | SCH_Primitive | Schematic & symbol / primitive class | | | SCH_PrimitiveArc | Schematic & symbol / arc primitive class | | | SCH_PrimitiveAttribute | Schematic & symbol / property primitive class | | | SCH_PrimitiveBus | Schematic & symbol / bus primitive class | | | SCH_PrimitiveCircle | Schematic & symbol / circle primitive class | | | SCH_PrimitiveComponent | Schematic & symbol / device primitive class | | | SCH_PrimitiveObject | Schematic & symbol / binary embedded object primitive class | | | SCH_PrimitivePin | Schematic & symbol / pin primitive class | | | SCH_PrimitivePolygon | Schematic & symbol / polygon (polyline) primitive class | | | SCH_PrimitiveRectangle | Schematic & symbol / rectangle primitive class | | | SCH_PrimitiveText | Schematic & symbol / text primitive class | | | SCH_PrimitiveWire | Schematic & symbol / wire primitive class | | | SCH_SelectControl | Schematic & symbol / selection control class | | | SCH_SimulationEngine | Schematic & symbol / simulation engine class | | | SCH_Utils | Schematic & symbol / utility class | | | SYS_ClientUrl | System / external request class | | | SYS_Dialog | System / dialog class | | | SYS_Environment | System / runtime environment class | | | SYS_ExternalApi | 外部接口注入管理类 | | | SYS_FileManager | System / file manager class | | | SYS_FileSystem | System / file system interaction class | | | SYS_FontManager | System / font manager class | | | SYS_FormatConversion | System / format conversion (Chameleon) class | | | SYS_HeaderMenu | System / header menu class | | | SYS_Help | Help 渐进式披露类 | | | SYS_I18n | System / multilingual class | | | SYS_IFrame | System / iframe window class | | | SYS_LoadingAndProgressBar | System / loading and progress bar class | | | SYS_Log | System / log class | | | SYS_Math | System / math class | | | SYS_Message | System / message notification class | | | SYS_MessageBox | System / message box class | | | SYS_MessageBus | System / message bus class | | | SYS_PanelControl | System / panel control class | | | SYS_RightClickMenu | System / right-click menu class | | | SYS_Setting | System / settings class | | | SYS_ShortcutKey | System / shortcut key class | | | SYS_Storage | System / storage class | | | SYS_Timer | System / timer class | | | SYS_ToastMessage | System / toast message class | | | SYS_Tool | System / tool class | | | SYS_Unit | System / unit class | | | SYS_WebSocket | System / WebSocket class | | | SYS_Window | System / window class | |


枚举 (Enumerations)

| 枚举名 | 描述 | 备注 | |--------|------|------| | EDMT_EditorDocumentType | Editor document type | | | EDMT_EditorSplitScreenDirection | Editor split screen direction | | | EDMT_EditorTabEventType | Editor tab event type | | | EDMT_IndicatorMarkerType | Indicator marker type | | | EDMT_ItemType | Document tree project type | | | EDMT_ProjectCollaborationMode | Project collaboration mode | | | ELIB_DeviceJlcLibraryCategory | EasyEDA SMT library category | | | ELIB_LibraryType | Comprehensive library library type | | | ELIB_PreviewType | Preview view type | | | ELIB_SimulationModelType | Simulation model type | | | ELIB_SymbolType | Symbol type | | | EPCB_AutoRoutingCornerStyle | Auto routing corner style | | | EPCB_AutoRoutingExistingPrimitiveMode | How auto routing handles existing wires/vias | | | EPCB_AutoRoutingOptimization | Auto routing optimization priority | | | EPCB_DocumentCanvasUpdateCalculationActiveStatus | Canvas update calculation function status | | | EPCB_DocumentRatlineCalculatingActiveStatus | Document ratline calculation function status | | | EPCB_InactiveLayerDisplayMode | Inactive layer display mode | | | EPCB_LayerColorConfiguration | Layer color configuration | | | EPCB_LayerId | Layer ID | | | EPCB_LayerStatus | Layer status | | | EPCB_LayerType | Layer type | | | EPCB_MouseEventType | Mouse event type | | | EPCB_NetEventType | Net event type | | | EPCB_PcbPlateType | PCB plate type | | | EPCB_PdfOutputMethod | PDF output method | | | EPCB_PrimitiveArcInteractiveMode | Arc interaction mode | | | EPCB_PrimitiveDimensionType | Dimension type | | | EPCB_PrimitiveEventType | Primitive event type | | | EPCB_PrimitiveFillMode | Fill primitive fill mode | | | EPCB_PrimitivePadHeatWeldingConnectionMethod | Pad heat welding connection method | | | EPCB_PrimitivePadHoleType | Pad drilling type | | | EPCB_PrimitivePadShapeType | Pad shape type | | | EPCB_PrimitivePadType | Pad type | | | EPCB_PrimitivePourFillMethod | Copper fill method | | | EPCB_PrimitiveRegionRuleType | Region primitive region rule type | | | EPCB_PrimitiveStringAlignMode | Text alignment mode | | | EPCB_PrimitiveType | Primitive type | | | EPCB_PrimitiveViaType | Via type | | | ESCH_DynamicSimulationEnginePullEventType | Dynamic simulation engine pull event type | | | ESCH_DynamicSimulationEnginePushEventType | Dynamic simulation engine push event type | | | ESCH_ExportDocumentFileType | Export document file type | | | ESCH_MouseEventType | Mouse event type | | | ESCH_PrimitiveComponentType | Device type | | | ESCH_PrimitiveEventType | Primitive event type | | | ESCH_PrimitiveFillStyle | Fill style | | | ESCH_PrimitiveLineType | Line type | | | ESCH_PrimitivePinShape | Pin shape | | | ESCH_PrimitivePinType | Pin type | | | ESCH_PrimitiveTextAlignMode | Text alignment mode | | | ESCH_PrimitiveType | Primitive type | | | ESCH_SimulationNetlistType | Simulation netlist type | | | ESCH_SpiceSimulationEnginePullEventType | Spice simulation engine pull event type | | | ESCH_SpiceSimulationEnginePushEventType | Spice simulation engine push event type | | | ESYS_BottomPanelTab | Bottom panel tab | | | ESYS_HeaderMenuEnvironment | Header menu environment | | | ESYS_ImportProjectBoardOutlineSource | Import project board outline source | | | ESYS_ImportProjectImportOption | Import project import option | | | ESYS_ImportProjectSchematicObjectStyle | Import project schematic primitive style | | | ESYS_ImportProjectViaSolderMaskExpansion | Import project via solder mask extension | | | ESYS_LeftPanelTab | Left panel tab | | | ESYS_LogType | Log type | | | ESYS_NetlistType | Netlist type | | | ESYS_RightPanelTab | Right panel tab | | | ESYS_ShortcutKeyEffectiveEditorRange | Effective page range of the shortcut key | | | ESYS_ShortcutKeyEffectiveEditorScene | Effective scene range of the shortcut key | | | ESYS_StartPageQuickStartItem | Start page quick start item | | | ESYS_Theme | Theme | | | ESYS_ToastMessageType | Toast message type | | | ESYS_Unit | Unit | | | ESYS_WindowEventType | Window event type | | | ESYS_WindowOpenTarget | Open window context target | | | NetportDeviceName | 网络端口符号对应的器件名称 | | | SchToolBarDeviceName | 悬浮框特殊符号对应的器件名称 | |


接口 (Interfaces)

| 接口名 | 描述 | 备注 | |--------|------|------| | BoardProps | 分组面板:带标题的可折叠/分组容器 | | | BorderConfig | 边框配置 | | | ButtonProps | 按钮组件:可点击触发的操作按钮 | | | CellClickInfo | 单元格点击信息 | | | CellCoord | 单元格坐标(rowKey + colKey 定位一个单元格) | | | CheckboxEditConfig | | | | CheckBoxProps | 复选框组件:可勾选的状态控件 | | | CheckChangeDetail | 勾选变更详情 | | | ClipboardCellData | 剪贴板单元格数据 | | | ClipboardConfig | 剪贴板配置 | | | ColorPickerProps | 颜色拾取组件:复用 Input color 类型,点击弹出内置固定色板,支持预览/应用/手输/清除/默认/关闭 | | | ColumnDef | 列定义 | | | ColumnEditTrigger | 编辑触发方式 | | | ColumnGroupDef | 列分组:多级表头 | | | ColumnResizeConfig | 列宽拖拽配置 | | | ComponentPropsMap | Component name → Props type mapping, serving as the sole source of the createComponent generic constraint | | | CustomHeaderConfig | 自定义表头配置(列可见性管理) | | | DialogProps | 对话框组件:带标题栏、可拖拽缩放的组合弹窗 | | | DragSortConfig | 拖拽排序配置 | | | EditingConfig | 编辑配置 | | | FilteringConfig | 筛选配置 | | | FixedColumnConfig | 固定列配置(也可通过 ColumnDef.fixed 逐列声明) | | | FlexItemProps | Flex 子项:Flex 布局中的单个子元素 | | | FlexProps | 布局容器:灵活的 Flex 布局容器 | | | GridItemProps | Grid 子项:网格中的单个子元素 | | | GridProps | 布局容器:固定列数的网格布局容器 | | | IconProps | 图标配置:通过 URL 或 CSS class 指定图标 | | | IDesignPortal | Component tree operation contract. | | | IDMT_BoardItem | Board property | | | IDMT_BriefProjectItem | Brief project properties | | | IDMT_EditorDocumentItem | Editor document object | | | IDMT_EditorSplitScreenItem | Editor split screen property | | | IDMT_EditorTabItem | Editor tab | | | IDMT_FolderItem | Folder property | | | IDMT_IndicatorMarkerShape | Indicator marker shape | | | IDMT_PanelItem | Panel property | | | IDMT_PcbItem | PCB property | | | IDMT_ProjectItem | Project property | | | IDMT_SchematicItem | Schematic property | | | IDMT_SchematicPageItem | Schematic sheet property | | | IDMT_TeamItem | Team properties | | | IDMT_WorkspaceItem | Workspace properties | | | ILIB_3DModelItem | 3D model property | | | ILIB_3DModelSearchItem | Searched 3D model properties | | | ILIB_CbbItem | Reuse block property | | | ILIB_CbbSearchItem | Searched reuse block properties | | | ILIB_ClassificationIndex | Classification index | | | ILIB_DeviceAssociationItem | Device associated symbol, footprint property | | | ILIB_DeviceExtendPropertyItem | Device extension property | | | ILIB_DeviceItem | Device property | | | ILIB_DevicePropertiesForSearch | Device parameters that can be used for precise search | | | ILIB_DeviceSearchItem | Searched device properties | | | ILIB_ExtendLibrary3DModelFunctions | External library 3D model functions | | | ILIB_ExtendLibraryCbbFunctions | External library reuse block functions | | | ILIB_ExtendLibraryClassificationIndex | External library classification index | | | ILIB_ExtendLibraryDeviceFunctions | External library device functions | | | ILIB_ExtendLibraryFootprintFunctions | External library footprint functions | | | ILIB_ExtendLibraryFunctions | External library functions | | | ILIB_ExtendLibraryItem | External library item | | | ILIB_ExtendLibraryItemIndex | External library item index | | | ILIB_ExtendLibrarySearchProperty | External library search property | | | ILIB_ExtendLibrarySearchResult | External library search result | | | ILIB_ExtendLibrarySearchResultDataLine | External library search result data line | | | ILIB_ExtendLibrarySymbolFunctions | External library symbol functions | | | ILIB_ExtendLibraryUserIndex | External library user index | | | ILIB_FootprintItem | Footprint property | | | ILIB_FootprintPropertiesForSearch | Footprint parameters that can be used for precise search | | | ILIB_FootprintSearchItem | Searched footprint properties | | | ILIB_LibraryInfo | Library information | | | ILIB_LibraryItem | Library property | | | ILIB_PanelLibraryItem | Panel library property | | | ILIB_PanelLibrarySearchItem | Searched panel library properties | | | ILIB_SimulationModelItem | Simulation model properties | | | ILIB_SimulationModelSearchItem | Searched simulation model properties | | | ILIB_SymbolItem | Symbol property | | | ILIB_SymbolPropertiesForSearch | Symbol parameters that can be used for precise search | | | ILIB_SymbolSearchItem | Searched symbol properties | | | ImageProps | 图片组件:展示单张图片 | | | InputEditConfig | | | | InputProps | 输入框组件:支持下拉、搜索、清除、前后缀等多种形态 | | | IPCB_AutoLayoutResult | Auto layout result | | | IPCB_AutoRoutingProps | Auto routing props | | | IPCB_AutoRoutingResult | Auto routing result | | | IPCB_BomPropertiesTableColumns | BOM column properties and sorting rules | | | IPCB_DifferentialPairItem | Differential pair properties | | | IPCB_DiscretizedPoint | Discretized point | | | IPCB_DiscretizeOptions | Discretization options | | | IPCB_EqualLengthNetGroupItem | Equal-length net group properties | | | IPCB_LayerItem | Layer properties | | | IPCB_NetClassItem | Net class property | | | IPCB_NetInfo | Net property | | | IPCB_PadPairGroupItem | Pad pair group properties | | | IPCB_PadPairMinWireLengthItem | Pad pair minimum wire length properties | | | IPCB_PhysicalStackingConfiguration | Physical stacking configuration | | | IPCB_Primitive | PCB primitive | | | IPCB_PrimitiveAPI | PCB primitive API | | | IPCB_PrimitivePadHeatWelding | Pad thermal relief optimization parameters | | | IPCB_PrimitivePouredPourFill | Copper fill region | | | IPCB_PrimitiveSolderMaskAndPasteMaskExpansion | Solder mask / paste mask expansion | | | IPCB_SubstratePhysicalProperties | Substrate physical properties | | | IRawNet | Raw data - net | | | IRawPureSchematic | Raw data - pureSchematic | | | IRawSchematic | Raw data - schematic | | | IRawWire | Raw data - wire | | | ISCH_DrcError | DRC error item | | | ISCH_DrcErrorPrimitive | Primitive involved in a DRC error | | | ISCH_ExportPngResolution | 原理图导出图片分辨率 | | | ISCH_NetInfo | Net property | | | ISCH_Primitive | Schematic primitive | | | ISCH_PrimitiveAPI | Schematic primitive API | | | ISCH_ProjectNetInfo | Project net property | | | ISCH_WireInfo | Wire property | | | ISYS_ExtensionExternalApiIndex | external API 扁平索引(按命名空间分组) | | | ISYS_ExtensionRegisteredExternalApis | 扩展注入的上层接口注册表(按扩展分组) | | | ISYS_ExternalApiHelp | 扩展注入的上层接口 Help 元数据 | | | ISYS_ExternalApiRegistration | 扩展注入的上层接口注册条目 | | | ISYS_FileSystemFileList | File system file path | | | ISYS_HeaderMenus | Header menu item | | | ISYS_HeaderMenuSub1MenuItem | Top-level secondary menu item | | | ISYS_HeaderMenuSub2MenuItem | Top-level tertiary menu item | | | ISYS_HeaderMenuTopMenuItem | Top-level primary menu item | | | ISYS_HelpClassSummary | 由 help 查询返回的类摘要 | | | ISYS_HelpData | lc-build 生成的 API jsonSchema(d.ts 的 JSON 形态) | | | ISYS_HelpMethodDetail | Help 查询返回的方法详情 | | | ISYS_LogLine | Log line | | | ISYS_MathBBox | BBox (minimum bounding rectangle) | | | ISYS_MathPoint | Discrete points | | | ISYS_MathPolygonWithHoles | Polygon with holes | | | ISYS_MessageBusTask | Message bus task | | | ISYS_MultilingualLanguagesData | Multilingual data | | | ISYS_PcbComparisonResponse | PCB comparison response | | | ISYS_RightClickMenuItem | Right-click menu item | | | ISYS_ShortcutKeyData | Shortcut key data | | | ISYS_ShortcutKeyDataWithCallFn | Shortcut key data with CallFn | | | ISYS_ShortcutKeyDataWithUserDefinedShortcutKey | Shortcut key data with userDefinedShortcutKey | | | ISYS_WindowEventListenerRemovableObject | Window event listener can remove object | | | KeyboardConfig | 键盘导航配置 | | | ListChildren | 列表项:支持多级嵌套分组 | | | ListProps | 列表组件:支持多级嵌套、图标、展开的列表 | | | ModalProps | 模态弹窗:可拖拽、可调整大小的顶层弹窗 | | | NumberEditConfig | | | | RadioGroupProps | 单选组组件:一组互斥的单选选项 | | | RadioItem | 单选组中的单个选项 | | | RichTableProps | RichTable 组件属性 | | | RowMetaConfig | 行元数据配置,独立于业务数据(挂在 row.rowMeta 上) | | | ScrollerProps | 滚动组件:虚拟滚动列表,仅渲染可见行 | | | SelectEditConfig | | | | SelectionConfig | 选择配置 | | | SelectListItem | 下拉选项:支持多级嵌套分组 | | | SelectOption | 下拉选项 | | | SelectProps | 下拉选择器:基于输入框的下拉选择控件 | | | SliderProps | 滑杆组件:基于浏览器原生 range 输入 | | | SlotProps | 插槽组件:为父组件提供具名内容占位 | | | SortingConfig | 排序配置 | | | SortState | 排序状态 | | | StyleProps | 通用样式属性:可被布局容器等组件继承的样式集合 | | | TextareaEditConfig | | | | TextAreaProps | 多行文本输入组件 | | | TextProps | 文本组件:静态文本展示 | | | ValidationRule | 校验规则(声明式,纯数据,可序列化) | | | VirtualScrollConfig | 虚拟滚动配置 | |


类型别名 (Type Aliases)

| 类型名 | 描述 | 备注 | |--------|------|------| | Align | 对齐方式 | | | CellContentType | 剪贴板单元格内容类型(决定粘贴时的解析策略) | | | ColumnDefOrGroup | 列定义(支持普通列和列分组) | | | ColumnEditConfig | 五种编辑器类型配置 | | | ColumnType | 列数据类型,默认 'text'。决定默认排序类型(sortType)和筛选匹配模式(filterMatchMode) | | | DataChangeType | 数据变更类型 | | | FilterMatchMode | 筛选匹配模式 | | | RichTableRow | 行数据:业务数据 + 行元数据(rowMeta) | | | Serializable | | | | SerializablePrimitive | 可序列化纯数据(可跨 BroadcastChannel 结构化克隆)。 编译期拒绝函数 / Date / React 元素等不可序列化值——slotProps 等跨广播字段必须用它。 | | | SortOrder | 排序方向 | | | TPCB_LayersInTheSelectable | Selectable layers | | | TPCB_LayersOfComponent | Layers of the device | | | TPCB_LayersOfCopper | Layers of copper | | | TPCB_LayersOfCustom | Custom layers | | | TPCB_LayersOfDimension | Layers of the dimension | | | TPCB_LayersOfFill | Layers of the fill | | | TPCB_LayersOfImage | Layers of complex polygon figures (SVG images, text) | | | TPCB_LayersOfInner | Inner layers | | | TPCB_LayersOfLine | Layers of the line | | | TPCB_LayersOfObject | Layers of binary embedded objects | | | TPCB_LayersOfPad | Layers of the pad | | | TPCB_LayersOfRegion | Layers of the region | | | TPCB_LayerTypesOfInnerLayer | Layer types allowed to be set for inner layers | | | TPCB_NumberOfCopperLayers | Number of copper layers | | | TPCB_PolygonSourceArray | Single polygon source array | | | TPCB_PrimitiveDimensionCoordinateSet | Dimension coordinate set | | | TPCB_PrimitivePadHole | Pad drilling | | | TPCB_PrimitivePadShape | Pad shape | | | TPCB_PrimitiveSpecialPadShape | Special pad shape | | | TSYS_LanguageKeyValuePairs | 语言数据键值对 | | | TSYS_MathPolygonGroup | Polygon group | | | TSYS_MathPolygonInput | Polygon input type | | | TSYS_PcbComparisonErrorCode | PCB comparison failure error code | | | TSYS_ShortcutKeys | Shortcut key | |

File v1.1.24:references/_quick-reference.md

EasyEDA API 快速参考

此文件提供所有类及其方法/属性的签名一览,便于 AI 快速查找。 详细参数和返回值请查看 docs/classes/<ClassName>.md

全局入口

declare const eda: EDA;

EDA 类的属性即为各模块的入口,如 eda.dmt_Board, eda.pcb_PrimitiveLine 等。


DMT_Board

Document tree / Board management class

class DMT_Board
  • copyboard: function copyBoard(sourceBoardName: string): Promise<string | undefined>;
  • createboard: function createBoard(schematicUuid?: string, pcbUuid?: string): Promise<string | undefined>;
  • deleteboard: function deleteBoard(boardName: string): Promise<boolean>;
  • getallboardsinfo: function getAllBoardsInfo(): Promise<Array<IDMT_BoardItem>>;
  • getboardinfo: function getBoardInfo(boardName: string): Promise<IDMT_BoardItem | undefined>;
  • getcurrentboardinfo: function getCurrentBoardInfo(): Promise<IDMT_BoardItem | undefined>;
  • modifyboardname: function modifyBoardName(originalBoardName: string, boardName: string): Promise<boolean>;

DMT_EditorControl

Document tree / Editor control class

class DMT_EditorControl
  • activatedocument: function activateDocument(tabId: string): Promise<boolean>;
  • activatesplitscreen: function activateSplitScreen(splitScreenId: string): Promise<boolean>;
  • closedocument: function closeDocument(tabId: string): Promise<boolean>;
  • createsplitscreen: function createSplitScreen( splitScreenType: EDMT_EditorSplitScreenDirection, tabId: string, ): Promise<{ sourceSplitScreenId: string; newSplitScreenId: string } | undefined>;
  • generateindicatormarkers: function generateIndicatorMarkers( markers: Array<IDMT_IndicatorMarkerShape>, color?: { r: number; g: number; b: number; alpha: number }, lineWidth?: number, zoom?: boolean, tabId?: string, ): Promise<boolean>;
  • getcurrentrenderedareaimage: function getCurrentRenderedAreaImage(tabId?: string): Promise<Blob | undefined>;
  • getsplitscreenidbytabid: function getSplitScreenIdByTabId(tabId: string): Promise<string | undefined>;
  • getsplitscreentree: function getSplitScreenTree(): Promise<IDMT_EditorSplitScreenItem | undefined>;
  • gettabsbysplitscreenid: function getTabsBySplitScreenId(splitScreenId: string): Promise<Array<IDMT_EditorTabItem>>;
  • mergealldocumentfromsplitscreen: function mergeAllDocumentFromSplitScreen(): Promise<boolean>;
  • movedocumenttosplitscreen: function moveDocumentToSplitScreen(tabId: string, splitScreenId: string): Promise<boolean>;
  • opendocument: function openDocument(documentUuid: string, splitScreenId?: string): Promise<string | undefined>;
  • openlibrarydocument: function openLibraryDocument( libraryUuid: string, libraryType: ELIB_LibraryType.SYMBOL | ELIB_LibraryType.FOOTPRINT, uuid: string, splitScreenId?: string, ): Promise<string | undefined>;
  • removeindicatormarkers: function removeIndicatorMarkers(tabId?: string): Promise<boolean>;
  • tilealldocumenttosplitscreen: function tileAllDocumentToSplitScreen(): Promise<boolean>;
  • zoomto: function zoomTo( x?: number, y?: number, scaleRatio?: number, tabId?: string, ): Promise<{ left: number; right: number; top: number; bottom: number } | false>;
  • zoomtoallprimitives: function zoomToAllPrimitives( tabId?: string, ): Promise<{ left: number; right: number; top: number; bottom: number } | false>;
  • zoomtoregion: function zoomToRegion( left: number, right: number, top: number, bottom: number, tabId?: string, ): Promise<boolean>;
  • zoomtoselectedprimitives: function zoomToSelectedPrimitives( tabId?: string, ): Promise<{ left: number; right: number; top: number; bottom: number } | false>;

DMT_Event

Document tree / event class

class DMT_Event
  • addeditortabeventlistener: function addEditorTabEventListener( id: string, eventType: 'all' | EDMT_EditorTabEventType, callFn: ( eventType: EDMT_EditorTabEventType, props: { documentType: EDMT_EditorDocumentType; title: string; tabId: string }, ) => void | Promise<void>, onlyOnce?: boolean, ): void;
  • iseventlisteneralreadyexist: function isEventListenerAlreadyExist(id: string): boolean;
  • removeeventlistener: function removeEventListener(id: string): boolean;

DMT_Folder

Document tree / Folder class

class DMT_Folder
  • createfolder: function createFolder( folderName: string, teamUuid: string, parentFolderUuid?: string, description?: string, ): Promise<string | undefined>;
  • deletefolder: function deleteFolder(teamUuid: string, folderUuid: string): Promise<boolean>;
  • getallfoldersuuid: function getAllFoldersUuid(teamUuid: string): Promise<Array<string>>;
  • getfolderinfo: function getFolderInfo(teamUuid: string, folderUuid: string): Promise<IDMT_FolderItem | undefined>;
  • modifyfolderdescription: function modifyFolderDescription( teamUuid: string, folderUuid: string, description?: string, ): Promise<boolean>;
  • modifyfoldername: function modifyFolderName( teamUuid: string, folderUuid: string, folderName: string, ): Promise<boolean>;
  • movefoldertofolder: function moveFolderToFolder( teamUuid: string, folderUuid: string, parentFolderUuid?: string, ): Promise<boolean>;

DMT_Panel

Document tree / Panel management class

class DMT_Panel
  • copypanel: function copyPanel(panelUuid: string): Promise<string | undefined>;
  • createpanel: function createPanel(): Promise<string | undefined>;
  • deletepanel: function deletePanel(panelUuid: string): Promise<boolean>;
  • getallpanelsinfo: function getAllPanelsInfo(): Promise<Array<IDMT_PanelItem>>;
  • getcurrentpanelinfo: function getCurrentPanelInfo(): Promise<IDMT_PanelItem | undefined>;
  • getpanelinfo: function getPanelInfo(panelUuid: string): Promise<IDMT_PanelItem | undefined>;
  • modifypanelname: function modifyPanelName(panelUuid: string, panelName: string): Promise<boolean>;

DMT_Pcb

Document tree / PCB management class

class DMT_Pcb
  • copypcb: function copyPcb(pcbUuid: string, boardName?: string): Promise<string | undefined>;
  • createpcb: function createPcb(boardName?: string): Promise<string | undefined>;
  • deletepcb: function deletePcb(pcbUuid: string): Promise<boolean>;
  • getallpcbsinfo: function getAllPcbsInfo(): Promise<Array<IDMT_PcbItem>>;
  • getcurrentpcbinfo: function getCurrentPcbInfo(): Promise<IDMT_PcbItem | undefined>;
  • getpcbinfo: function getPcbInfo(pcbUuid: string): Promise<IDMT_PcbItem | undefined>;
  • modifypcbname: function modifyPcbName(pcbUuid: string, pcbName: string): Promise<boolean>;

DMT_Project

Document tree / Project management class

class DMT_Project
  • createproject: function createProject( projectFriendlyName: string, projectName?: string, teamUuid?: string, folderUuid?: string, description?: string, collaborationMode?: EDMT_ProjectCollaborationMode, ): Promise<string | undefined>;
  • getallprojectsuuid: function getAllProjectsUuid( teamUuid?: string, folderUuid?: string, workspaceUuid?: string, ): Promise<Array<string>>;
  • getcurrentprojectinfo: function getCurrentProjectInfo(): Promise<IDMT_ProjectItem | undefined>;
  • getprojectinfo: function getProjectInfo(projectUuid: string): Promise<IDMT_BriefProjectItem | undefined>;
  • moveprojecttofolder: function moveProjectToFolder(projectUuid: string, folderUuid?: string): Promise<boolean>;
  • openproject: function openProject(projectUuid: string): Promise<boolean>;

DMT_Schematic

Document tree / Schematic management class

class DMT_Schematic
  • copyschematic: function copySchematic(schematicUuid: string, boardName?: string): Promise<string | undefined>;
  • copyschematicpage: function copySchematicPage( schematicPageUuid: string, schematicUuid?: string, ): Promise<string | undefined>;
  • createschematic: function createSchematic(boardName?: string): Promise<string | undefined>;
  • createschematicpage: function createSchematicPage(schematicUuid: string): Promise<string | undefined>;
  • deleteschematic: function deleteSchematic(schematicUuid: string): Promise<boolean>;
  • deleteschematicpage: function deleteSchematicPage(schematicPageUuid: string): Promise<boolean>;
  • getallschematicpagesinfo: function getAllSchematicPagesInfo(): Promise<Array<IDMT_SchematicPageItem>>;
  • getallschematicsinfo: function getAllSchematicsInfo(): Promise<Array<IDMT_SchematicItem>>;
  • getcurrentschematicallschematicpagesinfo: function getCurrentSchematicAllSchematicPagesInfo(): Promise<Array<IDMT_SchematicPageItem>>;
  • getcurrentschematicinfo: function getCurrentSchematicInfo(): Promise<IDMT_SchematicItem | undefined>;
  • getcurrentschematicpageinfo: function getCurrentSchematicPageInfo(): Promise<IDMT_SchematicPageItem | undefined>;
  • getschematicinfo: function getSchematicInfo(schematicUuid: string): Promise<IDMT_SchematicItem | undefined>;
  • getschematicpageinfo: function getSchematicPageInfo( schematicPageUuid: string, ): Promise<IDMT_SchematicPageItem | undefined>;
  • modifyschematicname: function modifySchematicName(schematicUuid: string, schematicName: string): Promise<boolean>;
  • modifyschematicpagename: function modifySchematicPageName( schematicPageUuid: string, schematicPageName: string, ): Promise<boolean>;
  • modifyschematicpagetitleblock: function modifySchematicPageTitleBlock( showTitleBlock?: boolean, titleBlockData?: Record<string, { showTitle?: boolean; showValue?: boolean; value?: any }>, ): Promise<boolean>;
  • reorderschematicpages: function reorderSchematicPages( schematicUuid: string, schematicPageItemsArray: Array<IDMT_SchematicPageItem>, ): Promise<boolean>;

DMT_SelectControl

Document tree / selection control class

class DMT_SelectControl
  • getcurrentdocumentinfo: function getCurrentDocumentInfo(): Promise<IDMT_EditorDocumentItem | undefined>;

DMT_Team

Document tree / Team class

class DMT_Team
  • getallinvolvedteaminfo: function getAllInvolvedTeamInfo(): Promise<Array<IDMT_TeamItem>>;
  • getallteamsinfo: function getAllTeamsInfo(): Promise<Array<IDMT_TeamItem>>;
  • getcurrentteaminfo: function getCurrentTeamInfo(): Promise<IDMT_TeamItem | undefined>;

DMT_Workspace

Document tree / Workspace class

class DMT_Workspace
  • getallworkspacesinfo: function getAllWorkspacesInfo(): Promise<Array<IDMT_WorkspaceItem>>;
  • getcurrentworkspaceinfo: function getCurrentWorkspaceInfo(): Promise<IDMT_WorkspaceItem | undefined>;
  • toggletoworkspace: function toggleToWorkspace(workspaceUuid?: string): Promise<boolean>;

EDA

EasyEDA Pro user API interface

eda: EDA;
  • dmt_board: function dmt_Board: DMT_Board;
  • dmt_editorcontrol: function dmt_EditorControl: DMT_EditorControl;
  • dmt_event: function dmt_Event: DMT_Event;
  • dmt_folder: function dmt_Folder: DMT_Folder;
  • dmt_panel: function dmt_Panel: DMT_Panel;
  • dmt_pcb: function dmt_Pcb: DMT_Pcb;
  • dmt_project: function dmt_Project: DMT_Project;
  • dmt_schematic: function dmt_Schematic: DMT_Schematic;
  • dmt_selectcontrol: function dmt_SelectControl: DMT_SelectControl;
  • dmt_team: function dmt_Team: DMT_Team;
  • dmt_workspace: function dmt_Workspace: DMT_Workspace;
  • lib_3dmodel: function lib_3DModel: LIB_3DModel;
  • lib_cbb: function lib_Cbb: LIB_Cbb;
  • lib_classification: function lib_Classification: LIB_Classification;
  • lib_device: function lib_Device: LIB_Device;
  • lib_footprint: function lib_Footprint: LIB_Footprint;
  • lib_librarieslist: function lib_LibrariesList: LIB_LibrariesList;
  • lib_panellibrary: function lib_PanelLibrary: LIB_PanelLibrary;
  • lib_selectcontrol: function lib_SelectControl: LIB_SelectControl;
  • lib_simulationmodel: function lib_SimulationModel: LIB_SimulationModel;
  • lib_symbol: function lib_Symbol: LIB_Symbol;
  • pcb_document: function pcb_Document: PCB_Document;
  • pcb_drc: function pcb_Drc: PCB_Drc;
  • pcb_event: function pcb_Event: PCB_Event;
  • pcb_imagetool: function pcb_ImageTool: PCB_ImageTool;
  • pcb_layer: function pcb_Layer: PCB_Layer;
  • pcb_manufacturedata: function pcb_ManufactureData: PCB_ManufactureData;
  • pcb_mathpolygon: function pcb_MathPolygon: PCB_MathPolygon;
  • pcb_net: function pcb_Net: PCB_Net;
  • pcb_primitive: function pcb_Primitive: PCB_Primitive;
  • pcb_primitivearc: function pcb_PrimitiveArc: PCB_PrimitiveArc;
  • pcb_primitiveattribute: function pcb_PrimitiveAttribute: PCB_PrimitiveAttribute;
  • pcb_primitivecomponent: function pcb_PrimitiveComponent: PCB_PrimitiveComponent;
  • pcb_primitivedimension: function pcb_PrimitiveDimension: PCB_PrimitiveDimension;
  • pcb_primitivefill: function pcb_PrimitiveFill: PCB_PrimitiveFill;
  • pcb_primitiveimage: function pcb_PrimitiveImage: PCB_PrimitiveImage;
  • pcb_primitiveline: function pcb_PrimitiveLine: PCB_PrimitiveLine;
  • pcb_primitiveobject: function pcb_PrimitiveObject: PCB_PrimitiveObject;
  • pcb_primitivepad: function pcb_PrimitivePad: PCB_PrimitivePad;
  • pcb_primitivepolyline: function pcb_PrimitivePolyline: PCB_PrimitivePolyline;
  • pcb_primitivepour: function pcb_PrimitivePour: PCB_PrimitivePour;
  • pcb_primitivepoured: function pcb_PrimitivePoured: PCB_PrimitivePoured;
  • pcb_primitiveregion: function pcb_PrimitiveRegion: PCB_PrimitiveRegion;
  • pcb_primitivestring: function pcb_PrimitiveString: PCB_PrimitiveString;
  • pcb_primitivevia: function pcb_PrimitiveVia: PCB_PrimitiveVia;
  • pcb_raytracerengine: function pcb_RayTracerEngine: PCB_RayTracerEngine;
  • pcb_selectcontrol: function pcb_SelectControl: PCB_SelectControl;
  • pnl_document: function pnl_Document: PNL_Document;
  • sch_document: function sch_Document: SCH_Document;
  • sch_drc: function sch_Drc: SCH_Drc;
  • sch_event: function sch_Event: SCH_Event;
  • sch_manufacturedata: function sch_ManufactureData: SCH_ManufactureData;
  • sch_net: function sch_Net: SCH_Net;
  • sch_netlist: function sch_Netlist: SCH_Netlist;
  • sch_primitive: function sch_Primitive: SCH_Primitive;
  • sch_primitivearc: function sch_PrimitiveArc: SCH_PrimitiveArc;
  • sch_primitiveattribute: function sch_PrimitiveAttribute: SCH_PrimitiveAttribute;
  • sch_primitivebus: function sch_PrimitiveBus: SCH_PrimitiveBus;
  • sch_primitivecircle: function sch_PrimitiveCircle: SCH_PrimitiveCircle;
  • sch_primitivecomponent: function sch_PrimitiveComponent: SCH_PrimitiveComponent;
  • sch_primitiveobject: function sch_PrimitiveObject: SCH_PrimitiveObject;
  • sch_primitivepin: function sch_PrimitivePin: SCH_PrimitivePin;
  • sch_primitivepolygon: function sch_PrimitivePolygon: SCH_PrimitivePolygon;
  • sch_primitiverectangle: function sch_PrimitiveRectangle: SCH_PrimitiveRectangle;
  • sch_primitivetext: function sch_PrimitiveText: SCH_PrimitiveText;
  • sch_primitivewire: function sch_PrimitiveWire: SCH_PrimitiveWire;
  • sch_selectcontrol: function sch_SelectControl: SCH_SelectControl;
  • sch_simulationengine: function sch_SimulationEngine: SCH_SimulationEngine;
  • sch_utils: function sch_Utils: SCH_Utils;
  • sys_clienturl: function sys_ClientUrl: SYS_ClientUrl;
  • sys_dialog: function sys_Dialog: SYS_Dialog;
  • sys_environment: function sys_Environment: SYS_Environment;
  • sys_externalapi: function sys_ExternalApi: SYS_ExternalApi;
  • sys_filemanager: function sys_FileManager: SYS_FileManager;
  • sys_filesystem: function sys_FileSystem: SYS_FileSystem;
  • sys_fontmanager: function sys_FontManager: SYS_FontManager;
  • sys_formatconversion: function sys_FormatConversion: SYS_FormatConversion;
  • sys_headermenu: function sys_HeaderMenu: SYS_HeaderMenu;
  • sys_help: function sys_Help: SYS_Help;
  • sys_i18n: function sys_I18n: SYS_I18n;
  • sys_iframe: function sys_IFrame: SYS_IFrame;
  • sys_loadingandprogressbar: function sys_LoadingAndProgressBar: SYS_LoadingAndProgressBar;
  • sys_log: function sys_Log: SYS_Log;
  • sys_math: function sys_Math: SYS_Math;
  • sys_message: function sys_Message: SYS_Message;
  • sys_messagebox: function sys_MessageBox: SYS_MessageBox;
  • sys_messagebus: function sys_MessageBus: SYS_MessageBus;
  • sys_panelcontrol: function sys_PanelControl: SYS_PanelControl;
  • sys_rightclickmenu: function sys_RightClickMenu: SYS_RightClickMenu;
  • sys_setting: function sys_Setting: SYS_Setting;
  • sys_shortcutkey: function sys_ShortcutKey: SYS_ShortcutKey;
  • sys_storage: function sys_Storage: SYS_Storage;
  • sys_timer: function sys_Timer: SYS_Timer;
  • sys_toastmessage: function sys_ToastMessage: SYS_ToastMessage;
  • sys_tool: function sys_Tool: SYS_Tool;
  • sys_unit: function sys_Unit: SYS_Unit;
  • sys_websocket: function sys_WebSocket: SYS_WebSocket;
  • sys_window: function sys_Window: SYS_Window;

IPCB_ComplexPolygon

Complex polygon

class IPCB_ComplexPolygon
  • addsource: function addSource( complexPolygon: | TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>, ): IPCB_ComplexPolygon;
  • getcenter: function getCenter(): Promise<{ x: number; y: number }>;
  • getsource: function getSource(): TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>;
  • getsourcestrictcomplex: function getSourceStrictComplex(): Array<TPCB_PolygonSourceArray>;
  • topolygon: function toPolygon(): Array<IPCB_Polygon>;

IPCB_Polygon

Single polygon

class IPCB_Polygon
  • discretize: function discretize(options?: IPCB_DiscretizeOptions): Promise<Array<IPCB_DiscretizedPoint>>;
  • getcenter: function getCenter(): Promise<{ x: number; y: number }>;
  • getsource: function getSource(): TPCB_PolygonSourceArray;

IPCB_PrimitiveArc

Arc line primitive

class IPCB_PrimitiveArc implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveArc>;
  • getadjacentprimitives: function getAdjacentPrimitives(): Promise< Array<IPCB_PrimitiveLine | IPCB_PrimitiveVia | IPCB_PrimitiveArc> >;
  • getentiretrack: function getEntireTrack(includeVias: false): Promise<Array<IPCB_PrimitiveLine | IPCB_PrimitiveArc>>;
  • getentiretrack_1: function getEntireTrack( includeVias: true, ): Promise<Array<IPCB_PrimitiveLine | IPCB_PrimitiveArc | IPCB_PrimitiveVia>>;
  • getstate_arcangle: function getState_ArcAngle(): number;
  • getstate_endx: function getState_EndX(): number;
  • getstate_endy: function getState_EndY(): number;
  • getstate_interactivemode: function getState_InteractiveMode(): EPCB_PrimitiveArcInteractiveMode;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfLine;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_net: function getState_Net(): string;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_startx: function getState_StartX(): number;
  • getstate_starty: function getState_StartY(): number;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveArc>;
  • setstate_arcangle: function setState_ArcAngle(arcAngle: number): IPCB_PrimitiveArc;
  • setstate_endx: function setState_EndX(endX: number): IPCB_PrimitiveArc;
  • setstate_endy: function setState_EndY(endY: number): IPCB_PrimitiveArc;
  • setstate_interactivemode: function setState_InteractiveMode( interactiveMode: EPCB_PrimitiveArcInteractiveMode, ): IPCB_PrimitiveArc;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfLine): IPCB_PrimitiveArc;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitiveArc;
  • setstate_net: function setState_Net(net: string): IPCB_PrimitiveArc;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveArc;
  • setstate_startx: function setState_StartX(startX: number): IPCB_PrimitiveArc;
  • setstate_starty: function setState_StartY(startY: number): IPCB_PrimitiveArc;
  • toasync: function toAsync(): IPCB_PrimitiveArc;
  • tosync: function toSync(): IPCB_PrimitiveArc;

IPCB_PrimitiveAttribute

Property primitive

class IPCB_PrimitiveAttribute implements IPCB_Primitive
  • constructor: function constructor( layer: TPCB_LayersOfImage, x: number | null, y: number | null, key: string, value: string, keyVisible: boolean, valueVisible: boolean, fontFamily: string, fontSize: number, lineWidth: number, alignMode: EPCB_PrimitiveStringAlignMode, rotation: number, reverse: boolean, expansion: number, mirror: boolean, primitiveLock: boolean, primitiveId: string, parentPrimitiveId: string, );
  • done: function done(): Promise<IPCB_PrimitiveAttribute>;
  • getstate_alignmode: function getState_AlignMode(): EPCB_PrimitiveStringAlignMode;
  • getstate_expansion: function getState_Expansion(): number;
  • getstate_fontfamily: function getState_FontFamily(): string;
  • getstate_fontsize: function getState_FontSize(): number;
  • getstate_key: function getState_Key(): string;
  • getstate_keyvisible: function getState_KeyVisible(): boolean;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfImage;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_mirror: function getState_Mirror(): boolean;
  • getstate_parentprimitiveid: function getState_ParentPrimitiveId(): string;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_reverse: function getState_Reverse(): boolean;
  • getstate_rotation: function getState_Rotation(): number;
  • getstate_value: function getState_Value(): string;
  • getstate_valuevisible: function getState_ValueVisible(): boolean;
  • getstate_x: function getState_X(): number | null;
  • getstate_y: function getState_Y(): number | null;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveAttribute>;
  • setstate_alignmode: function setState_AlignMode(alignMode: EPCB_PrimitiveStringAlignMode): IPCB_PrimitiveAttribute;
  • setstate_expansion: function setState_Expansion(expansion: number): IPCB_PrimitiveAttribute;
  • setstate_fontfamily: function setState_FontFamily(fontFamily: string): IPCB_PrimitiveAttribute;
  • setstate_fontsize: function setState_FontSize(fontSize: number): IPCB_PrimitiveAttribute;
  • setstate_key: function setState_Key(key: string): IPCB_PrimitiveAttribute;
  • setstate_keyvisible: function setState_KeyVisible(keyVisible: boolean): IPCB_PrimitiveAttribute;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfImage): IPCB_PrimitiveAttribute;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitiveAttribute;
  • setstate_mirror: function setState_Mirror(mirror: boolean): IPCB_PrimitiveAttribute;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveAttribute;
  • setstate_reverse: function setState_Reverse(reverse: boolean): IPCB_PrimitiveAttribute;
  • setstate_rotation: function setState_Rotation(rotation: number): IPCB_PrimitiveAttribute;
  • setstate_value: function setState_Value(value: string): IPCB_PrimitiveAttribute;
  • setstate_valuevisible: function setState_ValueVisible(valueVisible: boolean): IPCB_PrimitiveAttribute;
  • setstate_x: function setState_X(x: number): IPCB_PrimitiveAttribute;
  • setstate_y: function setState_Y(y: number): IPCB_PrimitiveAttribute;
  • toasync: function toAsync(): IPCB_PrimitiveAttribute;
  • tosync: function toSync(): IPCB_PrimitiveAttribute;

IPCB_PrimitiveComponent

Device primitive

class IPCB_PrimitiveComponent implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveComponent>;
  • getallpins: function getAllPins(): Promise<Array<IPCB_PrimitiveComponentPad>>;
  • getstate_addintobom: function getState_AddIntoBom(): boolean;
  • getstate_component: function getState_Component(): { libraryUuid: string; uuid: string; name?: string } | undefined;
  • getstate_designator: function getState_Designator(): string | undefined;
  • getstate_footprint: function getState_Footprint(): { libraryUuid: string; uuid: string; name?: string } | undefined;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfComponent;
  • getstate_manufacturer: function getState_Manufacturer(): string | undefined;
  • getstate_manufacturerid: function getState_ManufacturerId(): string | undefined;
  • getstate_model3d: function getState_Model3D(): { libraryUuid: string; uuid: string; name?: string } | undefined;
  • getstate_name: function getState_Name(): string | undefined;
  • getstate_otherproperty: function getState_OtherProperty(): Record<string, string | number | boolean> | undefined;
  • getstate_pads: function getState_Pads(): Array<{ primitiveId: string; net: string; padNumber: string }> | undefined;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_rotation: function getState_Rotation(): number;
  • getstate_supplier: function getState_Supplier(): string | undefined;
  • getstate_supplierid: function getState_SupplierId(): string | undefined;
  • getstate_uniqueid: function getState_UniqueId(): string | undefined;
  • getstate_x: function getState_X(): number;
  • getstate_y: function getState_Y(): number;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveComponent>;
  • setattribute: function setAttribute( key: string, value?: string | number | boolean, keyVisible?: boolean, valueVisible?: boolean, ): Promise<IPCB_PrimitiveAttribute>;
  • setstate_addintobom: function setState_AddIntoBom(addIntoBom: boolean): IPCB_PrimitiveComponent;
  • setstate_designator: function setState_Designator(designator: string | undefined): IPCB_PrimitiveComponent;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfComponent): IPCB_PrimitiveComponent;
  • setstate_manufacturer: function setState_Manufacturer(manufacturer: string | undefined): IPCB_PrimitiveComponent;
  • setstate_manufacturerid: function setState_ManufacturerId(manufacturerId: string | undefined): IPCB_PrimitiveComponent;
  • setstate_name: function setState_Name(name: string | undefined): IPCB_PrimitiveComponent;
  • setstate_otherproperty: function setState_OtherProperty( otherProperty: Record<string, string | number | boolean>, ): IPCB_PrimitiveComponent;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveComponent;
  • setstate_rotation: function setState_Rotation(rotation: number): IPCB_PrimitiveComponent;
  • setstate_supplier: function setState_Supplier(supplier: string | undefined): IPCB_PrimitiveComponent;
  • setstate_supplierid: function setState_SupplierId(supplierId: string | undefined): IPCB_PrimitiveComponent;
  • setstate_uniqueid: function setState_UniqueId(uniqueId: string | undefined): IPCB_PrimitiveComponent;
  • setstate_x: function setState_X(x: number): IPCB_PrimitiveComponent;
  • setstate_y: function setState_Y(y: number): IPCB_PrimitiveComponent;
  • toasync: function toAsync(): IPCB_PrimitiveComponent;
  • tosync: function toSync(): IPCB_PrimitiveComponent;

IPCB_PrimitiveComponentPad

Device pad primitive

class IPCB_PrimitiveComponentPad extends IPCB_PrimitivePad
  • done: function done(): Promise<IPCB_PrimitiveComponentPad>;
  • getconnectedprimitives: function getConnectedPrimitives( onlyCentreConnection: true, ): Promise<Array<IPCB_PrimitiveLine | IPCB_PrimitiveArc | IPCB_PrimitiveVia>>;
  • getconnectedprimitives_1: function getConnectedPrimitives( onlyCentreConnection: false, ): Promise< Array< | IPCB_PrimitiveLine | IPCB_PrimitiveArc | IPCB_PrimitiveVia | IPCB_PrimitivePolyline | IPCB_PrimitiveFill > >;
  • getstate_parentcomponentprimitiveid: function getState_ParentComponentPrimitiveId(): string;
  • primitivetype: function readonly primitiveType: EPCB_PrimitiveType.COMPONENT_PAD;
  • setstate_parentcomponentprimitiveid: function setState_ParentComponentPrimitiveId(): IPCB_PrimitiveComponentPad;

IPCB_PrimitiveDimension

Dimension primitive

class IPCB_PrimitiveDimension implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveDimension>;
  • getstate_coordinateset: function getState_CoordinateSet(): TPCB_PrimitiveDimensionCoordinateSet;
  • getstate_dimensiontype: function getState_DimensionType(): EPCB_PrimitiveDimensionType;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfDimension;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_precision: function getState_Precision(): number;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_textfollow: function getState_TextFollow(): 0 | 1;
  • getstate_unit: function getState_Unit(): ESYS_Unit.MILLIMETER | ESYS_Unit.CENTIMETER | ESYS_Unit.INCH | ESYS_Unit.MIL;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveDimension>;
  • setstate_coordinateset: function setState_CoordinateSet( coordinateSet: TPCB_PrimitiveDimensionCoordinateSet, ): IPCB_PrimitiveDimension;
  • setstate_dimensiontype: function setState_DimensionType( dimensionType: EPCB_PrimitiveDimensionType, ): IPCB_PrimitiveDimension;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfDimension): IPCB_PrimitiveDimension;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitiveDimension;
  • setstate_precision: function setState_Precision(precision: number): IPCB_PrimitiveDimension;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveDimension;
  • setstate_unit: function setState_Unit( unit: ESYS_Unit.MILLIMETER | ESYS_Unit.CENTIMETER | ESYS_Unit.INCH | ESYS_Unit.MIL, ): IPCB_PrimitiveDimension;
  • toasync: function toAsync(): IPCB_PrimitiveDimension;
  • tosync: function toSync(): IPCB_PrimitiveDimension;

IPCB_PrimitiveFill

Fill primitive

class IPCB_PrimitiveFill implements IPCB_Primitive
  • converttopolyline: function convertToPolyline(): Promise<IPCB_PrimitivePolyline>;
  • converttopour: function convertToPour(): Promise<IPCB_PrimitivePour>;
  • converttoregion: function convertToRegion(): Promise<IPCB_PrimitiveRegion>;
  • done: function done(): Promise<IPCB_PrimitiveFill>;
  • getstate_complexpolygon: function getState_ComplexPolygon(): IPCB_Polygon;
  • getstate_fillmode: function getState_FillMode(): EPCB_PrimitiveFillMode | undefined;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfFill;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_net: function getState_Net(): string | undefined;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveFill>;
  • setstate_complexpolygon: function setState_ComplexPolygon(complexPolygon: IPCB_Polygon): IPCB_PrimitiveFill;
  • setstate_fillmode: function setState_FillMode(fillMode: EPCB_PrimitiveFillMode): IPCB_PrimitiveFill;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfFill): IPCB_PrimitiveFill;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitiveFill;
  • setstate_net: function setState_Net(net: string): IPCB_PrimitiveFill;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveFill;
  • toasync: function toAsync(): IPCB_PrimitiveFill;
  • tosync: function toSync(): IPCB_PrimitiveFill;

IPCB_PrimitiveImage

Image primitive

class IPCB_PrimitiveImage implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveImage>;
  • getstate_complexpolygon: function getState_ComplexPolygon(): TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>;
  • getstate_height: function getState_Height(): number;
  • getstate_horizonmirror: function getState_HorizonMirror(): boolean;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfImage;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_rotation: function getState_Rotation(): number;
  • getstate_width: function getState_Width(): number;
  • getstate_x: function getState_X(): number;
  • getstate_y: function getState_Y(): number;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveImage>;
  • setstate_height: function setState_Height(height: number): IPCB_PrimitiveImage;
  • setstate_horizonmirror: function setState_HorizonMirror(horizonMirror: boolean): IPCB_PrimitiveImage;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfImage): IPCB_PrimitiveImage;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveImage;
  • setstate_rotation: function setState_Rotation(rotation: number): IPCB_PrimitiveImage;
  • setstate_width: function setState_Width(width: number): IPCB_PrimitiveImage;
  • setstate_x: function setState_X(x: number): IPCB_PrimitiveImage;
  • setstate_y: function setState_Y(y: number): IPCB_PrimitiveImage;
  • toasync: function toAsync(): IPCB_PrimitiveImage;
  • tosync: function toSync(): IPCB_PrimitiveImage;

IPCB_PrimitiveLine

Line primitive

class IPCB_PrimitiveLine implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveLine>;
  • getadjacentprimitives: function getAdjacentPrimitives(): Promise< Array<IPCB_PrimitiveLine | IPCB_PrimitiveVia | IPCB_PrimitiveArc> >;
  • getentiretrack: function getEntireTrack(includeVias: false): Promise<Array<IPCB_PrimitiveLine | IPCB_PrimitiveArc>>;
  • getentiretrack_1: function getEntireTrack( includeVias: true, ): Promise<Array<IPCB_PrimitiveLine | IPCB_PrimitiveArc | IPCB_PrimitiveVia>>;
  • getstate_endx: function getState_EndX(): number;
  • getstate_endy: function getState_EndY(): number;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfLine;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_net: function getState_Net(): string;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_startx: function getState_StartX(): number;
  • getstate_starty: function getState_StartY(): number;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveLine>;
  • setstate_endx: function setState_EndX(endX: number): IPCB_PrimitiveLine;
  • setstate_endy: function setState_EndY(endY: number): IPCB_PrimitiveLine;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfLine): IPCB_PrimitiveLine;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitiveLine;
  • setstate_net: function setState_Net(net: string): IPCB_PrimitiveLine;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveLine;
  • setstate_startx: function setState_StartX(startX: number): IPCB_PrimitiveLine;
  • setstate_starty: function setState_StartY(startY: number): IPCB_PrimitiveLine;
  • toasync: function toAsync(): IPCB_PrimitiveLine;
  • tosync: function toSync(): IPCB_PrimitiveLine;

IPCB_PrimitiveObject

Binary embedded object primitive

class IPCB_PrimitiveObject implements IPCB_Primitive
  • done: function done(): Promise<IPCB_PrimitiveObject>;
  • getstate_binarydata: function getState_BinaryData(): string;
  • getstate_filename: function getState_FileName(): string;
  • getstate_height: function getState_Height(): number;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfObject | undefined;
  • getstate_mirror: function getState_Mirror(): boolean;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_rotation: function getState_Rotation(): number;
  • getstate_topleftx: function getState_TopLeftX(): number | undefined;
  • getstate_toplefty: function getState_TopLeftY(): number | undefined;
  • getstate_width: function getState_Width(): number;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitiveObject>;
  • setstate_binarydata: function setState_BinaryData(binaryData: string): IPCB_PrimitiveObject;
  • setstate_filename: function setState_FileName(fileName: string): IPCB_PrimitiveObject;
  • setstate_height: function setState_Height(height: number): IPCB_PrimitiveObject;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfObject): IPCB_PrimitiveObject;
  • setstate_mirror: function setState_Mirror(mirror: boolean): IPCB_PrimitiveObject;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitiveObject;
  • setstate_rotation: function setState_Rotation(rotation: number): IPCB_PrimitiveObject;
  • setstate_topleftx: function setState_TopLeftX(topLeftX: number): IPCB_PrimitiveObject;
  • setstate_toplefty: function setState_TopLeftY(topLeftY: number): IPCB_PrimitiveObject;
  • setstate_width: function setState_Width(width: number): IPCB_PrimitiveObject;
  • toasync: function toAsync(): IPCB_PrimitiveObject;
  • tosync: function toSync(): IPCB_PrimitiveObject;

IPCB_PrimitivePad

Pad primitive

class IPCB_PrimitivePad implements IPCB_Primitive
  • async: function async: boolean;
  • create: function create(): Promise<IPCB_PrimitivePad>;
  • done: function done(): Promise<IPCB_PrimitivePad>;
  • getstate_heatwelding: function getState_HeatWelding(): IPCB_PrimitivePadHeatWelding | null;
  • getstate_hole: function getState_Hole(): TPCB_PrimitivePadHole | null;
  • getstate_holeoffsetx: function getState_HoleOffsetX(): number;
  • getstate_holeoffsety: function getState_HoleOffsetY(): number;
  • getstate_holerotation: function getState_HoleRotation(): number;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfPad;
  • getstate_metallization: function getState_Metallization(): boolean;
  • getstate_net: function getState_Net(): string | undefined;
  • getstate_pad: function getState_Pad(): TPCB_PrimitivePadShape | undefined;
  • getstate_padnumber: function getState_PadNumber(): string;
  • getstate_padtype: function getState_PadType(): EPCB_PrimitivePadType;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • getstate_rotation: function getState_Rotation(): number;
  • getstate_soldermaskandpastemaskexpansion: function getState_SolderMaskAndPasteMaskExpansion(): IPCB_PrimitiveSolderMaskAndPasteMaskExpansion | null;
  • getstate_specialpad: function getState_SpecialPad(): TPCB_PrimitiveSpecialPadShape | undefined;
  • getstate_x: function getState_X(): number;
  • getstate_y: function getState_Y(): number;
  • heatwelding: function heatWelding: IPCB_PrimitivePadHeatWelding | null;
  • hole: function hole: TPCB_PrimitivePadHole | null;
  • holeoffsetx: function holeOffsetX: number;
  • holeoffsety: function holeOffsetY: number;
  • holerotation: function holeRotation: number;
  • isasync: function isAsync(): boolean;
  • layer: function layer: TPCB_LayersOfPad;
  • metallization: function metallization: boolean;
  • net: function net?: string;
  • pad: function pad?: TPCB_PrimitivePadShape;
  • padnumber: function padNumber: string;
  • padtype: function padType: EPCB_PrimitivePadType;
  • primitiveid: function primitiveId?: string;
  • primitivelock: function primitiveLock: boolean;
  • primitivetype: function readonly primitiveType: EPCB_PrimitiveType;
  • reset: function reset(): Promise<IPCB_PrimitivePad>;
  • rotation: function rotation: number;
  • setstate_heatwelding: function setState_HeatWelding(heatWelding: IPCB_PrimitivePadHeatWelding | null): IPCB_PrimitivePad;
  • setstate_hole: function setState_Hole(hole: TPCB_PrimitivePadHole): IPCB_PrimitivePad;
  • setstate_holeoffsetx: function setState_HoleOffsetX(holeOffsetX: number): IPCB_PrimitivePad;
  • setstate_holeoffsety: function setState_HoleOffsetY(holeOffsetY: number): IPCB_PrimitivePad;
  • setstate_holerotation: function setState_HoleRotation(holeRotation: number): IPCB_PrimitivePad;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfPad): IPCB_PrimitivePad;
  • setstate_metallization: function setState_Metallization(metallization: boolean): IPCB_PrimitivePad;
  • setstate_net: function setState_Net(net?: string): IPCB_PrimitivePad;
  • setstate_pad: function setState_Pad(pad: TPCB_PrimitivePadShape): IPCB_PrimitivePad;
  • setstate_padnumber: function setState_PadNumber(padNumber: string): IPCB_PrimitivePad;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitivePad;
  • setstate_rotation: function setState_Rotation(rotation: number): IPCB_PrimitivePad;
  • setstate_soldermaskandpastemaskexpansion: function setState_SolderMaskAndPasteMaskExpansion( solderMaskAndPasteMaskExpansion: IPCB_PrimitiveSolderMaskAndPasteMaskExpansion | null, ): IPCB_PrimitivePad;
  • setstate_specialpad: function setState_SpecialPad(specialPad: TPCB_PrimitiveSpecialPadShape): IPCB_PrimitivePad;
  • setstate_x: function setState_X(x: number): IPCB_PrimitivePad;
  • setstate_y: function setState_Y(y: number): IPCB_PrimitivePad;
  • soldermaskandpastemaskexpansion: function solderMaskAndPasteMaskExpansion: IPCB_PrimitiveSolderMaskAndPasteMaskExpansion | null;
  • specialpad: function specialPad?: TPCB_PrimitiveSpecialPadShape;
  • toasync: function toAsync(): IPCB_PrimitivePad;
  • tosync: function toSync(): IPCB_PrimitivePad;
  • x: function x: number;
  • y: function y: number;

IPCB_PrimitivePolyline

Polyline primitive

class IPCB_PrimitivePolyline implements IPCB_Primitive
  • converttofill: function convertToFill(): Promise<IPCB_PrimitiveFill>;
  • converttopour: function convertToPour(): Promise<IPCB_PrimitivePour>;
  • converttoregion: function convertToRegion(): Promise<IPCB_PrimitiveRegion>;
  • done: function done(): Promise<IPCB_PrimitivePolyline>;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfLine;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_net: function getState_Net(): string;
  • getstate_polygon: function getState_Polygon(): IPCB_Polygon;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • isasync: function isAsync(): boolean;
  • reset: function reset(): Promise<IPCB_PrimitivePolyline>;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfLine): IPCB_PrimitivePolyline;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitivePolyline;
  • setstate_net: function setState_Net(net: string): IPCB_PrimitivePolyline;
  • setstate_polygon: function setState_Polygon(polygon: IPCB_Polygon): IPCB_PrimitivePolyline;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitivePolyline;
  • toasync: function toAsync(): IPCB_PrimitivePolyline;
  • tosync: function toSync(): IPCB_PrimitivePolyline;

IPCB_PrimitivePour

Copper border primitive

class IPCB_PrimitivePour implements IPCB_Primitive
  • converttofill: function convertToFill(): Promise<IPCB_PrimitiveFill>;
  • converttopolyline: function convertToPolyline(): Promise<IPCB_PrimitivePolyline>;
  • converttoregion: function convertToRegion(): Promise<IPCB_PrimitiveRegion>;
  • done: function done(): Promise<IPCB_PrimitivePour>;
  • getcopperregion: function getCopperRegion(): Promise<IPCB_PrimitivePoured | undefined>;
  • getstate_complexpolygon: function getState_ComplexPolygon(): IPCB_Polygon;
  • getstate_layer: function getState_Layer(): TPCB_LayersOfCopper;
  • getstate_linewidth: function getState_LineWidth(): number;
  • getstate_net: function getState_Net(): string;
  • getstate_pourfillmethod: function getState_PourFillMethod(): any;
  • getstate_pourname: function getState_PourName(): string;
  • getstate_pourpriority: function getState_PourPriority(): number;
  • getstate_preservesilos: function getState_PreserveSilos(): boolean;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivelock: function getState_PrimitiveLock(): boolean;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • isasync: function isAsync(): boolean;
  • rebuildcopperregion: function rebuildCopperRegion(): Promise<IPCB_PrimitivePoured | undefined>;
  • reset: function reset(): Promise<IPCB_PrimitivePour>;
  • setstate_complexpolygon: function setState_ComplexPolygon(complexPolygon: IPCB_Polygon): IPCB_PrimitivePour;
  • setstate_layer: function setState_Layer(layer: TPCB_LayersOfCopper): IPCB_PrimitivePour;
  • setstate_linewidth: function setState_LineWidth(lineWidth: number): IPCB_PrimitivePour;
  • setstate_net: function setState_Net(net: string): IPCB_PrimitivePour;
  • setstate_pourfillmethod: function setState_PourFillMethod(pourFillMethod: EPCB_PrimitivePourFillMethod): IPCB_PrimitivePour;
  • setstate_pourname: function setState_PourName(pourName: string): IPCB_PrimitivePour;
  • setstate_pourpriority: function setState_PourPriority(pourPriority: number): IPCB_PrimitivePour;
  • setstate_preservesilos: function setState_PreserveSilos(preserveSilos: boolean): IPCB_PrimitivePour;
  • setstate_primitivelock: function setState_PrimitiveLock(primitiveLock: boolean): IPCB_PrimitivePour;
  • toasync: function toAsync(): IPCB_PrimitivePour;
  • tosync: function toSync(): IPCB_PrimitivePour;

IPCB_PrimitivePoured

Copper fill primitive

class IPCB_PrimitivePoured implements IPCB_Primitive
  • addsoldermaskfill: function addSolderMaskFill( pourFillId: IPCB_PrimitivePouredPourFill['id'], ): Promise<IPCB_PrimitiveFill | undefined>;
  • converttofill: function convertToFill( pourFillId: IPCB_PrimitivePouredPourFill['id'], ): Promise<IPCB_PrimitiveFill | undefined>;
  • deletepourfills: function deletePourFills( pourFillIds: IPCB_PrimitivePouredPourFill['id'] | Array<IPCB_PrimitivePouredPourFill['id']>, ): Promise<boolean>;
  • getstate_pourfills: function getState_PourFills(): Array<IPCB_PrimitivePouredPourFill>;
  • getstate_pourprimitiveid: function getState_PourPrimitiveId(): string;
  • getstate_primitiveid: function getState_PrimitiveId(): string;
  • getstate_primitivetype: function getState_PrimitiveType(): EPCB_PrimitiveType;
  • reset: function reset(): Promise<IPCB_PrimitivePoured>;

IPCB_PrimitiveRegion

Region primitive

class IPCB_PrimitiveRegion imple

File v1.1.24:references/classes/DMT_Board.md

# DMT\_Board class

Document tree / Board management class

## Signature

```typescript
class DMT_Board

Remarks

Operations related to board management in the currently open project

Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

copyBoard(sourceBoardName)

</td><td> </td><td>

Copy Board

</td></tr> <tr><td>

createBoard(schematicUuid, pcbUuid)

</td><td> </td><td>

(BETA) Create Board

</td></tr> <tr><td>

deleteBoard(boardName)

</td><td> </td><td>

Delete Board

</td></tr> <tr><td>

getAllBoardsInfo()

</td><td> </td><td>

Get all in the project board detailed properties of

</td></tr> <tr><td>

getBoardInfo(boardName)

</td><td> </td><td>

Get detailed properties of Board

</td></tr> <tr><td>

getCurrentBoardInfo()

</td><td> </td><td>

Get detailed properties of Current board

</td></tr> <tr><td>

modifyBoardName(originalBoardName, boardName)

</td><td> </td><td>

Modify Board name

</td></tr> </tbody></table>

方法详情

copyboard

DMT_Board.copyBoard() method

Copy Board

Signature

function copyBoard(sourceBoardName: string): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

sourceBoardName

</td><td>

string

</td><td>

Source board name

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

New board name, if it is undefined the copy fails

Example

// 1. 取第一块板子的名称作为复制源
const boards = await eda.dmt_Board.getAllBoardsInfo();
const sourceName = boards[0].name;

// 2. 复制板子,返回新板子名称
const newBoardName = await eda.dmt_Board.copyBoard(sourceName);
console.log('source:', sourceName);
console.log('copy:', newBoardName);

// 3. 删除复制的板子,保持工程整洁
const deleted = await eda.dmt_Board.deleteBoard(newBoardName);
console.log('deleted:', deleted);

createboard

DMT_Board.createBoard() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Create Board

Signature

function createBoard(schematicUuid?: string, pcbUuid?: string): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

schematicUuid

</td><td>

string

</td><td>

(Optional) Associated schematic UUID

</td></tr> <tr><td>

pcbUuid

</td><td>

string

</td><td>

(Optional) Associated PCB UUID

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

Board name, if it is undefined creation fails

Example

// 1. 无参调用,由系统自动创建一对原理图/PCB 文档并关联
const boardName = await eda.dmt_Board.createBoard();
console.log('create:', boardName);

// 2. 删除新板子(其关联文档是本例新建的,删除不影响其他板子),保持工程整洁
const deleted = await eda.dmt_Board.deleteBoard(boardName);
console.log('deleted:', deleted);

deleteboard

DMT_Board.deleteBoard() method

Delete Board

Signature

function deleteBoard(boardName: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

boardName

</td><td>

string

</td><td>

Board name

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

If the specified board does not exist, the API will return false<!-- -->, indicating that the operation failed

Example

// 1. 复制一块板子作为删除目标,避免误删工程里有用的板子
const boards = await eda.dmt_Board.getAllBoardsInfo();
const tempName = await eda.dmt_Board.copyBoard(boards[0].name);
console.log('temp board:', tempName);

// 2. 删除该板子
const deleted = await eda.dmt_Board.deleteBoard(tempName);
console.log('deleted:', deleted);

getallboardsinfo

DMT_Board.getAllBoardsInfo() method

Get all in the project board detailed properties of

Signature

function getAllBoardsInfo(): Promise<Array<IDMT_BoardItem>>;

Returns

Promise<Array<IDMT_BoardItem<!-- -->>>

Array of detailed properties of all Board

Example

// 1. 获取工程内所有板子
const boards = await eda.dmt_Board.getAllBoardsInfo();

// 2. 输出每块板子的名称与下属文档
boards.forEach((board, i) => {
	console.log(`board[${i}]:`, board.name, 'schematic:', board.schematic?.uuid, 'pcb:', board.pcb?.uuid);
});

console.log('total:', boards.length);

getboardinfo

DMT_Board.getBoardInfo() method

Get detailed properties of Board

Signature

function getBoardInfo(boardName: string): Promise<IDMT_BoardItem | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

boardName

</td><td>

string

</td><td>

Board name

</td></tr> </tbody></table>

Returns

Promise<IDMT_BoardItem | undefined>

Board detailed properties of; if it is undefined<!-- -->, the retrieval failed

Example

// 1. 先盘点所有板子,取第一块的名称作为查询目标
const boards = await eda.dmt_Board.getAllBoardsInfo();
const targetName = boards[0].name;

// 2. 按名称查询该板子的详细属性
const board = await eda.dmt_Board.getBoardInfo(targetName);

// 3. 输出板子属性
console.log('name:', board.name);
console.log('parentProjectUuid:', board.parentProjectUuid);
console.log('schematic:', board.schematic?.uuid);
console.log('pcb:', board.pcb?.uuid);

getcurrentboardinfo

DMT_Board.getCurrentBoardInfo() method

Get detailed properties of Current board

Signature

function getCurrentBoardInfo(): Promise<IDMT_BoardItem | undefined>;

Returns

Promise<IDMT_BoardItem | undefined>

Board detailed properties of; if it is undefined<!-- -->, the retrieval failed

Remarks

It will get the detailed properties of the board associated with the currently open schematic or PCB that has the last input focus

Example

// 1. 切换到第一块板子下属的 PCB 文档(工程里可能存在不属于任何板子的 PCB,不能直接取 getAllPcbsInfo()[0])
const boards = await eda.dmt_Board.getAllBoardsInfo();
await eda.dmt_EditorControl.openDocument(boards[0].pcb.uuid);
await new Promise(r => setTimeout(r, 500));

// 2. 获取当前焦点对应的板子
const board = await eda.dmt_Board.getCurrentBoardInfo();

// 3. 输出板子属性
console.log('name:', board.name);
console.log('schematic:', board.schematic?.uuid);
console.log('pcb:', board.pcb?.uuid);

modifyboardname

DMT_Board.modifyBoardName() method

Modify Board name

Signature

function modifyBoardName(originalBoardName: string, boardName: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

originalBoardName

</td><td>

string

</td><td>

Original board name

</td></tr> <tr><td>

boardName

</td><td>

string

</td><td>

New board name

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether Modify Successful

Example

// 1. 取第一块板子,记录原名称
const boards = await eda.dmt_Board.getAllBoardsInfo();
const originalName = boards[0].name;
const newName = `${originalName}_tmp`;

// 2. 改名并输出结果
const modified = await eda.dmt_Board.modifyBoardName(originalName, newName);
console.log('original:', originalName);
console.log('new:', newName);
console.log('modified:', modified);

// 3. 等待改名生效后改回原名称(改名是异步提交,紧跟的第二次改名会返回 false)
await new Promise(r => setTimeout(r, 1000));
const restored = await eda.dmt_Board.modifyBoardName(newName, originalName);
console.log('restored:', restored);

File v1.1.24:references/classes/DMT_EditorControl.md

DMT_EditorControl class

Document tree / Editor control class

Signature

class DMT_EditorControl

Remarks

Here the editor control is based on the sheets under the currently open engineering design. Any other documentUuid will be considered a non-existent document page

Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

activateDocument(tabId)

</td><td> </td><td>

Activate a document

</td></tr> <tr><td>

activateSplitScreen(splitScreenId)

</td><td> </td><td>

Activate a split screen

</td></tr> <tr><td>

closeDocument(tabId)

</td><td> </td><td>

Close document

</td></tr> <tr><td>

createSplitScreen(splitScreenType, tabId)

</td><td> </td><td>

Create Split screen

</td></tr> <tr><td>

generateIndicatorMarkers(markers, color, lineWidth, zoom, tabId)

</td><td> </td><td>

(BETA) Generate indicator markers

</td></tr> <tr><td>

getCurrentRenderedAreaImage(tabId)

</td><td> </td><td>

(BETA) Get the canvas rendering region image

</td></tr> <tr><td>

getSplitScreenIdByTabId(tabId)

</td><td> </td><td>

Use tab ID get split screen ID

</td></tr> <tr><td>

getSplitScreenTree()

</td><td> </td><td>

Get the editor split screen property tree

</td></tr> <tr><td>

getTabsBySplitScreenId(splitScreenId)

</td><td> </td><td>

Get all tabs under the specified split screen ID

</td></tr> <tr><td>

mergeAllDocumentFromSplitScreen()

</td><td> </td><td>

Merge all split screens

</td></tr> <tr><td>

moveDocumentToSplitScreen(tabId, splitScreenId)

</td><td> </td><td>

Move a document to the specified split screen

</td></tr> <tr><td>

openDocument(documentUuid, splitScreenId)

</td><td> </td><td>

Open document

</td></tr> <tr><td>

openLibraryDocument(libraryUuid, libraryType, uuid, splitScreenId)

</td><td> </td><td>

(BETA) Open library symbol, footprint document

</td></tr> <tr><td>

removeIndicatorMarkers(tabId)

</td><td> </td><td>

(BETA) Remove indicator markers

</td></tr> <tr><td>

tileAllDocumentToSplitScreen()

</td><td> </td><td>

Tile all documents

</td></tr> <tr><td>

zoomTo(x, y, scaleRatio, tabId)

</td><td> </td><td>

(BETA) Zoom to coordinates

</td></tr> <tr><td>

zoomToAllPrimitives(tabId)

</td><td> </td><td>

(BETA) Zoom to all primitives (fit all)

</td></tr> <tr><td>

zoomToRegion(left, right, top, bottom, tabId)

</td><td> </td><td>

(BETA) Zoom to region

</td></tr> <tr><td>

zoomToSelectedPrimitives(tabId)

</td><td> </td><td>

(BETA) Zoom to the selected primitives (fit selection)

</td></tr> </tbody></table>

方法详情

activatedocument

DMT_EditorControl.activateDocument() method

Activate a document

Signature

function activateDocument(tabId: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

Tab ID

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

Switch to the tab of the specified document and place the input focus in it

Example

// 1. 先后打开原理图页与 PCB,此时焦点在最后打开的 PCB 上
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
const tabSch = await eda.dmt_EditorControl.openDocument(pages[0].uuid);
await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);

// 2. 激活原理图标签页(真实切换回原理图画布)
const activated = await eda.dmt_EditorControl.activateDocument(tabSch);
console.log('activated:', activated);

activatesplitscreen

DMT_EditorControl.activateSplitScreen() method

Activate a split screen

Signature

function activateSplitScreen(splitScreenId: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

splitScreenId

</td><td>

string

</td><td>

Split screen ID

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

Give input focus

Example

// 1. 归一化布局后打开两个文档,并拆出一个新分屏
await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const tabPcb = await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);
const split = await eda.dmt_EditorControl.createSplitScreen('vertical', tabPcb);

// 2. 激活新分屏(输入焦点移到该分屏)
const activated = await eda.dmt_EditorControl.activateSplitScreen(split.newSplitScreenId);
console.log('activated:', activated);

// 3. 合并所有分屏,恢复单屏布局
const merged = await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
console.log('merged:', merged);

closedocument

DMT_EditorControl.closeDocument() method

Close document

Signature

function closeDocument(tabId: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

Tab ID. Here IDMT_SchematicPageItem.uuid<!-- -->, IDMT_PcbItem.uuid<!-- -->, and IDMT_PanelItem.uuid are supported as input

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

If the document has not been saved, executing this operation will directly lose all unsaved data. After completing modification operations, first execute SCH_Document.save()<!-- -->, PCB_Document.save()<!-- -->, and PNL_Document.save() to save the data

Example

// 1. 创建临时原理图并给它加一页(新建的原理图没有页面,需显式创建)
const schematicUuid = await eda.dmt_Schematic.createSchematic('嘉立创示例_关闭文档');
const pageUuid = await eda.dmt_Schematic.createSchematicPage(schematicUuid);

// 2. 打开该页面作为关闭目标
const tabId = await eda.dmt_EditorControl.openDocument(pageUuid);
console.log('opened tab:', tabId);

// 3. 关闭该标签页(空白文档,无未保存内容)
const closed = await eda.dmt_EditorControl.closeDocument(tabId);
console.log('closed:', closed);

// 4. 删除临时原理图,保持工程整洁
const deleted = await eda.dmt_Schematic.deleteSchematic(schematicUuid);
console.log('deleted:', deleted);

createsplitscreen

DMT_EditorControl.createSplitScreen() method

Create Split screen

Signature

function createSplitScreen(
	splitScreenType: EDMT_EditorSplitScreenDirection,
	tabId: string,
): Promise<{ sourceSplitScreenId: string; newSplitScreenId: string } | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

splitScreenType

</td><td>

EDMT_EditorSplitScreenDirection

</td><td>

Split screen type, horizontal horizontal, vertical vertical

</td></tr> <tr><td>

tabId

</td><td>

string

</td><td>

Tab ID. This tab will be moved into the new split screen

</td></tr> </tbody></table>

Returns

Promise<{ sourceSplitScreenId: string; newSplitScreenId: string } | undefined>

Split screen ID. sourceSplitScreenId represents the source split screen, and newSplitScreenId represents the new split screen

Remarks

Please make sure the split screen corresponding to tabId has more than two tabs; otherwise the split screen will not be executed and undefined will be returned

Example

// 1. 归一化布局:先合并既有分屏,保证两个标签页落在同一分屏
await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();

// 2. 打开两个文档,让当前分屏持有两个标签页
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const tabPcb = await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);

// 3. 把 PCB 标签页拆到一个新的水平分屏
const split = await eda.dmt_EditorControl.createSplitScreen('horizontal', tabPcb);
console.log('source split:', split?.sourceSplitScreenId);
console.log('new split:', split?.newSplitScreenId);

// 4. 回读新分屏的标签页,确认 PCB 已在其中
const tabs = await eda.dmt_EditorControl.getTabsBySplitScreenId(split.newSplitScreenId);
console.log('tabs in new split:', tabs.map(t => t.title));

// 5. 合并所有分屏,恢复单屏布局
const merged = await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
console.log('merged:', merged);

generateindicatormarkers

DMT_EditorControl.generateIndicatorMarkers() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Generate indicator markers

Signature

function generateIndicatorMarkers(
	markers: Array<IDMT_IndicatorMarkerShape>,
	color?: { r: number; g: number; b: number; alpha: number },
	lineWidth?: number,
	zoom?: boolean,
	tabId?: string,
): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

markers

</td><td>

Array<IDMT_IndicatorMarkerShape<!-- -->>

</td><td>

Array of indicator marker shape objects

</td></tr> <tr><td>

color

</td><td>

{ r: number; g: number; b: number; alpha: number }

</td><td>

(Optional) Indicator marker color

</td></tr> <tr><td>

lineWidth

</td><td>

number

</td><td>

(Optional) Line width

</td></tr> <tr><td>

zoom

</td><td>

boolean

</td><td>

(Optional) Whether to locate and zoom

</td></tr> <tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the indicator markers were generated successfully, false indicates that the canvas does not support this operation or tabId does not exist

Remarks

In the indicator marker shape data, the coordinate unit span of the schematic and symbol canvases is 0.01inch, and that of the PCB and footprint canvases is mil

Example

// 1. 打开一个原理图页,确定标记作用的画布
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 生成一组标记:点 + 圆 + 矩形(原理图画布坐标单位 0.01inch)
const generated = await eda.dmt_EditorControl.generateIndicatorMarkers(
	[
		{ type: 'point', x: 100, y: 100 },
		{ type: 'circle', x: 250, y: 150, r: 50 },
		{ type: 'rectangle', left: 350, right: 550, top: 100, bottom: 250 },
	],
	{ r: 255, g: 60, b: 60, alpha: 1 }, // 标记颜色
	2, // 线宽
	false, // 不自动缩放定位到标记
	tabId,
);
console.log('generated:', generated);

// 3. 用完即清,保持画布干净
const removed = await eda.dmt_EditorControl.removeIndicatorMarkers(tabId);
console.log('removed:', removed);

getcurrentrenderedareaimage

DMT_EditorControl.getCurrentRenderedAreaImage() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Get the canvas rendering region image

Signature

function getCurrentRenderedAreaImage(tabId?: string): Promise<Blob | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be obtained

</td></tr> </tbody></table>

Returns

Promise<Blob | undefined>

  • Blob-format image data of the canvas rendering region

Example

// 1. 打开一个原理图页,确定截图的画布
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 获取该画布当前渲染区域的图像
const image = await eda.dmt_EditorControl.getCurrentRenderedAreaImage(tabId);

// 3. 读取 Blob 的基本信息(字节数与 MIME 类型)
console.log('isBlob:', image instanceof Blob);
console.log('size:', image.size);
console.log('mimeType:', image.type);

getsplitscreenidbytabid

DMT_EditorControl.getSplitScreenIdByTabId() method

Use tab ID get split screen ID

Signature

function getSplitScreenIdByTabId(tabId: string): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

Tab ID

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

Split screen ID

Example

// 1. 打开一个原理图页,拿到它的标签页 ID
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 查询该标签页所在的分屏
const splitScreenId = await eda.dmt_EditorControl.getSplitScreenIdByTabId(tabId);
console.log('tabId:', tabId);
console.log('splitScreenId:', splitScreenId);

getsplitscreentree

DMT_EditorControl.getSplitScreenTree() method

Get the editor split screen property tree

Signature

function getSplitScreenTree(): Promise<IDMT_EditorSplitScreenItem | undefined>;

Returns

Promise<IDMT_EditorSplitScreenItem | undefined>

The editor split screen property tree. If it is undefined<!-- -->, the data retrieval failed

Example

// 1. 打开一个原理图页,保证分屏树里有标签页可读
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 读取分屏树
const tree = await eda.dmt_EditorControl.getSplitScreenTree();

// 3. 递归遍历,收集所有分屏 ID 与标签页标题
const splitIds = [];
const tabTitles = [];
(function walk(node) {
	splitIds.push(node.id);
	if (node.tabs)
		tabTitles.push(...node.tabs.map(t => t.title));
	(node.children || []).forEach(walk);
})(tree);
console.log('split count:', splitIds.length);
console.log('tab titles:', tabTitles);

gettabsbysplitscreenid

DMT_EditorControl.getTabsBySplitScreenId() method

Get all tabs under the specified split screen ID

Signature

function getTabsBySplitScreenId(splitScreenId: string): Promise<Array<IDMT_EditorTabItem>>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

splitScreenId

</td><td>

string

</td><td>

Split screen ID

</td></tr> </tbody></table>

Returns

Promise<Array<IDMT_EditorTabItem<!-- -->>>

Tab list

Remarks

If there are no direct tabs under the specified split screen (that is, it still has children under it), an empty array will be returned

Example

// 1. 打开一个原理图页并读取分屏树,定位一个直接持有标签页的分屏
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const tree = await eda.dmt_EditorControl.getSplitScreenTree();
let leaf = null;
(function find(node) {
	if (node.tabs?.length) { leaf = node; return; }
	(node.children || []).forEach(find);
})(tree);

// 2. 查询该分屏下的所有标签页
const tabs = await eda.dmt_EditorControl.getTabsBySplitScreenId(leaf.id);
console.log('splitScreenId:', leaf.id);
console.log('tab count:', tabs.length);
console.log('titles:', tabs.map(t => t.title));

mergealldocumentfromsplitscreen

DMT_EditorControl.mergeAllDocumentFromSplitScreen() method

Merge all split screens

Signature

function mergeAllDocumentFromSplitScreen(): Promise<boolean>;

Returns

Promise<boolean>

Whether the operation is successful

Remarks

Only available when child split screens exist. It will cancel all child split screens and merge all document tabs into the initial split screen

Example

// 1. 制造"存在子分屏"的前提:归一化布局后打开两个文档并拆出一个分屏
await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const tabPcb = await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);
await eda.dmt_EditorControl.createSplitScreen('vertical', tabPcb);

// 2. 合并所有分屏,标签页全部回到初始分屏
const merged = await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
console.log('merged:', merged);

// 3. 回读分屏树,确认已无子分屏
const tree = await eda.dmt_EditorControl.getSplitScreenTree();
console.log('child splits left:', tree.children?.length ?? 0);

movedocumenttosplitscreen

DMT_EditorControl.moveDocumentToSplitScreen() method

Move a document to the specified split screen

Signature

function moveDocumentToSplitScreen(tabId: string, splitScreenId: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

Tab ID

</td></tr> <tr><td>

splitScreenId

</td><td>

string

</td><td>

Split screen ID

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

After moving the document, the editor split screen property tree may change

Example

// 1. 归一化布局后打开两个文档,把 PCB 拆到新分屏
await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const tabPcb = await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);
const split = await eda.dmt_EditorControl.createSplitScreen('vertical', tabPcb);

// 2. 把 PCB 标签页移回源分屏
const moved = await eda.dmt_EditorControl.moveDocumentToSplitScreen(tabPcb, split.sourceSplitScreenId);
console.log('moved:', moved);

// 3. 回读源分屏标签页,确认两个标签页又同处一个分屏
const tabs = await eda.dmt_EditorControl.getTabsBySplitScreenId(split.sourceSplitScreenId);
console.log('source split tabs:', tabs.map(t => t.title));

// 4. 清理:合并残余分屏,恢复单屏布局
const mergedBack = await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
console.log('mergedBack:', mergedBack);

opendocument

DMT_EditorControl.openDocument() method

Open document

Signature

function openDocument(documentUuid: string, splitScreenId?: string): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

documentUuid

</td><td>

string

</td><td>

Document UUID. Here IDMT_SchematicItem.uuid<!-- -->, IDMT_SchematicPageItem.uuid<!-- -->, IDMT_PcbItem.uuid<!-- -->, and IDMT_PanelItem.uuid are supported as input

</td></tr> <tr><td>

splitScreenId

</td><td>

string

</td><td>

(Optional) Split screen ID, which is the IDMT_EditorSplitScreenItem.id obtained by the DMT_EditorControl.getSplitScreenTree() method

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

Tab ID, if it is undefined<!-- -->, then open document failed

Example

// 1. 取工程里第一个原理图页作为打开目标
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
console.log('target:', pages[0].name);

// 2. 打开该页面,返回标签页 ID
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);
console.log('tabId:', tabId);

openlibrarydocument

DMT_EditorControl.openLibraryDocument() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Open library symbol, footprint document

Signature

function openLibraryDocument(
	libraryUuid: string,
	libraryType: ELIB_LibraryType.SYMBOL | ELIB_LibraryType.FOOTPRINT,
	uuid: string,
	splitScreenId?: string,
): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

libraryUuid

</td><td>

string

</td><td>

Library UUID, you can use LIB_LibrariesList APIs in

</td></tr> <tr><td>

libraryType

</td><td>

ELIB_LibraryType.SYMBOL | ELIB_LibraryType.FOOTPRINT

</td><td>

Library type, support symbol and footprint

</td></tr> <tr><td>

uuid

</td><td>

string

</td><td>

Symbol, footprint UUID

</td></tr> <tr><td>

splitScreenId

</td><td>

string

</td><td>

(Optional) Split screen ID, which is the IDMT_EditorSplitScreenItem.id obtained by the DMT_EditorControl.getSplitScreenTree() method

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

Tab ID, if it is undefined<!-- -->, then open document failed

Example

// 1. 搜索库符号,拿到其所在库 UUID 与符号 UUID
const results = await eda.lib_Symbol.search('0603');
console.log('symbol:', results[0].name);

// 2. 打开该符号的编辑画布,返回标签页 ID('2' = ELIB_LibraryType.SYMBOL)
const tabId = await eda.dmt_EditorControl.openLibraryDocument(results[0].libraryUuid, '2', results[0].uuid);
console.log('tabId:', tabId);

// 3. 看完关闭标签页
const closed = await eda.dmt_EditorControl.closeDocument(tabId);
console.log('closed:', closed);

removeindicatormarkers

DMT_EditorControl.removeIndicatorMarkers() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Remove indicator markers

Signature

function removeIndicatorMarkers(tabId?: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the indicator markers were removed successfully, false indicates that the canvas does not support this operation or tabId does not exist

Remarks

This API will remove all generated indicator markers

Example

// 1. 打开一个原理图页,并先生成一个指示标记作为清理对象
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const generated = await eda.dmt_EditorControl.generateIndicatorMarkers(
	[{ type: 'circle', x: 150, y: 150, r: 60 }],
	{ r: 0, g: 128, b: 255, alpha: 1 },
	2,
	false,
	tabId,
);
console.log('generated:', generated);

// 2. 移除该画布上全部指示标记
const removed = await eda.dmt_EditorControl.removeIndicatorMarkers(tabId);
console.log('removed:', removed);

tilealldocumenttosplitscreen

DMT_EditorControl.tileAllDocumentToSplitScreen() method

Tile all documents

Signature

function tileAllDocumentToSplitScreen(): Promise<boolean>;

Returns

Promise<boolean>

Whether the operation is successful

Remarks

Only available when no child split screens exist. It will automatically create split screens for all opened document tabs

Example

// 1. 归一化布局:先合并既有子分屏,满足"无子分屏"前提
await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();

// 2. 打开两个文档,给平铺提供素材
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const pcbs = await eda.dmt_Pcb.getAllPcbsInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);
await eda.dmt_EditorControl.openDocument(pcbs[0].uuid);

// 3. 平铺:每个标签页各占一个分屏
const tiled = await eda.dmt_EditorControl.tileAllDocumentToSplitScreen();
console.log('tiled:', tiled);

// 4. 合并所有分屏,恢复单屏布局
const merged = await eda.dmt_EditorControl.mergeAllDocumentFromSplitScreen();
console.log('merged:', merged);

zoomto

DMT_EditorControl.zoomTo() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Zoom to coordinates

Signature

function zoomTo(
	x?: number,
	y?: number,
	scaleRatio?: number,
	tabId?: string,
): Promise<{ left: number; right: number; top: number; bottom: number } | false>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

x

</td><td>

number

</td><td>

(Optional) Center X coordinate. If not passed in, the current X coordinate will not be changed

</td></tr> <tr><td>

y

</td><td>

number

</td><td>

(Optional) Center Y coordinate. If not passed in, the current Y coordinate will not be changed

</td></tr> <tr><td>

scaleRatio

</td><td>

number

</td><td>

(Optional) Zoom ratio. If not passed in, the current zoom ratio will not be changed. The unit span is 1/100<!-- -->. If 200 is passed in, it means a zoom ratio of 200%

</td></tr> <tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<{ left: number; right: number; top: number; bottom: number } | false>

Region data after zooming. false indicates that the canvas does not support the zoom operation or the tabId does not exist

Remarks

In the schematic and symbol canvases, the coordinate unit span is 0.01inch; in the PCB and footprint canvases, it is mil

Example

// 1. 打开一个原理图页,确定缩放的画布
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 视口中心移到 (100, 100),缩放比 200%(单位跨度 1/100)
const bounds = await eda.dmt_EditorControl.zoomTo(100, 100, 200, tabId);
console.log('bounds:', bounds);

zoomtoallprimitives

DMT_EditorControl.zoomToAllPrimitives() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Zoom to all primitives (fit all)

Signature

function zoomToAllPrimitives(
	tabId?: string,
): Promise<{ left: number; right: number; top: number; bottom: number } | false>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<{ left: number; right: number; top: number; bottom: number } | false>

Region data after zooming. false indicates that the canvas does not support the zoom operation or the tabId does not exist

Remarks

In the returned data, the coordinate unit span of the schematic and symbol canvases is 0.01inch, and that of the PCB and footprint canvases is mil

Example

// 1. 打开一个原理图页,确定缩放的画布
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 适应全部图元,返回缩放后的可视区域边界
const bounds = await eda.dmt_EditorControl.zoomToAllPrimitives(tabId);
console.log('bounds:', bounds);

zoomtoregion

DMT_EditorControl.zoomToRegion() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Zoom to region

Signature

function zoomToRegion(
	left: number,
	right: number,
	top: number,
	bottom: number,
	tabId?: string,
): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

left

</td><td>

number

</td><td>

First X coordinate of the rectangle

</td></tr> <tr><td>

right

</td><td>

number

</td><td>

Second X coordinate of the rectangle

</td></tr> <tr><td>

top

</td><td>

number

</td><td>

First Y coordinate of the rectangle

</td></tr> <tr><td>

bottom

</td><td>

number

</td><td>

Second Y coordinate of the rectangle

</td></tr> <tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Remarks

In the schematic and symbol canvases, the coordinate unit span is 0.01inch; in the PCB and footprint canvases, it is mil

Example

// 1. 打开一个原理图页,确定缩放的画布
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 缩放到 (0,0)-(400,300) 的矩形区域
const zoomed = await eda.dmt_EditorControl.zoomToRegion(0, 400, 0, 300, tabId);
console.log('zoomed:', zoomed);

zoomtoselectedprimitives

DMT_EditorControl.zoomToSelectedPrimitives() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Zoom to the selected primitives (fit selection)

Signature

function zoomToSelectedPrimitives(
	tabId?: string,
): Promise<{ left: number; right: number; top: number; bottom: number } | false>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

tabId

</td><td>

string

</td><td>

(Optional) Tab ID. If not passed in, the canvas with the last input focus will be used

</td></tr> </tbody></table>

Returns

Promise<{ left: number; right: number; top: number; bottom: number } | false>

Region data after zooming. false indicates that the canvas does not support the zoom operation or the tabId does not exist

Remarks

In the returned data, the coordinate unit span of the schematic and symbol canvases is 0.01inch, and that of the PCB and footprint canvases is mil

Example

// 1. 打开原理图页,创建一个文本图元作为选中目标
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
const tabId = await eda.dmt_EditorControl.openDocument(pages[0].uuid);
const text = await eda.sch_PrimitiveText.create(100, 80, '嘉立创示例_缩放目标');

// 2. 以图元 ID 建立选中状态
const selected = await eda.sch_SelectControl.doSelectPrimitives([text.getState_PrimitiveId()]);
console.log('selected:', selected);

// 3. 缩放到选中的图元,返回可视区域边界
const bounds = await eda.dmt_EditorControl.zoomToSelectedPrimitives(tabId);
console.log('bounds:', bounds);

// 4. 清理:取消选中并删除测试图元
await eda.sch_SelectControl.clearSelected();
await eda.sch_PrimitiveText.delete([text.getState_PrimitiveId()]);
console.log('cleaned');

File v1.1.24:references/classes/DMT_Event.md

DMT_Event class

Document tree / event class

Signature

class DMT_Event

Remarks

Register an event callback

Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

addEditorTabEventListener(id, eventType, callFn, onlyOnce)

</td><td> </td><td>

(BETA) Add an editor tab event listener

</td></tr> <tr><td>

isEventListenerAlreadyExist(id)

</td><td> </td><td>

Query whether the event listener exists

</td></tr> <tr><td>

removeEventListener(id)

</td><td> </td><td>

Remove Event listener

</td></tr> </tbody></table>

方法详情

addeditortabeventlistener

DMT_Event.addEditorTabEventListener() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Add an editor tab event listener

Signature

function addEditorTabEventListener(
	id: string,
	eventType: 'all' | EDMT_EditorTabEventType,
	callFn: (
		eventType: EDMT_EditorTabEventType,
		props: { documentType: EDMT_EditorDocumentType; title: string; tabId: string },
	) => void | Promise<void>,
	onlyOnce?: boolean,
): void;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

id

</td><td>

string

</td><td>

Event ID, used to prevent duplicate event registration

</td></tr> <tr><td>

eventType

</td><td>

'all' | EDMT_EditorTabEventType

</td><td>

Event type

</td></tr> <tr><td>

callFn

</td><td>

(eventType: EDMT_EditorTabEventType<!-- -->, props: { documentType: EDMT_EditorDocumentType<!-- -->; title: string; tabId: string }) => void | Promise<void>

</td><td>

The callback function triggered when the event fires

</td></tr> <tr><td>

onlyOnce

</td><td>

boolean

</td><td>

(Optional) Whether to listen only once

</td></tr> </tbody></table>

Returns

void

Remarks

Note: This API is only valid for extensions. Calling it in a standalone script environment will always throw Error

When the tab event type is close or open<!-- -->, the switch event will also be triggered

Example

const listenerId = '嘉立创示例_tab_add';

// 1. 打开一个原理图页,保证编辑器里存在可切换的标签页
const pages = await eda.dmt_Schematic.getAllSchematicPagesInfo();
await eda.dmt_EditorControl.openDocument(pages[0].uuid);

// 2. 注册 toggle 事件监听(回调里拿到事件类型与标签页属性)
let fired = null;
eda.dmt_Event.addEditorTabEventListener(
	listenerId,
	'toggle',
	(eventType, props) => {
		fired = { eventType, title: props?.title, tabId: props?.tabId };
	}
);

// 3. 回读确认注册成功(同 id 再注册也会被防重机制忽略)
const registered = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('registered:', registered);

// 4. 切换一次标签页触发 toggle 事件,观察回调被调用
if (pages[1]) {
	await eda.dmt_EditorControl.openDocument(pages[1].uuid);
	await eda.dmt_EditorControl.openDocument(pages[0].uuid);
}
else {
	await eda.dmt_EditorControl.openDocument(pages[0].uuid);
}
await new Promise(r => setTimeout(r, 500));
console.log('fired:', fired ? JSON.stringify(fired) : 'null');

// 5. 清理监听,避免会话内残留
const removed = eda.dmt_Event.removeEventListener(listenerId);
console.log('removed:', removed);

iseventlisteneralreadyexist

DMT_Event.isEventListenerAlreadyExist() method

Query whether the event listener exists

Signature

function isEventListenerAlreadyExist(id: string): boolean;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

id

</td><td>

string

</td><td>

Event ID

</td></tr> </tbody></table>

Returns

boolean

Whether the event listener exists

Example

const listenerId = '嘉立创示例_tab_exist';

// 1. 注册前查询:应为 false
const before = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('before:', before);

// 2. 注册一个监听使 id 生效
eda.dmt_Event.addEditorTabEventListener(
	listenerId,
	'toggle',
	() => {}
);

// 3. 注册后查询:应为 true
const after = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('after:', after);

// 4. 移除后查询:应回到 false
eda.dmt_Event.removeEventListener(listenerId);
const afterRemove = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('afterRemove:', afterRemove);

removeeventlistener

DMT_Event.removeEventListener() method

Remove Event listener

Signature

function removeEventListener(id: string): boolean;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

id

</td><td>

string

</td><td>

Event ID

</td></tr> </tbody></table>

Returns

boolean

Whether Remove Specify event listener

Example

const listenerId = '嘉立创示例_tab_remove';

// 1. 先注册一个监听作为移除目标
eda.dmt_Event.addEditorTabEventListener(
	listenerId,
	'toggle',
	() => {}
);
const registered = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('registered:', registered);

// 2. 移除该监听
const removed = eda.dmt_Event.removeEventListener(listenerId);
console.log('removed:', removed);

// 3. 回读确认已不存在
const existAfter = eda.dmt_Event.isEventListenerAlreadyExist(listenerId);
console.log('existAfter:', existAfter);

// 4. 重复移除同一 id:返回 false(本就未注册)
const removedAgain = eda.dmt_Event.removeEventListener(listenerId);
console.log('removedAgain:', removedAgain);

File v1.1.24:references/classes/DMT_Folder.md

DMT_Folder class

Document tree / Folder class

Signature

class DMT_Folder

Methods

<table><thead><tr><th>

Method

</th><th>

Modifiers

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

createFolder(folderName, teamUuid, parentFolderUuid, description)

</td><td> </td><td>

(BETA) Create Folder

</td></tr> <tr><td>

deleteFolder(teamUuid, folderUuid)

</td><td> </td><td>

Delete Folder

</td></tr> <tr><td>

getAllFoldersUuid(teamUuid)

</td><td> </td><td>

Get the UUIDs of all folders

</td></tr> <tr><td>

getFolderInfo(teamUuid, folderUuid)

</td><td> </td><td>

Get Folder detailed properties

</td></tr> <tr><td>

modifyFolderDescription(teamUuid, folderUuid, description)

</td><td> </td><td>

(BETA) Modify Folder description

</td></tr> <tr><td>

modifyFolderName(teamUuid, folderUuid, folderName)

</td><td> </td><td>

Modify Folder name

</td></tr> <tr><td>

moveFolderToFolder(teamUuid, folderUuid, parentFolderUuid)

</td><td> </td><td>

Move folder

</td></tr> </tbody></table>

方法详情

createfolder

DMT_Folder.createFolder() method

This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Create Folder

Signature

function createFolder(
	folderName: string,
	teamUuid: string,
	parentFolderUuid?: string,
	description?: string,
): Promise<string | undefined>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

folderName

</td><td>

string

</td><td>

Folder name

</td></tr> <tr><td>

teamUuid

</td><td>

string

</td><td>

Team UUID

</td></tr> <tr><td>

parentFolderUuid

</td><td>

string

</td><td>

(Optional) Parent folder UUID. If not specified, it is the root folder

</td></tr> <tr><td>

description

</td><td>

string

</td><td>

(Optional) Folder description

</td></tr> </tbody></table>

Returns

Promise<string | undefined>

Folder UUID, if it is undefined creation fails

Example

// 1. 取当前工程所属团队,作为文件夹的归属
const projectInfo = await eda.dmt_Project.getCurrentProjectInfo();
const teamUuid = projectInfo.teamUuid;

// 2. 在团队根目录下创建测试文件夹
const folderUuid = await eda.dmt_Folder.createFolder('嘉立创示例_文件夹', teamUuid);

// 3. 等待工作区同步后回读,确认文件夹已落地
await new Promise(r => setTimeout(r, 1500));
const folderInfo = await eda.dmt_Folder.getFolderInfo(teamUuid, folderUuid);

console.log('folderUuid:', folderUuid);
console.log('name:', folderInfo?.name);
console.log('parentFolderUuid:', folderInfo?.parentFolderUuid === teamUuid ? '(团队根目录)' : folderInfo?.parentFolderUuid);

deletefolder

DMT_Folder.deleteFolder() method

Delete Folder

Signature

function deleteFolder(teamUuid: string, folderUuid: string): Promise<boolean>;

Parameters

<table><thead><tr><th>

Parameter

</th><th>

Type

</th><th>

Description

</th></tr></thead> <tbody><tr><td>

teamUuid

</td><td>

string

</td><td>

Team UUID

</td></tr> <tr><td>

folderUuid

</td><td>

string

</td><td>

Folder UUID

</td></tr> </tbody></table>

Returns

Promise<boolean>

Whether the operation is successful

Example

// 1. 取当前工程所属团队
const projectInfo = await eda.dmt_Project.getCurrentProjectInfo();
const teamUuid = projectInfo.teamUuid;

// 2. 创建专用测试文件夹(避免动到用户现有目录)
const folderUuid = await eda.dmt_Folder.createFolder('嘉立创示例_待删除', teamUuid);
await ne

Archive v1.1.23: 403 files, 667893 bytes

Files: format/index.md (7050b), format/pcb/3d.md (4645b), format/pcb/attr.md (2064b), format/pcb/common.md (9692b), format/pcb/component.md (3692b), format/pcb/dimension.md (2047b), format/pcb/index.md (1219b), format/pcb/obj.md (1436b), format/pcb/pad_via.md (4795b), format/pcb/panel.md (1598b), format/pcb/partition.md (1030b), format/pcb/primitive.md (4993b), format/pcb/rule.md (2334b), format/pcb/shape.md (12240b), format/pcb/text.md (1963b), format/project/blob.md (1349b), format/project/common.md (935b), format/project/group.md (1644b), format/project/index.md (808b), format/project/instance.md (1329b), format/project/meta.md (3551b), format/project/variant.md (611b), format/schematic/attr.md (2105b), format/schematic/common.md (1445b), format/schematic/component.md (6838b), format/schematic/index.md (940b), format/schematic/obj.md (1249b), format/schematic/pin.md (2308b), format/schematic/shape.md (6973b), format/schematic/structure.md (1553b), format/schematic/table.md (2449b), format/schematic/text.md (1295b), format/schematic/wire.md (4953b), guide/ancillary-projects.md (4311b), guide/ancillary-projects/pro-api-sdk.md (56b), guide/ancillary-projects/pro-api-types.md (92b), guide/error-handling.md (1238b), guide/extension-json.md (4928b), guide/extensions-marketplace.md (4227b), guide/how-to-start.md (15377b), guide/i18n.md (3049b), guide/index.md (951b), guide/inline-frame.md (1390b), guide/invoke-apis.md (4110b), guide/stability.md (3198b), package-lock.json (1967b), package.json (262b), README.md (4807b), README.zh-Hans.md (4454b), references/_index.md (34050b), references/_quick-reference.md (186195b), references/classes/DMT_Board.md (8459b), references/classes/DMT_EditorControl.md (33440b), references/classes/DMT_Event.md (6139b), references/classes/DMT_Folder.md (12495b), references/classes/DMT_Panel.md (9807b), references/classes/DMT_Pcb.md (10269b), references/classes/DMT_Project.md (9458b), references/classes/DMT_Schematic.md (35338b), references/classes/DMT_SelectControl.md (2512b), references/classes/DMT_Team.md (3322b), references/classes/DMT_Workspace.md (3732b), references/classes/EDA.md (12162b), references/classes/IPCB_ComplexPolygon.md (6044b), references/classes/IPCB_Polygon.md (3090b), references/classes/IPCB_PrimitiveArc.md (37653b), references/classes/IPCB_PrimitiveAttribute.md (64926b), references/classes/IPCB_PrimitiveComponent.md (52383b), references/classes/IPCB_PrimitiveComponentPad.md (8772b), references/classes/IPCB_PrimitiveDimension.md (27831b), references/classes/IPCB_PrimitiveFill.md (28795b), references/classes/IPCB_PrimitiveImage.md (31889b), references/classes/IPCB_PrimitiveLine.md (32186b), references/classes/IPCB_PrimitiveObject.md (39835b), references/classes/IPCB_PrimitivePad.md (61154b), references/classes/IPCB_PrimitivePolyline.md (26817b), references/classes/IPCB_PrimitivePour.md (42693b), references/classes/IPCB_PrimitivePoured.md (12285b), references/classes/IPCB_PrimitiveRegion.md (29858b), references/classes/IPCB_PrimitiveString.md (44413b) (+3 more)

Archive v1.1.22: 403 files, 667934 bytes

Files: format/index.md (7050b), format/pcb/3d.md (4645b), format/pcb/attr.md (2064b), format/pcb/common.md (9692b), format/pcb/component.md (3692b), format/pcb/dimension.md (2047b), format/pcb/index.md (1219b), format/pcb/obj.md (1436b), format/pcb/pad_via.md (4795b), format/pcb/panel.md (1598b), format/pcb/partition.md (1030b), format/pcb/primitive.md (4993b), format/pcb/rule.md (2334b), format/pcb/shape.md (12240b), format/pcb/text.md (1963b), format/project/blob.md (1349b), format/project/common.md (935b), format/project/group.md (1644b), format/project/index.md (808b), format/project/instance.md (1329b), format/project/meta.md (3551b), format/project/variant.md (611b), format/schematic/attr.md (2105b), format/schematic/common.md (1445b), format/schematic/component.md (6838b), format/schematic/index.md (940b), format/schematic/obj.md (1249b), format/schematic/pin.md (2308b), format/schematic/shape.md (6973b), format/schematic/structure.md (1553b), format/schematic/table.md (2449b), format/schematic/text.md (1295b), format/schematic/wire.md (4953b), guide/ancillary-projects.md (4311b), guide/ancillary-projects/pro-api-sdk.md (56b), guide/ancillary-projects/pro-api-types.md (92b), guide/error-handling.md (1238b), guide/extension-json.md (4928b), guide/extensions-marketplace.md (4227b), guide/how-to-start.md (15377b), guide/i18n.md (3049b), guide/index.md (951b), guide/inline-frame.md (1390b), guide/invoke-apis.md (4110b), guide/stability.md (3198b), package-lock.json (1967b), package.json (262b), README.md (4807b), README.zh-Hans.md (4454b), references/_index.md (34050b), references/_quick-reference.md (186195b), references/classes/DMT_Board.md (8459b), references/classes/DMT_EditorControl.md (33440b), references/classes/DMT_Event.md (6139b), refe...

API & Reliability

Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.

MissingCLAWHUB

Machine interfaces

Contract & API

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/contract"
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/trust"

Operational fit

Reliability & Benchmarks

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Machine Appendix

Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.

MissingCLAWHUB

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "CLAWHUB",
      "generatedAt": "2026-10-09T03:20:04.082Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile"
}

Facts JSON

[
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Clawhub",
    "href": "https://clawhub.ai/yanranxiaoxi/skills/easyeda-api",
    "sourceUrl": "https://clawhub.ai/yanranxiaoxi/skills/easyeda-api",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-10-09T02:17:36.930Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "href": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-10-09T02:17:36.930Z",
    "isPublic": true
  },
  {
    "factKey": "traction",
    "category": "adoption",
    "label": "Adoption signal",
    "value": "11.9K downloads",
    "href": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceUrl": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-10-09T02:17:36.930Z",
    "isPublic": true
  },
  {
    "factKey": "latest_release",
    "category": "release",
    "label": "Latest release",
    "value": "1.1.24",
    "href": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceUrl": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceType": "release",
    "confidence": "medium",
    "observedAt": "2026-09-10T08:36:14.032Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yanranxiaoxi-easyeda-api/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "release",
    "title": "Release 1.1.24",
    "description": "- Major expansion of API documentation: 54 new files and 87 updated, including new interface reference files for extension and UI/grid development. - Added guide for AI integration: new \"how-to-start-for-ai.md\" with instructions tailored for AI agent usage. - Extended class coverage: new documentation for classes such as PCB_ImageTool, SYS_ExternalApi, and SYS_Help. - Updated and reorganized skill metadata for versioning consistency. - Removed obsolete files: deprecated type and skill card references eliminated for clarity. - Improved and updated quick reference and main index documentation for easier API lookup and navigation.",
    "href": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceUrl": "https://clawhub.ai/yanranxiaoxi/easyeda-api",
    "sourceType": "release",
    "confidence": "medium",
    "observedAt": "2026-09-10T08:36:14.032Z",
    "isPublic": true
  }
]

Sponsored

Ads related to EasyEDA API Skill and adjacent AI workflows.