@jlceda/pro-api-types 0.2.36 → 0.2.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.d.ts +1766 -1570
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -498,7 +498,7 @@ declare global {
498
498
  * 搜索符号
499
499
  *
500
500
  * @beta
501
- * @param key - 搜索��键字
501
+ * @param key - 搜索���键字
502
502
  * @param libraryUuid - 库 UUID,默认为系统库,可以使用 {@link LIB_LibrariesList} 内的接口获取
503
503
  * @param classification - 分类,默认为全部
504
504
  * @param symbolType - 符号类型,默认为全部
@@ -547,8 +547,8 @@ declare global {
547
547
  page: Array<IDMT_SchematicPageItem>;
548
548
  /** 所属工程 UUID */
549
549
  parentProjectUuid: string;
550
- /** 所属板子 UUID */
551
- parentBoardUuid?: string;
550
+ /** 所属板子名称 */
551
+ parentBoardName?: string;
552
552
  /** 复用模块原理图关联的模块符号 */
553
553
  cbbSymbol?: ILIB_SymbolItem;
554
554
  }
@@ -3173,1514 +3173,1943 @@ declare global {
3173
3173
  }
3174
3174
 
3175
3175
  /**
3176
- * 图元类型
3176
+ * 图层 ID
3177
3177
  *
3178
3178
  * @public
3179
3179
  */
3180
- enum EPCB_PrimitiveType {
3181
- /** 圆弧线 */
3182
- ARC = "Arc",
3183
- /** 器件 */
3184
- COMPONENT = "Component",
3185
- /** 焊盘 */
3186
- PAD = "Pad",
3187
- /** 器件焊盘 */
3188
- COMPONENT_PAD = "ComponentPad",
3189
- /** 折线 */
3190
- POLYLINE = "Polyline",
3191
- /** 覆铜边框 */
3192
- POUR = "Pour",
3193
- /** 填充 */
3194
- FILL = "Fill",
3195
- /** 区域 */
3196
- REGION = "Region",
3197
- /** 直线 */
3198
- LINE = "Line",
3199
- /** 过孔 */
3200
- VIA = "Via",
3201
- /** 尺寸标注 */
3202
- DIMENSION = "Dimension",
3203
- /** 图像 */
3204
- IMAGE = "Image",
3205
- /** 二进制内嵌对象 */
3206
- OBJECT = "Object",
3207
- /** 覆铜填充 */
3208
- POURED = "Poured",
3209
- /** 文本 */
3210
- STRING = "String",
3211
- /** 属性 */
3212
- ATTRIBUTE = "Attribute"
3180
+ enum EPCB_LayerId {
3181
+ /** 顶层 */
3182
+ TOP = 1,
3183
+ /** 顶层丝印层 */
3184
+ TOP_SILKSCREEN = 3,
3185
+ /** 顶层阻焊层 */
3186
+ TOP_SOLDER_MASK = 5,
3187
+ /** 顶层锡膏(助焊)层 */
3188
+ TOP_PASTE_MASK = 7,
3189
+ /** 顶层装配层 */
3190
+ TOP_ASSEMBLY = 9,
3191
+ /** 顶层 FPC 补强层 */
3192
+ TOP_STIFFENER = 58,
3193
+ /** 底层 */
3194
+ BOTTOM = 2,
3195
+ /** 底层丝印层 */
3196
+ BOTTOM_SILKSCREEN = 4,
3197
+ /** 底层阻焊层 */
3198
+ BOTTOM_SOLDER_MASK = 6,
3199
+ /** 底层锡膏(助焊)层 */
3200
+ BOTTOM_PASTE_MASK = 8,
3201
+ /** 底层装配层 */
3202
+ BOTTOM_ASSEMBLY = 10,
3203
+ /** 底层 FPC 补强层 */
3204
+ BOTTOM_STIFFENER = 59,
3205
+ /** 板框层 */
3206
+ BOARD_OUTLINE = 11,
3207
+ /** 多层 */
3208
+ MULTI = 12,
3209
+ /** 文档层 */
3210
+ DOCUMENT = 13,
3211
+ /** 机械层 */
3212
+ MECHANICAL = 14,
3213
+ /** 飞线层 */
3214
+ RATLINE = 57,
3215
+ /** 内层 1 */
3216
+ INNER_1 = 15,
3217
+ /** 内层 2 */
3218
+ INNER_2 = 16,
3219
+ /** 内层 3 */
3220
+ INNER_3 = 17,
3221
+ /** 内层 4 */
3222
+ INNER_4 = 18,
3223
+ /** 内层 5 */
3224
+ INNER_5 = 19,
3225
+ /** 内层 6 */
3226
+ INNER_6 = 20,
3227
+ /** 内层 7 */
3228
+ INNER_7 = 21,
3229
+ /** 内层 8 */
3230
+ INNER_8 = 22,
3231
+ /** 内层 9 */
3232
+ INNER_9 = 23,
3233
+ /** 内层 10 */
3234
+ INNER_10 = 24,
3235
+ /** 内层 11 */
3236
+ INNER_11 = 25,
3237
+ /** 内层 12 */
3238
+ INNER_12 = 26,
3239
+ /** 内层 13 */
3240
+ INNER_13 = 27,
3241
+ /** 内层 14 */
3242
+ INNER_14 = 28,
3243
+ /** 内层 15 */
3244
+ INNER_15 = 29,
3245
+ /** 内层 16 */
3246
+ INNER_16 = 30,
3247
+ /** 内层 17 */
3248
+ INNER_17 = 31,
3249
+ /** 内层 18 */
3250
+ INNER_18 = 32,
3251
+ /** 内层 19 */
3252
+ INNER_19 = 33,
3253
+ /** 内层 20 */
3254
+ INNER_20 = 34,
3255
+ /** 内层 21 */
3256
+ INNER_21 = 35,
3257
+ /** 内层 22 */
3258
+ INNER_22 = 36,
3259
+ /** 内层 23 */
3260
+ INNER_23 = 37,
3261
+ /** 内层 24 */
3262
+ INNER_24 = 38,
3263
+ /** 内层 25 */
3264
+ INNER_25 = 39,
3265
+ /** 内层 26 */
3266
+ INNER_26 = 40,
3267
+ /** 内层 27 */
3268
+ INNER_27 = 41,
3269
+ /** 内层 28 */
3270
+ INNER_28 = 42,
3271
+ /** 内层 29 */
3272
+ INNER_29 = 43,
3273
+ /** 内层 30 */
3274
+ INNER_30 = 44,
3275
+ /** 内层 31 */
3276
+ /** 内层 32 */
3277
+ /** 自定义层 1 */
3278
+ CUSTOM_1 = 71,
3279
+ /** 自定义层 2 */
3280
+ CUSTOM_2 = 72,
3281
+ /** 自定义层 3 */
3282
+ CUSTOM_3 = 73,
3283
+ /** 自定义层 4 */
3284
+ CUSTOM_4 = 74,
3285
+ /** 自定义层 5 */
3286
+ CUSTOM_5 = 75,
3287
+ /** 自定义层 6 */
3288
+ CUSTOM_6 = 76,
3289
+ /** 自定义层 7 */
3290
+ CUSTOM_7 = 77,
3291
+ /** 自定义层 8 */
3292
+ CUSTOM_8 = 78,
3293
+ /** 自定义层 9 */
3294
+ CUSTOM_9 = 79,
3295
+ /** 自定义层 10 */
3296
+ CUSTOM_10 = 80,
3297
+ /** 自定义层 11 */
3298
+ CUSTOM_11 = 81,
3299
+ /** 自定义层 12 */
3300
+ CUSTOM_12 = 82,
3301
+ /** 自定义层 13 */
3302
+ CUSTOM_13 = 83,
3303
+ /** 自定义层 14 */
3304
+ CUSTOM_14 = 84,
3305
+ /** 自定义层 15 */
3306
+ CUSTOM_15 = 85,
3307
+ /** 自定义层 16 */
3308
+ CUSTOM_16 = 86,
3309
+ /** 自定义层 17 */
3310
+ CUSTOM_17 = 87,
3311
+ /** 自定义层 18 */
3312
+ CUSTOM_18 = 88,
3313
+ /** 自定义层 19 */
3314
+ CUSTOM_19 = 89,
3315
+ /** 自定义层 20 */
3316
+ CUSTOM_20 = 90,
3317
+ /** 自定义层 21 */
3318
+ CUSTOM_21 = 91,
3319
+ /** 自定义层 22 */
3320
+ CUSTOM_22 = 92,
3321
+ /** 自定义层 23 */
3322
+ CUSTOM_23 = 93,
3323
+ /** 自定义层 24 */
3324
+ CUSTOM_24 = 94,
3325
+ /** 自定义层 25 */
3326
+ CUSTOM_25 = 95,
3327
+ /** 自定义层 26 */
3328
+ CUSTOM_26 = 96,
3329
+ /** 自定义层 27 */
3330
+ CUSTOM_27 = 97,
3331
+ /** 自定义层 28 */
3332
+ CUSTOM_28 = 98,
3333
+ /** 自定义层 29 */
3334
+ CUSTOM_29 = 99,
3335
+ /** 自定义层 30 */
3336
+ CUSTOM_30 = 100,
3337
+ /** 夹层(介电基板)1 */
3338
+ SUBSTRATE_1 = 101,
3339
+ /** 孔层(焊盘、过孔的内孔) */
3340
+ HOLE = 47,
3341
+ /** 元件外形层 */
3342
+ COMPONENT_SHAPE = 48,
3343
+ /** 元件标识层 */
3344
+ COMPONENT_MARKING = 49,
3345
+ /** 引脚焊接层 */
3346
+ PIN_SOLDERING = 50,
3347
+ /** 引脚悬空层 */
3348
+ PIN_FLOATING = 51,
3349
+ /** 元件模型层 */
3350
+ COMPONENT_MODEL = 52,
3351
+ /** 3D 外壳边框层 */
3352
+ SHELL_3D_OUTLINE = 53,
3353
+ /** 3D 外壳顶层 */
3354
+ SHELL_3D_TOP = 54,
3355
+ /** 3D 外壳底层 */
3356
+ SHELL_3D_BOTTOM = 55,
3357
+ /** 钻孔图层 */
3358
+ DRILL_DRAWING = 56
3213
3359
  }
3214
3360
  /**
3215
- * 阻焊/助焊扩展
3361
+ * 层状态
3362
+ */
3363
+ enum EPCB_LayerStatus {
3364
+ /** 不使用 */
3365
+ NOT_USED = 0,
3366
+ /** 使用并展示 */
3367
+ SHOW = 1,
3368
+ /** 使用但不展示 */
3369
+ HIDDEN = 2
3370
+ }
3371
+ /**
3372
+ * 可选中图层
3216
3373
  *
3217
3374
  * @public
3218
- * @remarks
3219
- * 本参数设置包含以下三类情况:
3220
- *
3221
- * 1. 当图元为顶层/底层贴片焊盘时,允许设置对应层的阻焊/助焊扩展,其余设置不生效
3222
- *
3223
- * 2. 当图元为通孔焊盘时,允许设置顶层/底层的阻焊扩展,助焊扩展的设置不生效
3224
- *
3225
- * 3. 当图元为过孔时,允许设置顶层/底层的阻焊扩展,助焊扩展的设置不生效,如若为盲孔,则视其暴露层生效其阻焊扩展设置
3226
- *
3227
- * 助焊扩展在一般情况下仅用于钢网生产等特定用途,不了解其作用请安心地忽略其参数设置
3375
+ * @remarks 此处为所有在编辑器图层菜单中可以选中并设置可见性的图层
3228
3376
  */
3229
- interface IPCB_PrimitiveSolderMaskAndPasteMaskExpansion {
3230
- /** 顶层阻焊扩展 */
3231
- topSolderMask?: number;
3232
- /** 底层阻焊扩展 */
3233
- bottomSolderMask?: number;
3234
- /** 顶层助焊扩展 */
3235
- topPasteMask?: number;
3236
- /** 底层助焊扩展 */
3237
- bottomPasteMask?: number;
3238
- }
3377
+ type TPCB_LayersInTheSelectable = TPCB_LayersOfInner | TPCB_LayersOfCustom | EPCB_LayerId.TOP | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.TOP_STIFFENER | EPCB_LayerId.BOTTOM | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.BOTTOM_STIFFENER | EPCB_LayerId.BOARD_OUTLINE | EPCB_LayerId.MULTI | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING | EPCB_LayerId.RATLINE | EPCB_LayerId.COMPONENT_SHAPE | EPCB_LayerId.COMPONENT_MARKING | EPCB_LayerId.PIN_SOLDERING | EPCB_LayerId.PIN_FLOATING | EPCB_LayerId.SHELL_3D_OUTLINE | EPCB_LayerId.SHELL_3D_TOP | EPCB_LayerId.SHELL_3D_BOTTOM;
3239
3378
  /**
3240
- * PCB & 封装 / 图元类
3379
+ * 内层
3241
3380
  *
3242
3381
  * @public
3243
- * @remarks 图元的统一操作
3244
3382
  */
3245
- class PCB_Primitive {
3246
- /**
3247
- * 获取指定 ID 的图元的图元类型
3248
- *
3249
- * @alpha
3250
- * @param id - 图元 ID
3251
- * @returns 图元类型
3252
- */
3253
- getPrimitiveTypeByPrimitiveId(id: string): Promise<EPCB_PrimitiveType | undefined>;
3254
- /**
3255
- * 获取指定 ID 的图元的所有属性
3256
- *
3257
- * @alpha
3258
- * @param id - 图元 ID
3259
- * @returns 图元的所有属性
3260
- */
3261
- getPrimitiveByPrimitiveId(id: string): Promise<IPCB_Primitive | undefined>;
3262
- /**
3263
- * 获取指定所有 ID 的图元的所有属性
3264
- *
3265
- * @alpha
3266
- * @param ids - 图元 ID 数组
3267
- * @returns 所有图元的所有属性
3268
- */
3269
- getPrimitivesByPrimitiveId(ids: Array<string>): Promise<Array<IPCB_Primitive>>;
3270
- /**
3271
- * 获取图元的 BBox
3272
- *
3273
- * @beta
3274
- * @param primitiveIds - 图元 ID 数组或图元对象数组
3275
- * @returns 图元的 BBox,如若图元不存在或没有 BBox,将会返回 `undefined` 的结果
3276
- */
3277
- getPrimitivesBBox(primitiveIds: Array<string | IPCB_Primitive>): Promise<{
3278
- minX: number;
3279
- minY: number;
3280
- maxX: number;
3281
- maxY: number;
3282
- } | undefined>;
3383
+ type TPCB_LayersOfInner = EPCB_LayerId.INNER_1 | EPCB_LayerId.INNER_2 | EPCB_LayerId.INNER_3 | EPCB_LayerId.INNER_4 | EPCB_LayerId.INNER_5 | EPCB_LayerId.INNER_6 | EPCB_LayerId.INNER_7 | EPCB_LayerId.INNER_8 | EPCB_LayerId.INNER_9 | EPCB_LayerId.INNER_10 | EPCB_LayerId.INNER_11 | EPCB_LayerId.INNER_12 | EPCB_LayerId.INNER_13 | EPCB_LayerId.INNER_14 | EPCB_LayerId.INNER_15 | EPCB_LayerId.INNER_16 | EPCB_LayerId.INNER_17 | EPCB_LayerId.INNER_18 | EPCB_LayerId.INNER_19 | EPCB_LayerId.INNER_20 | EPCB_LayerId.INNER_21 | EPCB_LayerId.INNER_22 | EPCB_LayerId.INNER_23 | EPCB_LayerId.INNER_24 | EPCB_LayerId.INNER_25 | EPCB_LayerId.INNER_26 | EPCB_LayerId.INNER_27 | EPCB_LayerId.INNER_28 | EPCB_LayerId.INNER_29 | EPCB_LayerId.INNER_30;
3384
+ /**
3385
+ * 自定义层
3386
+ *
3387
+ * @public
3388
+ */
3389
+ type TPCB_LayersOfCustom = EPCB_LayerId.CUSTOM_1 | EPCB_LayerId.CUSTOM_2 | EPCB_LayerId.CUSTOM_3 | EPCB_LayerId.CUSTOM_4 | EPCB_LayerId.CUSTOM_5 | EPCB_LayerId.CUSTOM_6 | EPCB_LayerId.CUSTOM_7 | EPCB_LayerId.CUSTOM_8 | EPCB_LayerId.CUSTOM_9 | EPCB_LayerId.CUSTOM_10 | EPCB_LayerId.CUSTOM_11 | EPCB_LayerId.CUSTOM_12 | EPCB_LayerId.CUSTOM_13 | EPCB_LayerId.CUSTOM_14 | EPCB_LayerId.CUSTOM_15 | EPCB_LayerId.CUSTOM_16 | EPCB_LayerId.CUSTOM_17 | EPCB_LayerId.CUSTOM_18 | EPCB_LayerId.CUSTOM_19 | EPCB_LayerId.CUSTOM_20 | EPCB_LayerId.CUSTOM_21 | EPCB_LayerId.CUSTOM_22 | EPCB_LayerId.CUSTOM_23 | EPCB_LayerId.CUSTOM_24 | EPCB_LayerId.CUSTOM_25 | EPCB_LayerId.CUSTOM_26 | EPCB_LayerId.CUSTOM_27 | EPCB_LayerId.CUSTOM_28 | EPCB_LayerId.CUSTOM_29 | EPCB_LayerId.CUSTOM_30;
3390
+ /**
3391
+ * 器件所属层
3392
+ *
3393
+ * @public
3394
+ */
3395
+ type TPCB_LayersOfComponent = EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM;
3396
+ /**
3397
+ * 铜箔所属层
3398
+ *
3399
+ * @public
3400
+ * @remarks 此处为方便单层铜箔层设计,不包含 {@link EPCB_LayerId.MULTI}
3401
+ */
3402
+ type TPCB_LayersOfCopper = TPCB_LayersOfInner | EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM;
3403
+ /**
3404
+ * 焊盘所属层
3405
+ *
3406
+ * @public
3407
+ */
3408
+ type TPCB_LayersOfPad = EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM | EPCB_LayerId.MULTI;
3409
+ /**
3410
+ * 线所属层
3411
+ *
3412
+ * @public
3413
+ */
3414
+ type TPCB_LayersOfLine = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.BOARD_OUTLINE | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING;
3415
+ /**
3416
+ * 尺寸标注所属层
3417
+ *
3418
+ * @public
3419
+ */
3420
+ type TPCB_LayersOfDimension = TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL;
3421
+ /**
3422
+ * 复杂多边形图(SVG 图像、文本)所属层
3423
+ *
3424
+ * @public
3425
+ */
3426
+ type TPCB_LayersOfImage = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING;
3427
+ /**
3428
+ * 填充所属层
3429
+ *
3430
+ * @public
3431
+ * @remarks 填充所属层为 {@link EPCB_LayerId.MULTI} 时代表挖槽区域
3432
+ */
3433
+ type TPCB_LayersOfFill = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.MULTI;
3434
+ /**
3435
+ * 区域所属层
3436
+ *
3437
+ * @public
3438
+ */
3439
+ type TPCB_LayersOfRegion = TPCB_LayersOfCopper | EPCB_LayerId.MULTI;
3440
+ /**
3441
+ * 二进制内嵌对象所属层
3442
+ *
3443
+ * @public
3444
+ */
3445
+ type TPCB_LayersOfObject = EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.DOCUMENT;
3446
+ /**
3447
+ * 图层颜色配置
3448
+ *
3449
+ * @public
3450
+ */
3451
+ enum EPCB_LayerColorConfiguration {
3452
+ /** 嘉立创 EDA */
3453
+ JLCEDA = 1,
3454
+ /** EasyEDA */
3455
+ EASYEDA = 1,
3456
+ /** Altium Designer */
3457
+ ALTIUM_DESIGNER = 2,
3458
+ /** PADS */
3459
+ PADS = 3,
3460
+ /** KiCAD */
3461
+ KICAD = 4
3283
3462
  }
3284
-
3285
3463
  /**
3286
- * PCB 图元接口
3464
+ * PCB 板材类型
3287
3465
  *
3288
3466
  * @public
3289
3467
  */
3290
- interface IPCB_PrimitiveAPI {
3291
- create: (...args: any[]) => IPCB_Primitive | undefined | Promise<IPCB_Primitive> | Promise<IPCB_Primitive | undefined>;
3292
- delete: (primitiveIds: string | any | Array<string> | Array<any>) => boolean | Promise<boolean>;
3293
- modify: (primitiveId: string | any, ...args: any[]) => IPCB_Primitive | undefined | Promise<IPCB_Primitive> | Promise<IPCB_Primitive | undefined>;
3294
- get: {
3295
- (primitiveIds: string): IPCB_Primitive | undefined | Promise<IPCB_Primitive | undefined>;
3296
- (primitiveIds: Array<string>): Array<IPCB_Primitive> | Promise<Array<IPCB_Primitive>>;
3297
- };
3298
- getAllPrimitiveId: (...args: any[]) => Array<string> | Promise<Array<string>>;
3299
- getAll: (...args: any[]) => Array<IPCB_Primitive> | Promise<Array<IPCB_Primitive>>;
3468
+ enum EPCB_PcbPlateType {
3469
+ /** 普通板材 */
3470
+ NORMAL = 1,
3471
+ /** FPC 软板 */
3472
+ FPC = 2
3300
3473
  }
3301
3474
  /**
3302
- * PCB 图元
3475
+ * 图层类型
3303
3476
  *
3304
3477
  * @public
3305
3478
  */
3306
- interface IPCB_Primitive {
3307
- getState_PrimitiveType: () => EPCB_PrimitiveType;
3308
- getState_PrimitiveId: () => string;
3309
- create: () => IPCB_Primitive | Promise<IPCB_Primitive>;
3310
- toAsync: () => IPCB_Primitive;
3311
- toSync: () => IPCB_Primitive;
3312
- isAsync: () => boolean;
3313
- reset: () => IPCB_Primitive | Promise<IPCB_Primitive>;
3314
- done: () => IPCB_Primitive | Promise<IPCB_Primitive>;
3479
+ enum EPCB_LayerType {
3480
+ /** 信号层 */
3481
+ SIGNAL = "SIGNAL",
3482
+ /** 内电层 */
3483
+ INTERNAL_ELECTRICAL = "PLANE",
3484
+ /** 丝印层 */
3485
+ SILKSCREEN = "SILKSCREEN",
3486
+ /** 阻焊层 */
3487
+ SOLDER_MASK = "SOLDER_MASK",
3488
+ /** 锡膏(助焊)层 */
3489
+ PASTE_MASK = "PASTE_MASK",
3490
+ /** 装配层 */
3491
+ ASSEMBLY = "ASSEMBLY",
3492
+ /** 其它 */
3493
+ OTHER = "OTHER",
3494
+ /** 自定义层 */
3495
+ CUSTOM = "CUSTOM"
3315
3496
  }
3316
-
3317
3497
  /**
3318
- * 文档飞线计算功能状态
3498
+ * 内层允许设置的图层类型
3319
3499
  *
3320
3500
  * @public
3321
3501
  */
3322
- enum EPCB_DocumentRatlineCalculatingActiveStatus {
3323
- /** 启用 */
3324
- ACTIVE = "active",
3325
- /** 停用 */
3326
- INACTIVE = "inactive"
3502
+ type TPCB_LayerTypesOfInnerLayer = EPCB_LayerType.SIGNAL | EPCB_LayerType.INTERNAL_ELECTRICAL;
3503
+ /**
3504
+ * 图层属性
3505
+ *
3506
+ * @public
3507
+ */
3508
+ interface IPCB_LayerItem {
3509
+ /** 图层 ID */
3510
+ id: EPCB_LayerId;
3511
+ /** 名称 */
3512
+ name: string;
3513
+ /** 类型 */
3514
+ type: EPCB_LayerType;
3515
+ /** 颜色(RGB HEX 格式) */
3516
+ color: string;
3517
+ /** 透明度(%) */
3518
+ transparency: number;
3519
+ /** 非激活颜色(RGB HEX 格式) */
3520
+ inactiveColor: string;
3521
+ /** 非激活透明度(%) */
3522
+ inactiveTransparency: number;
3523
+ /** 层状态 */
3524
+ layerStatus: EPCB_LayerStatus;
3525
+ /** 是否锁定 */
3526
+ locked: boolean;
3327
3527
  }
3328
3528
  /**
3329
- * PCB & 封装 / 文档操作类
3529
+ * 非激活层展示模式
3330
3530
  *
3331
3531
  * @public
3332
- * @remarks 对设计文档总体进行的操作
3333
3532
  */
3334
- class PCB_Document {
3533
+ enum EPCB_InactiveLayerDisplayMode {
3534
+ /** 正常亮度 */
3535
+ NORMAL_BRIGHTNESS = 0,
3536
+ /** 置灰 */
3537
+ TURN_GRAY = 1,
3538
+ /** 隐藏 */
3539
+ HIDE = 2
3540
+ }
3541
+ /**
3542
+ * PCB & 封装 / 图层操作类
3543
+ *
3544
+ * @public
3545
+ */
3546
+ class PCB_Layer {
3335
3547
  /**
3336
- * 从原理图导入变更
3548
+ * 获取当前图层的详细属性
3549
+ *
3550
+ * @alpha
3551
+ * @returns 当前图层的详细属性
3552
+ */
3553
+ getCurrentLayer(): IPCB_LayerItem | undefined;
3554
+ /**
3555
+ * 选中图层
3337
3556
  *
3338
3557
  * @public
3339
- * @param uuid - 原理图 UUID,默认为关联在同一个 Board 下的原理图
3340
- * @returns 导入操作是否成功,导入失败或未传入原理图 UUID 的游离 PCB 将返回 `false`
3558
+ * @param layer -
3559
+ * @returns 操作是否成功,不存在指定层将返回 `false`
3341
3560
  */
3342
- importChanges(uuid?: string): Promise<boolean>;
3561
+ selectLayer(layer: TPCB_LayersInTheSelectable): Promise<boolean>;
3343
3562
  /**
3344
- * 导入自动布线文件(JSON)
3563
+ * 将层设置为可见
3345
3564
  *
3346
3565
  * @beta
3347
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3348
- * @param autoRouteFile - 欲导入的 JSON 文件
3349
- * @returns 导入操作是否成功
3566
+ * @param layer - 层,如若不指定任何层则默认为所有层
3567
+ * @param setOtherLayerInvisible - 是否将其它层设置为不可见
3568
+ * @returns 操作是否成功
3350
3569
  */
3351
- importAutoRouteJsonFile(autoRouteFile: File): Promise<boolean>;
3570
+ setLayerVisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerInvisible?: boolean): Promise<boolean>;
3352
3571
  /**
3353
- * 导入自动布线文件(SES)
3572
+ * 将层设置为不可见
3354
3573
  *
3355
3574
  * @beta
3356
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3357
- * @param autoRouteFile - 欲导入的 SES 文件
3358
- * @returns 导入操作是否成功
3575
+ * @param layer - 层,如若不指定任何层则默认为所有层
3576
+ * @param setOtherLayerVisible - 是否将其它层设置为可见
3577
+ * @returns 操作是否成功
3359
3578
  */
3360
- importAutoRouteSesFile(autoRouteFile: File): Promise<boolean>;
3579
+ setLayerInvisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerVisible?: boolean): Promise<boolean>;
3361
3580
  /**
3362
- * 导入自动布局文件(JSON)
3581
+ * 锁定层
3363
3582
  *
3364
3583
  * @beta
3365
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3366
- * @param autoLayoutFile - 欲导入的 JSON 文件
3367
- * @returns 导入操作是否成功
3584
+ * @param layer - 层,如若不指定任何层则默认为所有层
3585
+ * @returns 操作是否成功
3368
3586
  */
3369
- importAutoLayoutJsonFile(autoLayoutFile: File): Promise<boolean>;
3587
+ lockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
3370
3588
  /**
3371
- * 保存文档
3589
+ * 取消锁定层
3372
3590
  *
3373
- * @public
3374
- * @returns 保存操作是否成功,保存失败、上传失败等错误均返回 `false`
3375
- */
3376
- save(uuid: string): Promise<boolean>;
3377
- /**
3378
- * 获取当前飞线计算功能状态
3379
- *
3380
- * @public
3381
- * @returns 功能状态
3591
+ * @beta
3592
+ * @param layer - 层,如若不指定任何层则默认为所有层
3593
+ * @returns 操作是否成功
3382
3594
  */
3383
- getCalculatingRatlineStatus(): Promise<EPCB_DocumentRatlineCalculatingActiveStatus>;
3595
+ unlockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
3384
3596
  /**
3385
- * 启动飞线计算功能
3597
+ * 设置铜箔层数
3386
3598
  *
3387
- * @public
3388
- * @remarks 在启动时将会触发一次飞线计算
3599
+ * @beta
3600
+ * @remarks 新建的 PCB 文档默认拥有两层铜箔层
3601
+ * @param numberOfLayers - 层数
3389
3602
  * @returns 操作是否成功
3390
3603
  */
3391
- startCalculatingRatline(): Promise<boolean>;
3604
+ setTheNumberOfCopperLayers(numberOfLayers: 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32): Promise<boolean>;
3392
3605
  /**
3393
- * 停止飞线计算功能
3606
+ * 获取铜箔层数
3394
3607
  *
3395
- * @public
3396
- * @returns 操作是否成功
3608
+ * @alpha
3609
+ * @returns 层数
3397
3610
  */
3398
- stopCalculatingRatline(): Promise<boolean>;
3611
+ getTheNumberOfCopperLayers(): Promise<number>;
3399
3612
  /**
3400
- * 输入画布坐标返回该坐标对应的数据坐标
3613
+ * 设置层颜色配置
3401
3614
  *
3402
- * @public
3403
- * @remarks 嘉立创 EDA 前端显示的坐标均为画布原点;嘉立创 EDA API 使用的均为数据原点;在创建 PCB 时,默认画布原点等于数据原点
3404
- * @param canvasOriginX - 画布原点 X
3405
- * @param canvasOriginY - 画布原点 Y
3406
- * @returns 数据原点坐标
3615
+ * @beta
3616
+ * @param colorConfiguration - 颜色配置
3617
+ * @returns 操作是否成功
3407
3618
  */
3408
- convertCanvasOriginToDataOrigin(x: number, y: number): Promise<{
3409
- x: number;
3410
- y: number;
3411
- }>;
3619
+ setLayerColorConfiguration(colorConfiguration: EPCB_LayerColorConfiguration): Promise<boolean>;
3412
3620
  /**
3413
- * 输入数据坐标返回该坐标对应的画布坐标
3621
+ * 设置非激活层透明度
3414
3622
  *
3415
- * @public
3416
- * @remarks 嘉立创 EDA 前端显示的坐标均为画布原点;嘉立创 EDA API 使用的均为数据原点;在创建 PCB 时,默认画布原点等于数据原点
3417
- * @param x - 数据原点 X
3418
- * @param y - 数据原点 Y
3419
- * @returns 画布原点坐标
3623
+ * @beta
3624
+ * @param transparency - 透明度,范围 `0-100`
3625
+ * @returns 操作是否成功
3420
3626
  */
3421
- convertDataOriginToCanvasOrigin(x: number, y: number): Promise<{
3422
- x: number;
3423
- y: number;
3424
- }>;
3627
+ setInactiveLayerTransparency(transparency: number): Promise<boolean>;
3425
3628
  /**
3426
- * 获取画布原点相对于数据原点的偏移坐标
3629
+ * 设置 PCB 类型
3427
3630
  *
3428
- * @public
3631
+ * @beta
3429
3632
  * @remarks
3430
- * 嘉立创 EDA 专业版前端显示的坐标均为画布原点;
3633
+ * 此处主要是为了适配 FPC 软板的设计,如若将 PCB 类型设置为 FPC 软板,将会新增 FPC 补强层图层。
3431
3634
  *
3432
- * 嘉立创 EDA 专业版 API 使用的均为数据原点;
3635
+ * 请注意:
3433
3636
  *
3434
- * 如果返回的数据为 `{ canvasOriginOffsetX: 100, canvasOriginOffsetY: 200 }`,
3435
- * 则代表画布原点在数据原点的向右 100 单位且向上 200 单位的位置;
3637
+ * 1. 嘉立创暂不支持超过 2 层铜箔层的 FPC 软板生产;
3436
3638
  *
3437
- * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
3438
- * @returns 画布原点相对于数据原点的偏移坐标
3639
+ * 2. 将 PCB 类型从 FPC 软板切换为普通板材时需要预先删除 FPC 补强层上的任何图元,否则将无法切换并返回 `false` 的结果。
3640
+ * @param pcbType - PCB 类型
3641
+ * @returns 操作是否成功
3439
3642
  */
3440
- getCanvasOrigin(): Promise<{
3441
- offsetX: number;
3442
- offsetY: number;
3443
- }>;
3643
+ setPcbType(pcbType: EPCB_PcbPlateType): Promise<boolean>;
3444
3644
  /**
3445
- * 设置画布原点相对于数据原点的偏移坐标
3446
- *
3447
- * @public
3448
- * @remarks
3449
- * 嘉立创 EDA 专业版前端显示的坐标均为画布原点;
3450
- *
3451
- * 嘉立创 EDA 专业版 API 使用的均为数据原点;
3645
+ * 新增自定义层
3452
3646
  *
3453
- * 如果希望在 API 操作时前端画布坐标能与数据一致,
3454
- * 建议调用本方法并设置偏移量为零,
3455
- * 即 `setCanvasOrigin(0, 0)`;
3647
+ * @beta
3648
+ * @returns 新增的自定义层的图层 ID,如若为 `undefined` 则为新增失败,可能是自定义层数量已达到上限
3649
+ */
3650
+ addCustomLayer(): Promise<TPCB_LayersOfCustom | undefined>;
3651
+ /**
3652
+ * 移除层
3456
3653
  *
3457
- * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
3458
- * @param offsetX - 画布原点相对于数据原点的 X 坐标偏移
3459
- * @param offsetY - 画布原点相对于数据原点的 Y 坐标偏移
3654
+ * @beta
3655
+ * @remarks 当前仅支持移除自定义层
3656
+ * @param layer -
3460
3657
  * @returns 操作是否成功
3461
3658
  */
3462
- setCanvasOrigin(offsetX: number, offsetY: number): Promise<boolean>;
3659
+ removeLayer(layer: TPCB_LayersOfCustom): Promise<boolean>;
3463
3660
  /**
3464
- * 定位到画布坐标
3465
- *
3466
- * @public
3467
- * @remarks
3468
- * 本接口在前端画布上定位到指定的数据层面坐标;
3661
+ * 修改图层属性
3469
3662
  *
3470
- * 如果希望在进行本操作时前端画布坐标能与传入数据一致,
3471
- * 建议调用 {@link PCB_Document.setCanvasOrigin} 方法并设置偏移量为零;
3663
+ * @beta
3664
+ * @remarks 仅内层和自定义层允许修改名称;仅内层允许修改类型, 透明度仅支持0-100之间的数
3665
+ * @param layer - 层
3666
+ * @param property - 属性
3667
+ * @returns 修改后的图层属性,如若为 `undefined` 则代表修改失败或图层不存在
3668
+ */
3669
+ modifyLayer(layer: TPCB_LayersInTheSelectable, property: {
3670
+ name?: string;
3671
+ type?: TPCB_LayerTypesOfInnerLayer;
3672
+ color?: string;
3673
+ transparency?: number;
3674
+ }): Promise<boolean>;
3675
+ /**
3676
+ * 获取所有图层的详细属性
3472
3677
  *
3473
- * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
3474
- * @param x - 坐标 X
3475
- * @param y - 坐标 Y
3476
- * @returns 操作是否成功
3678
+ * @beta
3679
+ * @returns 所有图层的详细属性
3477
3680
  */
3478
- navigateToCoordinates(x: number, y: number): Promise<boolean>;
3681
+ getAllLayers(): Promise<Array<IPCB_LayerItem>>;
3479
3682
  /**
3480
- * 定位到画布区域
3683
+ * 设置非激活层展示模式
3481
3684
  *
3482
3685
  * @beta
3483
- * @remarks
3484
- * 本接口在前端画布上定位到指定的区域,区域数据为相对于数据原点的偏移;
3686
+ * @param displayMode - 展示模式
3687
+ * @returns 是否设置成功
3688
+ */
3689
+ setInactiveLayerDisplayMode(displayMode?: EPCB_InactiveLayerDisplayMode): Promise<boolean>;
3690
+ /**
3691
+ * 获取当前物理叠层配置名称
3485
3692
  *
3486
- * 例如:传入数据为 `{left: 0, right: 60, top: 100, bottom: -20}` =\> `navigateToRegion(0, 60, 100, -20)`,
3487
- * 则画布将会定位到以 `[30, 40]` 为中心的,`x` 轴方向长度为 `60`,`y` 轴方向长度为 `120` 的矩形范围;
3693
+ * @alpha
3694
+ * @returns 当前物理叠层配置名称,`undefined` 为获取失败
3695
+ */
3696
+ getCurrentPhysicalStackingConfigurationName(): Promise<string | undefined>;
3697
+ /**
3698
+ * 获取当前物理叠层配置
3488
3699
  *
3489
- * 本接口不进行缩放操作,但会生成指示定位中心及表示区域范围的矩形框;
3700
+ * @alpha
3701
+ * @returns 当前物理叠层配置,`undefined` 为获取失败
3702
+ */
3703
+ getCurrentPhysicalStackingConfiguration(): {
3704
+ [key: string]: any;
3705
+ } | undefined;
3706
+ /**
3707
+ * 获取指定物理叠层配置
3490
3708
  *
3491
- * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
3492
- * @param left - 矩形框第一 X 坐标
3493
- * @param right - 矩形框第二 X 坐标
3494
- * @param top - 矩形框第一 Y 坐标
3495
- * @param bottom - 矩形框第二 Y 坐标
3496
- * @returns 操作是否成功
3709
+ * @alpha
3710
+ * @param configurationName - 配置名称
3711
+ * @returns 物理叠层配置,`undefined` 为不存在该物理叠层
3497
3712
  */
3498
- navigateToRegion(left: number, right: number, top: number, bottom: number): Promise<boolean>;
3713
+ getPhysicalStackingConfiguration(configurationName: string): Promise<{
3714
+ [key: string]: any;
3715
+ } | undefined>;
3499
3716
  /**
3500
- * 获取坐标点的图元
3717
+ * 获取所有物理叠层配置
3501
3718
  *
3502
- * @beta
3503
- * @remarks 本操作和前端鼠标点击操作类似,将会获取指定坐标点上的图元
3504
- * @param x - 坐标点 X
3505
- * @param y - 坐标点 Y
3506
- * @returns 坐标点的图元,如若坐标点无法找到图元,将返回 `undefined`
3719
+ * @alpha
3720
+ * @returns 所有物理叠层配置
3507
3721
  */
3508
- getPrimitiveAtPoint(x: number, y: number): Promise<IPCB_Primitive | undefined>;
3722
+ getAllPhysicalStackingConfigurations(): Promise<Array<{
3723
+ [key: string]: any;
3724
+ }>>;
3509
3725
  /**
3510
- * 获取区域内所有图元
3726
+ * 保存物理叠层配置
3511
3727
  *
3512
- * @beta
3513
- * @param left - 矩形框第一 X 坐标
3514
- * @param right - 矩形框第二 X 坐标
3515
- * @param top - 矩形框第一 Y 坐标
3516
- * @param bottom - 矩形框第二 Y 坐标
3517
- * @param leftToRight - 是否仅获取完全框选的图元,`false` 则触碰即获取
3518
- * @returns 区域内所有图元
3728
+ * @alpha
3729
+ * @param physicalStackingConfiguration - 物理叠层配置
3730
+ * @param configurationName - 配置名称
3731
+ * @param allowOverwrite - 是否允许覆写同名物理叠层配置,`false` 则将在遇到同名物理叠层配置时返回 `false`,请注意可能的数据丢失风险
3732
+ * @returns 保存是否成功
3519
3733
  */
3520
- getPrimitivesInRegion(left: number, right: number, top: number, bottom: number, leftToRight?: boolean): Promise<Array<IPCB_Primitive>>;
3734
+ savePhysicalStackingConfiguration(physicalStackingConfiguration: {
3735
+ [key: string]: any;
3736
+ }, configurationName: string, allowOverwrite?: boolean): Promise<boolean>;
3521
3737
  /**
3522
- * 缩放到板框(适应板框)
3738
+ * 重命名物理叠层配置
3523
3739
  *
3524
- * @beta
3525
- * @returns 操作是否成功
3740
+ * @alpha
3741
+ * @param originalConfigurationName - 原物理叠层配置名称
3742
+ * @param configurationName - 新物理叠层配置名称
3743
+ * @returns 重命名是否成功
3526
3744
  */
3527
- zoomToBoardOutline(): Promise<boolean>;
3745
+ renamePhysicalStackingConfiguration(originalConfigurationName: string, configurationName: string): Promise<boolean>;
3528
3746
  /**
3529
- * 获取当前画布过滤器配置
3747
+ * 删除物理叠层配置
3530
3748
  *
3531
- * @beta
3532
- * @returns 当前画布过滤器配置,`undefined` 为获取失败
3749
+ * @alpha
3750
+ * @param configurationName - 配置名称
3751
+ * @returns 删除是否成功
3533
3752
  */
3534
- getCurrentFilterConfiguration(): Promise<{
3535
- [key: string]: any;
3536
- } | undefined>;
3753
+ deletePhysicalStackingConfiguration(configurationName: string): Promise<boolean>;
3537
3754
  /**
3538
- * 清除布线
3755
+ * 获取新建 PCB 默认物理叠层配置的名称
3539
3756
  *
3540
3757
  * @alpha
3541
- * @param type - 清除类型,如若需要指定清除类型,请提前选择指定图元
3758
+ * @returns 默认物理叠层配置的名称,`undefined` 为获取失败
3542
3759
  */
3543
- clearRouting(type?: 'all' | 'net' | 'connection'): Promise<boolean>;
3760
+ getDefaultPhysicalStackingConfigurationName(): Promise<string | undefined>;
3761
+ /**
3762
+ * 设置为新建 PCB 默认物理叠层配置
3763
+ *
3764
+ * @alpha
3765
+ * @remarks 返回值为结果导向,重复设置相同的物理叠层为默认物理叠层也将返回 `true`
3766
+ * @param configurationName - 配置名称
3767
+ * @returns 设置是否成功
3768
+ */
3769
+ setAsDefaultPhysicalStackingConfiguration(configurationName: string): Promise<boolean>;
3770
+ /**
3771
+ * 覆写当前物理叠层配置
3772
+ *
3773
+ * @alpha
3774
+ * @remarks 将会覆写 PCB 当前的物理叠层配置,请注意数据丢失风险
3775
+ * @param ruleConfiguration - 物理叠层配置
3776
+ * @returns 覆写是否成功
3777
+ */
3778
+ overwriteCurrentPhysicalStackingConfiguration(physicalStackingConfiguration: {
3779
+ [key: string]: any;
3780
+ }): boolean;
3544
3781
  }
3545
3782
 
3546
3783
  /**
3547
- * 网络类属性
3784
+ * 单多边形源数组
3548
3785
  *
3549
3786
  * @public
3550
- */
3551
- interface IPCB_NetClassItem {
3552
- /** 网络类名称 */
3553
- name: string;
3554
- /** 网络名称数组 */
3555
- nets: Array<string>;
3556
- /** 网络类颜色 */
3557
- color: {
3558
- r: number;
3559
- g: number;
3560
- b: number;
3561
- alpha: number;
3562
- } | null;
3563
- }
3564
- /**
3565
- * 差分对属性
3787
+ * @remarks
3788
+ * 单多边形为首尾重合的一条不间断的线所描述的区域,如果首尾不重合将会自动重合。
3566
3789
  *
3567
- * @public
3568
- */
3569
- interface IPCB_DifferentialPairItem {
3570
- /** 差分对名称 */
3571
- name: string;
3572
- /** 正网络 */
3573
- positiveNet: string;
3574
- /** 负网络 */
3575
- negativeNet: string;
3576
- }
3577
- /**
3578
- * 等长网络组属性
3790
+ * 单多边形的数据格式举例:
3579
3791
  *
3580
- * @public
3581
- */
3582
- interface IPCB_EqualLengthNetGroupItem {
3583
- /** 等长网络组名称 */
3584
- name: string;
3585
- /** 网络名称数组 */
3586
- nets: Array<string>;
3587
- /** 等长网络组颜色 */
3588
- color: {
3589
- r: number;
3590
- g: number;
3591
- b: number;
3592
- alpha: number;
3593
- } | null;
3594
- }
3792
+ * `[300, 200, 'L', 400, 200, 'ARC', 400, 220, 15, 'C', 200, 500, 400, 300, 100, 100]`
3793
+ *
3794
+ * `['R', 100, 200, 300, 300, 0, 0]`
3795
+ *
3796
+ * `['CIRCLE', 100, 200, 5]`
3797
+ *
3798
+ * 单多边形的数据由以下几种模式组合而成:
3799
+ *
3800
+ * ① L 直线模式
3801
+ *
3802
+ * `x1 y1 L x2 y3 x3 y3 ...`
3803
+ *
3804
+ * - `{number}` `x` - 直线点的 X 坐标
3805
+ *
3806
+ * - `{number}` `y` - 直线点的 Y 坐标
3807
+ *
3808
+ * ② ARC/CARC 圆弧模式
3809
+ *
3810
+ * `ARC` 为两点交互,`CARC` 为中心圆弧交互
3811
+ *
3812
+ * `startX startY ARC arcAngle endX endY`
3813
+ *
3814
+ * `startX startY CARC arcAngle endX endY`
3815
+ *
3816
+ * - `{number}` `startX` - 起始 X
3817
+ *
3818
+ * - `{number}` `startY` - 起始 Y
3819
+ *
3820
+ * - `{number}` `arcAngle` - 圆弧角(负值为顺时针旋转;角度制)
3821
+ *
3822
+ * - `{number}` `endX` - 终止 X
3823
+ *
3824
+ * - `{number}` `endY` - 终止 Y
3825
+ *
3826
+ * ③ C 三阶贝塞尔模式
3827
+ *
3828
+ * `x1 y1 C x2 y2 x3 y3 x4 y4 ...`
3829
+ *
3830
+ * - `{number}` `x` - 控制点 X
3831
+ *
3832
+ * - `{number}` `y` - 控制点 Y
3833
+ *
3834
+ * ④ R 矩形模式
3835
+ *
3836
+ * `R x y width height rot round`
3837
+ *
3838
+ * - `{number}` `x` - 左上点 X
3839
+ *
3840
+ * - `{number}` `y` - 左上点 Y
3841
+ *
3842
+ * - `{number}` `width` - 宽
3843
+ *
3844
+ * - `{number}` `height` - 高
3845
+ *
3846
+ * - `{number}` `rotation` - 旋转角度
3847
+ *
3848
+ * - `{number}` `round` - 圆角半径
3849
+ *
3850
+ * ⑤ CIRCLE 圆形模式
3851
+ *
3852
+ * `CIRCLE cx cy radius`
3853
+ *
3854
+ * - `{number}` `cx` - 中心点 X
3855
+ *
3856
+ * - `{number}` `xy` - 中心点 Y
3857
+ *
3858
+ * - `{number}` `radius` - 半径
3859
+ */
3860
+ type TPCB_PolygonSourceArray = Array<'L' | 'ARC' | 'CARC' | 'C' | 'R' | 'CIRCLE' | number>;
3595
3861
  /**
3596
- * 焊盘对组属性
3862
+ * 离散化点
3597
3863
  *
3598
3864
  * @public
3599
3865
  */
3600
- interface IPCB_PadPairGroupItem {
3601
- /** 焊盘对组名称 */
3602
- name: string;
3603
- /** 焊盘对数组 */
3604
- padPairs: Array<[string, string]>;
3866
+ interface IPCB_DiscretizedPoint {
3867
+ /** X 坐标 */
3868
+ x: number;
3869
+ /** Y 坐标 */
3870
+ y: number;
3605
3871
  }
3606
3872
  /**
3607
- * 焊盘对最短导线长度属性
3873
+ * 离散化选项
3608
3874
  *
3609
3875
  * @public
3610
3876
  */
3611
- interface IPCB_PadPairMinWireLengthItem {
3612
- /** 焊盘对数组 */
3613
- padPair: [string, string];
3614
- /** 最短导线长度 */
3615
- minWireLength: number;
3877
+ interface IPCB_DiscretizeOptions {
3878
+ /**
3879
+ * 离散步长,即相邻离散点之间的最大距离
3880
+ *
3881
+ * @remarks 步长越小,离散点越密集,精度越高;步长单位与多边形坐标单位一致
3882
+ */
3883
+ step?: number;
3616
3884
  }
3617
3885
  /**
3618
- * PCB & 封装 / 设计规则检查(DRC)类
3886
+ * PCB & 封装 / 多边形数学类
3619
3887
  *
3620
3888
  * @public
3621
- * @remarks 检查、设定 DRC 规则
3622
3889
  */
3623
- class PCB_Drc {
3890
+ class PCB_MathPolygon {
3624
3891
  /**
3625
- * 检查 DRC
3892
+ * 创建单多边形
3626
3893
  *
3627
- * @beta
3628
- * @param strict - 是否严格检查,当前 PCB 统一为严格检查模式
3629
- * @param userInterface - 是否显示 UI(呼出底部 DRC 窗口)
3630
- * @param includeVerboseError - 是否在返回值中包含详细错误信息,如若为 `true`,则返回值将始终为数组
3631
- * @returns DRC 检查是否通过
3894
+ * @public
3895
+ * @param polygon - 单多边形数据
3896
+ * @returns 单多边形对象,`undefined` 表示数据不合法
3632
3897
  */
3633
- check(strict: boolean, userInterface: boolean, includeVerboseError: false): Promise<boolean>;
3898
+ createPolygon(polygon: TPCB_PolygonSourceArray): IPCB_Polygon | undefined;
3634
3899
  /**
3635
- * 检查 DRC
3900
+ * 创建复杂多边形
3636
3901
  *
3637
- * @beta
3638
- * @param strict - 是否严格检查,当前 PCB 统一为严格检查模式
3639
- * @param userInterface - 是否显示 UI(呼出底部 DRC 窗口)
3640
- * @param includeVerboseError - 是否在返回值中包含详细错误信息,如若为 `true`,则返回值将始终为数组
3641
- * @returns DRC 检查的详细结果
3902
+ * @public
3903
+ * @param complexPolygon - 复杂多边形数据
3904
+ * @returns 复杂多边形对象,`undefined` 表示数据不合法
3642
3905
  */
3643
- check(strict: boolean, userInterface: boolean, includeVerboseError: true): Promise<Array<any>>;
3906
+ createComplexPolygon(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>): IPCB_ComplexPolygon | undefined;
3644
3907
  /**
3645
- * 获取当前设计规则配置名称
3908
+ * 拆分单多边形
3646
3909
  *
3647
3910
  * @public
3648
- * @returns 当前设计规则配置名称,`undefined` 为获取失败
3911
+ * @param complexPolygons - 复杂多边形
3912
+ * @returns 单多边形数组
3649
3913
  */
3650
- getCurrentRuleConfigurationName(): Promise<string | undefined>;
3914
+ splitPolygon(...complexPolygons: Array<IPCB_ComplexPolygon>): Array<IPCB_Polygon>;
3651
3915
  /**
3652
- * 获取当前设计规则配置
3916
+ * 将单多边形离散化为点数据
3653
3917
  *
3654
- * @beta
3655
- * @returns 当前设计规则配置,`undefined` 为获取失败
3656
- */
3657
- getCurrentRuleConfiguration(): Promise<{
3658
- [key: string]: any;
3659
- } | undefined>;
3660
- /**
3661
- * 获取指定设计规则配置
3918
+ * @alpha
3919
+ * @remarks 将单多边形的边界离散化为一系列点
3662
3920
  *
3663
- * @public
3664
- * @param configurationName - 配置名称
3665
- * @returns 设计规则配置,`undefined` 为不存在该设计规则
3921
+ * @param polygon - 单多边形对象
3922
+ * @param options - 离散化选项
3923
+ * @returns 离散化点数据
3666
3924
  */
3667
- getRuleConfiguration(configurationName: string): Promise<{
3668
- [key: string]: any;
3669
- } | undefined>;
3925
+ discretize(polygon: IPCB_Polygon | TPCB_PolygonSourceArray, options?: IPCB_DiscretizeOptions): Array<IPCB_DiscretizedPoint>;
3670
3926
  /**
3671
- * 获取所有设计规则配置
3927
+ * 计算复杂多边形 BBox 宽度
3672
3928
  *
3673
3929
  * @beta
3674
- * @param includeSystem - 是否获取系统设计规则配置
3675
- * @returns 所有设计规则配置
3930
+ * @param complexPolygon - 复杂多边形
3931
+ * @returns BBox 宽度
3676
3932
  */
3677
- getAllRuleConfigurations(includeSystem?: boolean): Promise<Array<{
3678
- [key: string]: any;
3679
- }>>;
3933
+ calculateWidth(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
3680
3934
  /**
3681
- * 保存设计规则配置
3935
+ * 计算复杂多边形 BBox 高度
3682
3936
  *
3683
3937
  * @beta
3684
- * @remarks 只有自定义配置可以覆盖保存,系统配置不允许修改和覆盖
3685
- * @param ruleConfiguration - 设计规则配置
3686
- * @param configurationName - 配置名称
3687
- * @param allowOverwrite - 是否允许覆写同名设计规则配置,`false` 则将在遇到同名设计规则配置时返回 `false`,请注意可能的数据丢失风险
3688
- * @returns 保存是否成功
3938
+ * @param complexPolygon - 复杂多边形
3939
+ * @returns BBox 高度
3689
3940
  */
3690
- saveRuleConfiguration(ruleConfiguration: {
3691
- [key: string]: any;
3692
- }, configurationName: string, allowOverwrite?: boolean): Promise<boolean>;
3941
+ calculateHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
3942
+ calculateBBoxHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>): number;
3693
3943
  /**
3694
- * 重命名设计规则配置
3944
+ * 将图像转换为复杂多边形对象
3695
3945
  *
3696
3946
  * @beta
3697
- * @remarks 只有自定义配置可以重命名,系统配置不允许重命名
3698
- * @param originalConfigurationName - 原设计规则配置名称
3699
- * @param configurationName - 新设计规则配置名称
3700
- * @returns 重命名是否成功
3947
+ * @param imageBlob - 图像 Blob 文件,可以使用 {@link SYS_FileSystem.openReadFileDialog} 方法从文件系统读取文件
3948
+ * @param imageWidth - 图像宽度
3949
+ * @param imageHeight - 图像高度
3950
+ * @param tolerance - 容差,取值范围 `0`-`1`
3951
+ * @param simplification - 简化,取值范围 `0`-`1`
3952
+ * @param smoothing - 平滑,取值范围 `0`-`1.33`
3953
+ * @param despeckling - 去斑,取值范围 `0`-`5`
3954
+ * @param whiteAsBackgroundColor - 是否白色作为背景色
3955
+ * @param inversion - 是否反相
3956
+ * @returns 复杂多边形对象
3701
3957
  */
3702
- renameRuleConfiguration(originalConfigurationName: string, configurationName: string): Promise<boolean>;
3958
+ convertImageToComplexPolygon(imageBlob: Blob, imageWidth: number, imageHeight: number, tolerance?: number, simplification?: number, smoothing?: number, despeckling?: number, whiteAsBackgroundColor?: boolean, inversion?: boolean): Promise<IPCB_ComplexPolygon | undefined>;
3959
+ private calculateBBoxWidth;
3960
+ }
3961
+ /**
3962
+ * 单多边形
3963
+ *
3964
+ * @public
3965
+ */
3966
+ class IPCB_Polygon {
3967
+ private polygon;
3968
+ /** @internal */
3969
+ constructor(polygon: TPCB_PolygonSourceArray);
3703
3970
  /**
3704
- * 删除设计规则配置
3971
+ * 获取单多边形数据
3705
3972
  *
3706
- * @beta
3707
- * @remarks 系统配置不允许删除
3708
- * @param configurationName - 配置名称
3709
- * @returns 删除是否成功
3973
+ * @public
3974
+ * @returns 单多边形数据
3710
3975
  */
3711
- deleteRuleConfiguration(configurationName: string): Promise<boolean>;
3976
+ getSource(): TPCB_PolygonSourceArray;
3712
3977
  /**
3713
- * 获取新建 PCB 默认设计规则配置的名称
3978
+ * 获取单多边形中心点
3714
3979
  *
3715
3980
  * @beta
3716
- * @returns 默认设计规则配置的名称,`undefined` 为获取失败
3981
+ * @returns 单多边形中心点
3717
3982
  */
3718
- getDefaultRuleConfigurationName(): Promise<string | undefined>;
3983
+ getCenter(): Promise<{
3984
+ x: number;
3985
+ y: number;
3986
+ }>;
3719
3987
  /**
3720
- * 设置为新建 PCB 默认设计规则配置
3988
+ * 将单多边形离散化为点数据
3721
3989
  *
3722
- * @beta
3723
- * @remarks 返回值为结果导向,重复设置相同的设计规则为默认设计规则也将返回 `true`
3724
- * @param configurationName - 配置名称
3725
- * @returns 设置是否成功
3990
+ * @alpha
3991
+ * @remarks 将单多边形的边界离散化为一系列点
3992
+ *
3993
+ * @param options - 离散化选项
3994
+ * @returns 离散化点数据
3726
3995
  */
3727
- setAsDefaultRuleConfiguration(configurationName: string): Promise<boolean>;
3996
+ discretize(options?: IPCB_DiscretizeOptions): Array<IPCB_DiscretizedPoint>;
3728
3997
  /**
3729
- * 覆写目前规则配置
3998
+ * 校验单多边形
3730
3999
  *
3731
4000
  * @beta
3732
- * @remarks 将会覆写当前 PCB 的目前规则管理,请注意数据丢失风险
3733
- * @param ruleManagement - 规则管理
3734
- * @returns 覆写是否成功
4001
+ * @remarks 校验并整理输入数据,如数据有误,则抛出错误
4002
+ * @returns 单多边形数据
3735
4003
  */
3736
- overwriteCurrentRuleConfiguration(ruleConfiguration: {
3737
- [key: string]: any;
3738
- }): Promise<boolean>;
4004
+ private validateSource;
4005
+ }
4006
+ /**
4007
+ * 复杂多边形
4008
+ *
4009
+ * @public
4010
+ * @remarks
4011
+ * 复杂多边形可以包含多个单多边形,通过 {@link https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/fill-rule | fill-rule} 将其组合,以实现多边形的布尔运算。
4012
+ * 目前嘉立创 EDA 专业版固定使用 {@link https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/fill-rule#nonzero | nonzero} 这个 fill-rule。
4013
+ */
4014
+ class IPCB_ComplexPolygon {
4015
+ private complexPolygon;
4016
+ /** @internal */
4017
+ constructor(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>);
3739
4018
  /**
3740
- * 获取网络规则
4019
+ * 添加多边形数据
3741
4020
  *
3742
- * @beta
3743
- * @returns 当前 PCB 的所有网络规则
3744
- */
3745
- getNetRules(): Promise<Array<{
3746
- [key: string]: any;
3747
- }>>;
4021
+ * @public
4022
+ * @param complexPolygon - 复杂多边形数据
4023
+ * @returns 复杂多边形对象
4024
+ */
4025
+ addSource(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>): IPCB_ComplexPolygon;
3748
4026
  /**
3749
- * 覆写网络规则
4027
+ * 获取多边形数据
3750
4028
  *
3751
- * @beta
3752
- * @remarks 将会覆写当前 PCB 的所有网络规则,请注意数据丢失风险
3753
- * @param netRules - 网络规则
3754
- * @returns 覆写是否成功
4029
+ * @public
4030
+ * @remarks 如遇仅包含单一的单多边形,将会化简最外层的数组
4031
+ * @returns 单多边形或复杂多边形数据
3755
4032
  */
3756
- overwriteNetRules(netRules: Array<{
3757
- [key: string]: any;
3758
- }>): Promise<boolean>;
4033
+ getSource(): TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>;
3759
4034
  /**
3760
- * 获取网络-网络规则
4035
+ * 获取复杂多边形数据
3761
4036
  *
3762
- * @beta
3763
- * @returns 当前 PCB 的所有网络-网络规则
4037
+ * @public
4038
+ * @remarks 强制返回复杂多边形格式数据,即使它仅包含单一的单多边形
4039
+ * @returns 复杂多边形数据
3764
4040
  */
3765
- getNetByNetRules(): Promise<{
3766
- [key: string]: any;
3767
- }>;
4041
+ getSourceStrictComplex(): Array<TPCB_PolygonSourceArray>;
3768
4042
  /**
3769
- * 覆写网络-网络规则
4043
+ * 获取复杂多边形中心点
3770
4044
  *
3771
- * @beta
3772
- * @remarks 将会覆写当前 PCB 的所有网络-网络规则,请注意数据丢失风险
3773
- * @param netByNetRules - 网络-网络规则
3774
- * @returns 覆写是否成功
4045
+ * @alpha
4046
+ * @returns 复杂多边形中心点
3775
4047
  */
3776
- overwriteNetByNetRules(netByNetRules: {
3777
- [key: string]: any;
3778
- }): Promise<boolean>;
4048
+ getCenter(): {
4049
+ x: number;
4050
+ y: number;
4051
+ };
3779
4052
  /**
3780
- * 获取区域规则
4053
+ * 拆分为单多边形数组
3781
4054
  *
3782
- * @beta
3783
- * @returns - 当前 PCB 的所有区域规则
4055
+ * @public
4056
+ * @remarks 将复杂多边形拆分为单多边形对象数组
4057
+ * @returns 单多边形数组
3784
4058
  */
3785
- getRegionRules(): Promise<Array<{
3786
- [key: string]: any;
3787
- }>>;
4059
+ toPolygon(): Array<IPCB_Polygon>;
3788
4060
  /**
3789
- * 覆写区域规则
4061
+ * 校验复杂多边形
3790
4062
  *
3791
4063
  * @beta
3792
- * @remarks 将会覆写当前 PCB 的所有区域规则,请注意数据丢失风险
3793
- * @param regionRules - 区域规则
3794
- * @returns 覆写是否成功
4064
+ * @returns 复杂多边形数据
3795
4065
  */
3796
- overwriteRegionRules(regionRules: Array<{
3797
- [key: string]: any;
3798
- }>): Promise<boolean>;
4066
+ private validateSource;
4067
+ }
4068
+
4069
+ /**
4070
+ * 图元类型
4071
+ *
4072
+ * @public
4073
+ */
4074
+ enum EPCB_PrimitiveType {
4075
+ /** 圆弧线 */
4076
+ ARC = "Arc",
4077
+ /** 器件 */
4078
+ COMPONENT = "Component",
4079
+ /** 焊盘 */
4080
+ PAD = "Pad",
4081
+ /** 器件焊盘 */
4082
+ COMPONENT_PAD = "ComponentPad",
4083
+ /** 折线 */
4084
+ POLYLINE = "Polyline",
4085
+ /** 覆铜边框 */
4086
+ POUR = "Pour",
4087
+ /** 填充 */
4088
+ FILL = "Fill",
4089
+ /** 区域 */
4090
+ REGION = "Region",
4091
+ /** 直线 */
4092
+ LINE = "Line",
4093
+ /** 过孔 */
4094
+ VIA = "Via",
4095
+ /** 尺寸标注 */
4096
+ DIMENSION = "Dimension",
4097
+ /** 图像 */
4098
+ IMAGE = "Image",
4099
+ /** 二进制内嵌对象 */
4100
+ OBJECT = "Object",
4101
+ /** 覆铜填充 */
4102
+ POURED = "Poured",
4103
+ /** 文本 */
4104
+ STRING = "String",
4105
+ /** 属性 */
4106
+ ATTRIBUTE = "Attribute"
4107
+ }
4108
+ /**
4109
+ * 阻焊/助焊扩展
4110
+ *
4111
+ * @public
4112
+ * @remarks
4113
+ * 本参数设置包含以下三类情况:
4114
+ *
4115
+ * 1. 当图元为顶层/底层贴片焊盘时,允许设置对应层的阻焊/助焊扩展,其余设置不生效
4116
+ *
4117
+ * 2. 当图元为通孔焊盘时,允许设置顶层/底层的阻焊扩展,助焊扩展的设置不生效
4118
+ *
4119
+ * 3. 当图元为过孔时,允许设置顶层/底层的阻焊扩展,助焊扩展的设置不生效,如若为盲孔,则视其暴露层生效其阻焊扩展设置
4120
+ *
4121
+ * 助焊扩展在一般情况下仅用于钢网生产等特定用途,不了解其作用请安心地忽略其参数设置
4122
+ */
4123
+ interface IPCB_PrimitiveSolderMaskAndPasteMaskExpansion {
4124
+ /** 顶层阻焊扩展 */
4125
+ topSolderMask?: number;
4126
+ /** 底层阻焊扩展 */
4127
+ bottomSolderMask?: number;
4128
+ /** 顶层助焊扩展 */
4129
+ topPasteMask?: number;
4130
+ /** 底层助焊扩展 */
4131
+ bottomPasteMask?: number;
4132
+ }
4133
+ /**
4134
+ * PCB & 封装 / 图元类
4135
+ *
4136
+ * @public
4137
+ * @remarks 图元的统一操作
4138
+ */
4139
+ class PCB_Primitive {
3799
4140
  /**
3800
- * 创建网络类
4141
+ * 获取指定 ID 的图元的图元类型
3801
4142
  *
3802
- * @beta
3803
- * @param netClassName - 网络类名称
3804
- * @param nets - 网络名称数组
3805
- * @param color - 网络类颜色
3806
- * @returns 操作是否成功
4143
+ * @alpha
4144
+ * @param id - 图元 ID
4145
+ * @returns 图元类型
3807
4146
  */
3808
- createNetClass(netClassName: string, nets: Array<string>, color: IPCB_EqualLengthNetGroupItem['color']): Promise<boolean>;
4147
+ getPrimitiveTypeByPrimitiveId(id: string): Promise<EPCB_PrimitiveType | undefined>;
3809
4148
  /**
3810
- * 删除网络类
4149
+ * 获取指定 ID 的图元的所有属性
3811
4150
  *
3812
- * @beta
3813
- * @param netClassName - 网络类名称
3814
- * @returns 操作是否成功
4151
+ * @alpha
4152
+ * @param id - 图元 ID
4153
+ * @returns 图元的所有属性
3815
4154
  */
3816
- deleteNetClass(netClassName: string): Promise<boolean>;
4155
+ getPrimitiveByPrimitiveId(id: string): Promise<IPCB_Primitive | undefined>;
3817
4156
  /**
3818
- * 修改网络类的名称
4157
+ * 获取指定所有 ID 的图元的所有属性
3819
4158
  *
3820
- * @beta
3821
- * @param originalNetClassName - 原网络类名称
3822
- * @param netClassName - 新网络类名称
3823
- * @returns 操作是否成功
4159
+ * @alpha
4160
+ * @param ids - 图元 ID 数组
4161
+ * @returns 所有图元的所有属性
3824
4162
  */
3825
- modifyNetClassName(originalNetClassName: string, netClassName: string): Promise<boolean>;
4163
+ getPrimitivesByPrimitiveId(ids: Array<string>): Promise<Array<IPCB_Primitive>>;
3826
4164
  /**
3827
- * 将网络添加到网络类
4165
+ * 获取图元的 BBox
3828
4166
  *
3829
4167
  * @beta
3830
- * @param netClassName - 网络类名称
3831
- * @param net - 网络名称
3832
- * @returns 操作是否成功
4168
+ * @param primitiveIds - 图元 ID 数组或图元对象数组
4169
+ * @returns 图元的 BBox,如若图元不存在或没有 BBox,将会返回 `undefined` 的结果
3833
4170
  */
3834
- addNetToNetClass(netClassName: string, net: string | Array<string>): Promise<boolean>;
4171
+ getPrimitivesBBox(primitiveIds: Array<string | IPCB_Primitive>): Promise<{
4172
+ minX: number;
4173
+ minY: number;
4174
+ maxX: number;
4175
+ maxY: number;
4176
+ } | undefined>;
3835
4177
  /**
3836
- * 从网络类中移除网络
4178
+ * 获取图元的边框线
3837
4179
  *
3838
- * @beta
3839
- * @param netClassName - 网络类名称
3840
- * @param net - 网络名称
3841
- * @returns 操作是否成功
4180
+ * @alpha
4181
+ * @param primitiveId - 图元 ID
4182
+ * @param layers - 需要计算的层,在计算器件、焊盘、过孔时能够精确计算指定多个层的边框线的并集
4183
+ * @returns 复杂多边形,如果图元 ID 未匹配或图元在指定层上不存在,则返回 `undefined`
3842
4184
  */
3843
- removeNetFromNetClass(netClassName: string, net: string | Array<string>): Promise<boolean>;
4185
+ getPrimitiveBoardLine(primitiveId: string, layers?: Array<EPCB_LayerId>): IPCB_ComplexPolygon | undefined;
4186
+ }
4187
+
4188
+ /**
4189
+ * PCB 图元接口
4190
+ *
4191
+ * @public
4192
+ */
4193
+ interface IPCB_PrimitiveAPI {
4194
+ create: (...args: any[]) => IPCB_Primitive | undefined | Promise<IPCB_Primitive> | Promise<IPCB_Primitive | undefined>;
4195
+ delete: (primitiveIds: string | any | Array<string> | Array<any>) => boolean | Promise<boolean>;
4196
+ modify: (primitiveId: string | any, ...args: any[]) => IPCB_Primitive | undefined | Promise<IPCB_Primitive> | Promise<IPCB_Primitive | undefined>;
4197
+ get: {
4198
+ (primitiveIds: string): IPCB_Primitive | undefined | Promise<IPCB_Primitive | undefined>;
4199
+ (primitiveIds: Array<string>): Array<IPCB_Primitive> | Promise<Array<IPCB_Primitive>>;
4200
+ };
4201
+ getAllPrimitiveId: (...args: any[]) => Array<string> | Promise<Array<string>>;
4202
+ getAll: (...args: any[]) => Array<IPCB_Primitive> | Promise<Array<IPCB_Primitive>>;
4203
+ }
4204
+ /**
4205
+ * PCB 图元
4206
+ *
4207
+ * @public
4208
+ */
4209
+ interface IPCB_Primitive {
4210
+ getState_PrimitiveType: () => EPCB_PrimitiveType;
4211
+ getState_PrimitiveId: () => string;
4212
+ create: () => IPCB_Primitive | Promise<IPCB_Primitive>;
4213
+ toAsync: () => IPCB_Primitive;
4214
+ toSync: () => IPCB_Primitive;
4215
+ isAsync: () => boolean;
4216
+ reset: () => IPCB_Primitive | Promise<IPCB_Primitive>;
4217
+ done: () => IPCB_Primitive | Promise<IPCB_Primitive>;
4218
+ }
4219
+
4220
+ /**
4221
+ * 文档飞线计算功能状态
4222
+ *
4223
+ * @public
4224
+ */
4225
+ enum EPCB_DocumentRatlineCalculatingActiveStatus {
4226
+ /** 启用 */
4227
+ ACTIVE = "active",
4228
+ /** 停用 */
4229
+ INACTIVE = "inactive"
4230
+ }
4231
+ /**
4232
+ * PCB & 封装 / 文档操作类
4233
+ *
4234
+ * @public
4235
+ * @remarks 对设计文档总体进行的操作
4236
+ */
4237
+ class PCB_Document {
3844
4238
  /**
3845
- * 获取所有网络类的详细属性
4239
+ * 从原理图导入变更
3846
4240
  *
3847
- * @beta
3848
- * @returns 所有网络类的详细属性
4241
+ * @public
4242
+ * @param uuid - 原理图 UUID,默认为关联在同一个 Board 下的原理图
4243
+ * @returns 导入操作是否成功,导入失败或未传入原理图 UUID 的游离 PCB 将返回 `false`
3849
4244
  */
3850
- getAllNetClasses(): Promise<Array<IPCB_NetClassItem>>;
4245
+ importChanges(uuid?: string): Promise<boolean>;
3851
4246
  /**
3852
- * 创建差分对
4247
+ * 导入自动布线文件(JSON)
3853
4248
  *
3854
4249
  * @beta
3855
- * @param differentialPairName - 差分对名称
3856
- * @param positiveNet - 正网络名称
3857
- * @param negativeNet - 负网络名称
3858
- * @returns 操作是否成功
4250
+ * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
4251
+ * @param autoRouteFile - 欲导入的 JSON 文件
4252
+ * @returns 导入操作是否成功
3859
4253
  */
3860
- createDifferentialPair(differentialPairName: string, positiveNet: string, negativeNet: string): Promise<boolean>;
4254
+ importAutoRouteJsonFile(autoRouteFile: File): Promise<boolean>;
3861
4255
  /**
3862
- * 删除差分对
4256
+ * 导入自动布线文件(SES)
3863
4257
  *
3864
4258
  * @beta
3865
- * @param differentialPairName - 差分对名称
3866
- * @returns 操作是否成功
4259
+ * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
4260
+ * @param autoRouteFile - 欲导入的 SES 文件
4261
+ * @returns 导入操作是否成功
3867
4262
  */
3868
- deleteDifferentialPair(differentialPairName: string): Promise<boolean>;
4263
+ importAutoRouteSesFile(autoRouteFile: File): Promise<boolean>;
3869
4264
  /**
3870
- * 修改差分对的名称
4265
+ * 导入自动布局文件(JSON)
3871
4266
  *
3872
4267
  * @beta
3873
- * @param originalDifferentialPairName - 原差分对名称
3874
- * @param differentialPairName - 新差分对名称
3875
- * @returns 操作是否成功
4268
+ * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
4269
+ * @param autoLayoutFile - 欲导入的 JSON 文件
4270
+ * @returns 导入操作是否成功
3876
4271
  */
3877
- modifyDifferentialPairName(originalDifferentialPairName: string, differentialPairName: string): Promise<boolean>;
4272
+ importAutoLayoutJsonFile(autoLayoutFile: File): Promise<boolean>;
3878
4273
  /**
3879
- * 修改差分对正网络
4274
+ * 保存文档
3880
4275
  *
3881
- * @beta
3882
- * @param differentialPairName - 差分对名称
3883
- * @param positiveNet - 正网络名称
3884
- * @returns 操作是否成功
4276
+ * @public
4277
+ * @returns 保存操作是否成功,保存失败、上传失败等错误均返回 `false`
3885
4278
  */
3886
- modifyDifferentialPairPositiveNet(differentialPairName: string, positiveNet: string): Promise<boolean>;
4279
+ save(uuid: string): Promise<boolean>;
3887
4280
  /**
3888
- * 修改差分对负网络
4281
+ * 获取当前飞线计算功能状态
3889
4282
  *
3890
- * @beta
3891
- * @param differentialPairName - 差分对名称
3892
- * @param negativeNet - 负网络名称
3893
- * @returns 操作是否成功
4283
+ * @public
4284
+ * @returns 功能状态
3894
4285
  */
3895
- modifyDifferentialPairNegativeNet(differentialPairName: string, negativeNet: string): Promise<boolean>;
4286
+ getCalculatingRatlineStatus(): Promise<EPCB_DocumentRatlineCalculatingActiveStatus>;
3896
4287
  /**
3897
- * 获取所有差分对的详细属性
3898
- *
3899
- * @beta
3900
- * @remarks
3901
- * BREAKING CHANGE since EDA v3.4
4288
+ * 启动飞线计算功能
3902
4289
  *
3903
- * - 返回值类型更改为对象
3904
- * @returns 所有差分对的详细属性
4290
+ * @public
4291
+ * @remarks 在启动时将会触发一次飞线计算
4292
+ * @returns 操作是否成功
3905
4293
  */
3906
- getAllDifferentialPairs(): Promise<Array<IPCB_DifferentialPairItem> | {
3907
- [key: string]: any;
3908
- }>;
4294
+ startCalculatingRatline(): Promise<boolean>;
3909
4295
  /**
3910
- * 创建等长网络组
4296
+ * 停止飞线计算功能
3911
4297
  *
3912
- * @beta
3913
- * @param equalLengthNetGroupName - 等长网络组名称
3914
- * @param nets - 网络名称数组
3915
- * @param color - 等长网络组颜色
4298
+ * @public
3916
4299
  * @returns 操作是否成功
3917
4300
  */
3918
- createEqualLengthNetGroup(equalLengthNetGroupName: string, nets: Array<string>, color: IPCB_EqualLengthNetGroupItem['color']): Promise<boolean>;
4301
+ stopCalculatingRatline(): Promise<boolean>;
3919
4302
  /**
3920
- * 删除等长网络组
4303
+ * 输入画布坐标返回该坐标对应的数据坐标
3921
4304
  *
3922
- * @beta
3923
- * @param equalLengthNetGroupName - 等长网络组名称
3924
- * @returns 操作是否成功
4305
+ * @public
4306
+ * @remarks 嘉立创 EDA 前端显示的坐标均为画布原点;嘉立创 EDA API 使用的均为数据原点;在创建 PCB 时,默认画布原点等于数据原点
4307
+ * @param canvasOriginX - 画布原点 X
4308
+ * @param canvasOriginY - 画布原点 Y
4309
+ * @returns 数据原点坐标
3925
4310
  */
3926
- deleteEqualLengthNetGroup(equalLengthNetGroupName: string): Promise<boolean>;
4311
+ convertCanvasOriginToDataOrigin(x: number, y: number): Promise<{
4312
+ x: number;
4313
+ y: number;
4314
+ }>;
3927
4315
  /**
3928
- * 修改等长网络组的名称
4316
+ * 输入数据坐标返回该坐标对应的画布坐标
3929
4317
  *
3930
- * @beta
3931
- * @param originalEqualLengthNetGroupName - 原等长网络组名称
3932
- * @param equalLengthNetGroupName - 新等长网络组名称
3933
- * @returns 操作是否成功
4318
+ * @public
4319
+ * @remarks 嘉立创 EDA 前端显示的坐标均为画布原点;嘉立创 EDA API 使用的均为数据原点;在创建 PCB 时,默认画布原点等于数据原点
4320
+ * @param x - 数据原点 X
4321
+ * @param y - 数据原点 Y
4322
+ * @returns 画布原点坐标
3934
4323
  */
3935
- modifyEqualLengthNetGroupName(originalEqualLengthNetGroupName: string, equalLengthNetGroupName: string): Promise<boolean>;
4324
+ convertDataOriginToCanvasOrigin(x: number, y: number): Promise<{
4325
+ x: number;
4326
+ y: number;
4327
+ }>;
3936
4328
  /**
3937
- * 将网络添加到等长网络组
4329
+ * 获取画布原点相对于数据原点的偏移坐标
3938
4330
  *
3939
- * @beta
3940
- * @param equalLengthNetGroupName - 等长网络组名称
3941
- * @param net - 网络名称
3942
- * @returns 操作是否成功
4331
+ * @public
4332
+ * @remarks
4333
+ * 嘉立创 EDA 专业版前端显示的坐标均为画布原点;
4334
+ *
4335
+ * 嘉立创 EDA 专业版 API 使用的均为数据原点;
4336
+ *
4337
+ * 如果返回的数据为 `{ canvasOriginOffsetX: 100, canvasOriginOffsetY: 200 }`,
4338
+ * 则代表画布原点在数据原点的向右 100 单位且向上 200 单位的位置;
4339
+ *
4340
+ * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
4341
+ * @returns 画布原点相对于数据原点的偏移坐标
3943
4342
  */
3944
- addNetToEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4343
+ getCanvasOrigin(): Promise<{
4344
+ offsetX: number;
4345
+ offsetY: number;
4346
+ }>;
3945
4347
  /**
3946
- * 从等长网络组中移除网络
4348
+ * 设置画布原点相对于数据原点的偏移坐标
3947
4349
  *
3948
- * @beta
3949
- * @param equalLengthNetGroupName - 等长网络组名称
3950
- * @param net - 网络名称
4350
+ * @public
4351
+ * @remarks
4352
+ * 嘉立创 EDA 专业版前端显示的坐标均为画布原点;
4353
+ *
4354
+ * 嘉立创 EDA 专业版 API 使用的均为数据原点;
4355
+ *
4356
+ * 如果希望在 API 操作时前端画布坐标能与数据一致,
4357
+ * 建议调用本方法并设置偏移量为零,
4358
+ * 即 `setCanvasOrigin(0, 0)`;
4359
+ *
4360
+ * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
4361
+ * @param offsetX - 画布原点相对于数据原点的 X 坐标偏移
4362
+ * @param offsetY - 画布原点相对于数据原点的 Y 坐标偏移
3951
4363
  * @returns 操作是否成功
3952
4364
  */
3953
- removeNetFromEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4365
+ setCanvasOrigin(offsetX: number, offsetY: number): Promise<boolean>;
3954
4366
  /**
3955
- * 获取所有等长网络组的详细属性
4367
+ * 定位到画布坐标
3956
4368
  *
3957
- * @beta
3958
- * @returns 所有等长网络组的详细属性
3959
- */
3960
- getAllEqualLengthNetGroups(): Promise<Array<IPCB_EqualLengthNetGroupItem>>;
3961
- /**
3962
- * 创建焊盘对组
4369
+ * @public
4370
+ * @remarks
4371
+ * 本接口在前端画布上定位到指定的数据层面坐标;
3963
4372
  *
3964
- * @beta
3965
- * @param padPairGroupName - 焊盘对组名称
3966
- * @param padPairs - 焊盘对数组
4373
+ * 如果希望在进行本操作时前端画布坐标能与传入数据一致,
4374
+ * 建议调用 {@link PCB_Document.setCanvasOrigin} 方法并设置偏移量为零;
4375
+ *
4376
+ * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
4377
+ * @param x - 坐标 X
4378
+ * @param y - 坐标 Y
3967
4379
  * @returns 操作是否成功
3968
- * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
3969
- * await eda.pcb_Drc.createPadPairGroup('test',[['e0','e1']]) // 游离焊盘-游离焊盘
3970
- * await eda.pcb_Drc.createPadPairGroup('test',[['R1:1','R1:2'],['R2:1','R2:2']]) // 器件焊盘 - 器件焊盘
3971
- * await eda.pcb_Drc.createPadPairGroup('test',[['R1:1','e0'],['R1:2','e1']]) // 器件焊盘 - 游离焊盘
3972
4380
  */
3973
- createPadPairGroup(padPairGroupName: string, padPairs: Array<[string, string]>): Promise<boolean>;
4381
+ navigateToCoordinates(x: number, y: number): Promise<boolean>;
3974
4382
  /**
3975
- * 删除焊盘对组
4383
+ * 定位到画布区域
3976
4384
  *
3977
4385
  * @beta
3978
- * @param padPairGroupName - 焊盘对组名称
4386
+ * @remarks
4387
+ * 本接口在前端画布上定位到指定的区域,区域数据为相对于数据原点的偏移;
4388
+ *
4389
+ * 例如:传入数据为 `{left: 0, right: 60, top: 100, bottom: -20}` =\> `navigateToRegion(0, 60, 100, -20)`,
4390
+ * 则画布将会定位到以 `[30, 40]` 为中心的,`x` 轴方向长度为 `60`,`y` 轴方向长度为 `120` 的矩形范围;
4391
+ *
4392
+ * 本接口不进行缩放操作,但会生成指示定位中心及表示区域范围的矩形框;
4393
+ *
4394
+ * 此处的单位为数据层面单位,在跨度上等同于画布层面的 mil
4395
+ * @param left - 矩形框第一 X 坐标
4396
+ * @param right - 矩形框第二 X 坐标
4397
+ * @param top - 矩形框第一 Y 坐标
4398
+ * @param bottom - 矩形框第二 Y 坐标
3979
4399
  * @returns 操作是否成功
3980
4400
  */
3981
- deletePadPairGroup(padPairGroupName: string): Promise<boolean>;
4401
+ navigateToRegion(left: number, right: number, top: number, bottom: number): Promise<boolean>;
3982
4402
  /**
3983
- * 修改焊盘对组的名称
4403
+ * 获取坐标点的图元
3984
4404
  *
3985
4405
  * @beta
3986
- * @param originalPadPairGroupName - 原焊盘对组名称
3987
- * @param padPairGroupName - 新焊盘对组名称
3988
- * @returns 操作是否成功
4406
+ * @remarks 本操作和前端鼠标点击操作类似,将会获取指定坐标点上的图元
4407
+ * @param x - 坐标点 X
4408
+ * @param y - 坐标点 Y
4409
+ * @returns 坐标点的图元,如若坐标点无法找到图元,将返回 `undefined`
3989
4410
  */
3990
- modifyPadPairGroupName(originalPadPairGroupName: string, padPairGroupName: string): Promise<boolean>;
4411
+ getPrimitiveAtPoint(x: number, y: number): Promise<IPCB_Primitive | undefined>;
3991
4412
  /**
3992
- * 将焊盘对添加到焊盘对组
4413
+ * 获取区域内所有图元
3993
4414
  *
3994
4415
  * @beta
3995
- * @param padPairGroupName - 焊盘对组名称
3996
- * @param padPair - 焊盘对
3997
- * @returns 操作是否成功
3998
- * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
3999
- * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['e0','e1']) // 游离焊盘-游离焊盘
4000
- * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['R1:1','R1:2']) // 器件焊盘 - 器件焊盘
4001
- * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['R1:1','e1']) // 器件焊盘 - 游离焊盘
4416
+ * @param left - 矩形框第一 X 坐标
4417
+ * @param right - 矩形框第二 X 坐标
4418
+ * @param top - 矩形框第一 Y 坐标
4419
+ * @param bottom - 矩形框第二 Y 坐标
4420
+ * @param leftToRight - 是否仅获取完全框选的图元,`false` 则触碰即获取
4421
+ * @returns 区域内所有图元
4002
4422
  */
4003
- addPadPairToPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4423
+ getPrimitivesInRegion(left: number, right: number, top: number, bottom: number, leftToRight?: boolean): Promise<Array<IPCB_Primitive>>;
4004
4424
  /**
4005
- * 从焊盘对组中移除焊盘对
4425
+ * 缩放到板框(适应板框)
4006
4426
  *
4007
4427
  * @beta
4008
- * @param padPairGroupName - 焊盘对组名称
4009
- * @param padPair - 焊盘对
4010
4428
  * @returns 操作是否成功
4011
- * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
4012
- * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['e0','e1']) // 游离焊盘-游离焊盘
4013
- * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['R1:1','R1:2']) // 器件焊盘 - 器件焊盘
4014
- * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['R1:2','e1']) // 器件焊盘 - 游离焊盘
4015
4429
  */
4016
- removePadPairFromPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4430
+ zoomToBoardOutline(): Promise<boolean>;
4017
4431
  /**
4018
- * 获取所有焊盘对组的详细属性
4432
+ * 获取当前画布过滤器配置
4019
4433
  *
4020
4434
  * @beta
4021
- * @returns 所有焊盘对组的详细属性
4435
+ * @returns 当前画布过滤器配置,`undefined` 为获取失败
4022
4436
  */
4023
- getAllPadPairGroups(): Promise<Array<IPCB_PadPairGroupItem>>;
4437
+ getCurrentFilterConfiguration(): Promise<{
4438
+ [key: string]: any;
4439
+ } | undefined>;
4024
4440
  /**
4025
- * 获取焊盘对组最短导线长度
4441
+ * 清除布线
4026
4442
  *
4027
- * @beta
4028
- * @param padPairGroupName - 焊盘对组名称
4029
- * @returns 所有焊盘对的最短导线长度
4443
+ * @alpha
4444
+ * @param type - 清除类型,如若需要指定清除类型,请提前选择指定图元
4030
4445
  */
4031
- getPadPairGroupMinWireLength(padPairGroupName: string): Promise<Array<IPCB_PadPairMinWireLengthItem>>;
4446
+ clearRouting(type?: 'all' | 'net' | 'connection'): Promise<boolean>;
4032
4447
  }
4033
4448
 
4034
4449
  /**
4035
- * 鼠标事件类型
4450
+ * 网络类属性
4036
4451
  *
4037
4452
  * @public
4038
4453
  */
4039
- enum EPCB_MouseEventType {
4040
- /** 选中 */
4041
- SELECTED = "selected",
4042
- /** 取消选中 */
4043
- CLEAR_SELECTED = "clearSelected",
4044
- /** 移动 */
4045
- MOVE = "move"
4046
- }
4047
- /**
4048
- * 图元事件类型
4049
- *
4454
+ interface IPCB_NetClassItem {
4455
+ /** 网络类名称 */
4456
+ name: string;
4457
+ /** 网络名称数组 */
4458
+ nets: Array<string>;
4459
+ /** 网络类颜色 */
4460
+ color: {
4461
+ r: number;
4462
+ g: number;
4463
+ b: number;
4464
+ alpha: number;
4465
+ } | null;
4466
+ }
4467
+ /**
4468
+ * 差分对属性
4469
+ *
4050
4470
  * @public
4051
4471
  */
4052
- enum EPCB_PrimitiveEventType {
4053
- /** 删除 */
4054
- DELETE = "delete",
4055
- /** 创建 */
4056
- CREATE = "add",
4057
- /** 属性变更 */
4058
- MODIFY = "modify"
4472
+ interface IPCB_DifferentialPairItem {
4473
+ /** 差分对名称 */
4474
+ name: string;
4475
+ /** 正网络 */
4476
+ positiveNet: string;
4477
+ /** 负网络 */
4478
+ negativeNet: string;
4059
4479
  }
4060
4480
  /**
4061
- * 网络事件类型
4481
+ * 等长网络组属性
4062
4482
  *
4063
4483
  * @public
4064
4484
  */
4065
- enum EPCB_NetEventType {
4066
- /** 新增 */
4067
- ADD = "add",
4068
- /** 移除 */
4069
- REMOVE = "remove",
4070
- /** 选中(仅当选中整个网络时触发) */
4071
- SELECTED = "selected"
4485
+ interface IPCB_EqualLengthNetGroupItem {
4486
+ /** 等长网络组名称 */
4487
+ name: string;
4488
+ /** 网络名称数组 */
4489
+ nets: Array<string>;
4490
+ /** 等长网络组颜色 */
4491
+ color: {
4492
+ r: number;
4493
+ g: number;
4494
+ b: number;
4495
+ alpha: number;
4496
+ } | null;
4072
4497
  }
4073
4498
  /**
4074
- * PCB & 封装 / 事件类
4499
+ * 焊盘对组属性
4075
4500
  *
4076
4501
  * @public
4077
- * @remarks 注册事件回调
4078
4502
  */
4079
- class PCB_Event {
4080
- /** 扩展 UUID */
4081
- private extensionUuid?;
4503
+ interface IPCB_PadPairGroupItem {
4504
+ /** 焊盘对组名称 */
4505
+ name: string;
4506
+ /** 焊盘对数组 */
4507
+ padPairs: Array<[string, string]>;
4508
+ }
4509
+ /**
4510
+ * 焊盘对最短导线长度属性
4511
+ *
4512
+ * @public
4513
+ */
4514
+ interface IPCB_PadPairMinWireLengthItem {
4515
+ /** 焊盘对数组 */
4516
+ padPair: [string, string];
4517
+ /** 最短导线长度 */
4518
+ minWireLength: number;
4519
+ }
4520
+ /**
4521
+ * PCB & 封装 / 设计规则检查(DRC)类
4522
+ *
4523
+ * @public
4524
+ * @remarks 检查、设定 DRC 规则
4525
+ */
4526
+ class PCB_Drc {
4082
4527
  /**
4083
- * @internal
4084
- * @param extensionUuid - 扩展 UUID
4528
+ * 检查 DRC
4529
+ *
4530
+ * @beta
4531
+ * @param strict - 是否严格检查,当前 PCB 统一为严格检查模式
4532
+ * @param userInterface - 是否显示 UI(呼出底部 DRC 窗口)
4533
+ * @param includeVerboseError - 是否在返回值中包含详细错误信息,如若为 `true`,则返回值将始终为数组
4534
+ * @returns DRC 检查是否通过
4085
4535
  */
4086
- constructor(extensionUuid?: string);
4536
+ check(strict: boolean, userInterface: boolean, includeVerboseError: false): Promise<boolean>;
4087
4537
  /**
4088
- * 新增鼠标事件监听
4538
+ * 检查 DRC
4089
4539
  *
4090
4540
  * @beta
4091
- * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
4092
- * @param id - 事件 ID,用以防止重复注册事件
4093
- * @param eventType - 事件类型
4094
- * @param callFn - 事件触发时的回调函数
4095
- * @param onlyOnce - 是否仅监听一次
4541
+ * @param strict - 是否严格检查,当前 PCB 统一为严格检查模式
4542
+ * @param userInterface - 是否显示 UI(呼出底部 DRC 窗口)
4543
+ * @param includeVerboseError - 是否在返回值中包含详细错误信息,如若为 `true`,则返回值将始终为数组
4544
+ * @returns DRC 检查的详细结果
4096
4545
  */
4097
- addMouseEventListener(id: string, eventType: 'all' | EPCB_MouseEventType, callFn: (eventType: EPCB_MouseEventType, props: [
4098
- {
4099
- primitiveId: string;
4100
- primitiveType: EPCB_PrimitiveType;
4101
- net?: string;
4102
- designator?: string;
4103
- parentComponentPrimitiveId?: string;
4104
- parentComponentDesignator?: string;
4105
- }
4106
- ]) => void | Promise<void>, onlyOnce?: boolean): void;
4546
+ check(strict: boolean, userInterface: boolean, includeVerboseError: true): Promise<Array<any>>;
4107
4547
  /**
4108
- * 新增图元事件监听
4548
+ * 获取实时 DRC 检查状态
4549
+ *
4550
+ * @alpha
4551
+ * @returns 实时 DRC 检查状态,实时 DRC 已停止、不处于 PCB 或获取失败均返回 `false`
4552
+ */
4553
+ getRealTimeDrcStatus(): boolean;
4554
+ /**
4555
+ * 开始实时 DRC 检查
4556
+ *
4557
+ * @alpha
4558
+ * @remarks 本接口返回值为结果导向,调用本接口前已启用实时 DRC 检查也将返回 `true`
4559
+ * @returns 是否成功启用实时 DRC 检查
4560
+ */
4561
+ startRealTimeDrc(): boolean;
4562
+ /**
4563
+ * 停止实时 DRC 检查
4564
+ *
4565
+ * @alpha
4566
+ * @remarks 本接口返回值为结果导向,调用本接口前已停用实时 DRC 检查也将返回 `true`
4567
+ * @returns 是否成功停用实时 DRC 检查
4568
+ */
4569
+ stopRealTimeDrc(): boolean;
4570
+ /**
4571
+ * 获取当前设计规则配置名称
4572
+ *
4573
+ * @public
4574
+ * @returns 当前设计规则配置名称,`undefined` 为获取失败
4575
+ */
4576
+ getCurrentRuleConfigurationName(): Promise<string | undefined>;
4577
+ /**
4578
+ * 获取当前设计规则配置
4109
4579
  *
4110
4580
  * @beta
4111
- * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
4112
- * @param id - 事件 ID,用以防止重复注册事件
4113
- * @param eventType - 事件类型
4114
- * @param callFn - 事件触发时的回调函数
4115
- * @param onlyOnce - 是否仅监听一次
4581
+ * @returns 当前设计规则配置,`undefined` 为获取失败
4116
4582
  */
4117
- addPrimitiveEventListener(id: string, eventType: 'all' | EPCB_PrimitiveEventType, callFn: (eventType: EPCB_PrimitiveEventType, props: [
4118
- {
4119
- primitiveId: string;
4120
- primitiveType: EPCB_PrimitiveType;
4121
- net?: string;
4122
- designator?: string;
4123
- parentComponentPrimitiveId?: string;
4124
- parentComponentDesignator?: string;
4125
- }
4126
- ]) => void | Promise<void>, onlyOnce?: boolean): void;
4583
+ getCurrentRuleConfiguration(): Promise<{
4584
+ [key: string]: any;
4585
+ } | undefined>;
4127
4586
  /**
4128
- * 新增网络事件监听
4587
+ * 获取指定设计规则配置
4588
+ *
4589
+ * @public
4590
+ * @param configurationName - 配置名称
4591
+ * @returns 设计规则配置,`undefined` 为不存在该设计规则
4592
+ */
4593
+ getRuleConfiguration(configurationName: string): Promise<{
4594
+ [key: string]: any;
4595
+ } | undefined>;
4596
+ /**
4597
+ * 获取所有设计规则配置
4129
4598
  *
4130
4599
  * @beta
4131
- * @remarks
4132
- * 网络选中事件仅
4600
+ * @param includeSystem - 是否获取系统设计规则配置
4601
+ * @returns 所有设计规则配置
4602
+ */
4603
+ getAllRuleConfigurations(includeSystem?: boolean): Promise<Array<{
4604
+ [key: string]: any;
4605
+ }>>;
4606
+ /**
4607
+ * 保存设计规则配置
4133
4608
  *
4134
- * ①在过滤面板选中网络选项并在画布选中网络时
4609
+ * @beta
4610
+ * @remarks 只有自定义配置可以覆盖保存,系统配置不允许修改和覆盖
4611
+ * @param ruleConfiguration - 设计规则配置
4612
+ * @param configurationName - 配置名称
4613
+ * @param allowOverwrite - 是否允许覆写同名设计规则配置,`false` 则将在遇到同名设计规则配置时返回 `false`,请注意可能的数据丢失风险
4614
+ * @returns 保存是否成功
4615
+ */
4616
+ saveRuleConfiguration(ruleConfiguration: {
4617
+ [key: string]: any;
4618
+ }, configurationName: string, allowOverwrite?: boolean): Promise<boolean>;
4619
+ /**
4620
+ * 重命名设计规则配置
4135
4621
  *
4136
- * ②在工程设计 -\> 网络内选中网络时
4622
+ * @beta
4623
+ * @remarks 只有自定义配置可以重命名,系统配置不允许重命名
4624
+ * @param originalConfigurationName - 原设计规则配置名称
4625
+ * @param configurationName - 新设计规则配置名称
4626
+ * @returns 重命名是否成功
4627
+ */
4628
+ renameRuleConfiguration(originalConfigurationName: string, configurationName: string): Promise<boolean>;
4629
+ /**
4630
+ * 删除设计规则配置
4137
4631
  *
4138
- * 会被触发
4632
+ * @beta
4633
+ * @remarks 系统配置不允许删除
4634
+ * @param configurationName - 配置名称
4635
+ * @returns 删除是否成功
4636
+ */
4637
+ deleteRuleConfiguration(configurationName: string): Promise<boolean>;
4638
+ /**
4639
+ * 获取新建 PCB 默认设计规则配置的名称
4139
4640
  *
4140
- * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
4141
- * @param id - 事件 ID,用以防止重复注册事件
4142
- * @param eventType - 事件类型
4143
- * @param callFn - 事件触发时的回调函数
4144
- * @param onlyOnce - 是否仅监听一次
4641
+ * @beta
4642
+ * @returns 默认设计规则配置的名称,`undefined` 为获取失败
4145
4643
  */
4146
- addNetEventListener(id: string, eventType: 'all' | EPCB_NetEventType, callFn: (eventType: EPCB_NetEventType, props: [{
4147
- net: string;
4148
- }]) => void | Promise<void>, onlyOnce?: boolean): void;
4644
+ getDefaultRuleConfigurationName(): Promise<string | undefined>;
4149
4645
  /**
4150
- * 新增交叉选择事件监听
4646
+ * 设置为新建 PCB 默认设计规则配置
4151
4647
  *
4152
4648
  * @beta
4153
- * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
4154
- * @param id - 事件 ID,用以防止重复注册事件
4155
- * @param callFn - 事件触发时的回调函数
4649
+ * @remarks 返回值为结果导向,重复设置相同的设计规则为默认设计规则也将返回 `true`
4650
+ * @param configurationName - 配置名称
4651
+ * @returns 设置是否成功
4156
4652
  */
4157
- addCrossProbeSelectEventListener(id: string, callFn: (props: any) => void | Promise<void>): void;
4653
+ setAsDefaultRuleConfiguration(configurationName: string): Promise<boolean>;
4158
4654
  /**
4159
- * 移除事件监听
4655
+ * 覆写当前设计规则配置
4160
4656
  *
4161
- * @public
4162
- * @param id - 事件 ID
4163
- * @returns 是否移除指定事件监听
4657
+ * @beta
4658
+ * @remarks 将会覆写 PCB 当前的设计规则配置,请注意数据丢失风险
4659
+ * @param ruleConfiguration - 设计规则配置
4660
+ * @returns 覆写是否成功
4164
4661
  */
4165
- removeEventListener(id: string): boolean;
4662
+ overwriteCurrentRuleConfiguration(ruleConfiguration: {
4663
+ [key: string]: any;
4664
+ }): Promise<boolean>;
4166
4665
  /**
4167
- * 查询事件监听是否存在
4666
+ * 获取网络规则
4168
4667
  *
4169
- * @public
4170
- * @param id - 事件 ID
4171
- * @returns 事件监听是否存在
4668
+ * @beta
4669
+ * @returns 当前 PCB 的所有网络规则
4172
4670
  */
4173
- isEventListenerAlreadyExist(id: string): boolean;
4174
- }
4175
-
4176
- /**
4177
- * 图层 ID
4178
- *
4179
- * @public
4180
- */
4181
- enum EPCB_LayerId {
4182
- /** 顶层 */
4183
- TOP = 1,
4184
- /** 顶层丝印层 */
4185
- TOP_SILKSCREEN = 3,
4186
- /** 顶层阻焊层 */
4187
- TOP_SOLDER_MASK = 5,
4188
- /** 顶层锡膏(助焊)层 */
4189
- TOP_PASTE_MASK = 7,
4190
- /** 顶层装配层 */
4191
- TOP_ASSEMBLY = 9,
4192
- /** 顶层 FPC 补强层 */
4193
- TOP_STIFFENER = 58,
4194
- /** 底层 */
4195
- BOTTOM = 2,
4196
- /** 底层丝印层 */
4197
- BOTTOM_SILKSCREEN = 4,
4198
- /** 底层阻焊层 */
4199
- BOTTOM_SOLDER_MASK = 6,
4200
- /** 底层锡膏(助焊)层 */
4201
- BOTTOM_PASTE_MASK = 8,
4202
- /** 底层装配层 */
4203
- BOTTOM_ASSEMBLY = 10,
4204
- /** 底层 FPC 补强层 */
4205
- BOTTOM_STIFFENER = 59,
4206
- /** 板框层 */
4207
- BOARD_OUTLINE = 11,
4208
- /** 多层 */
4209
- MULTI = 12,
4210
- /** 文档层 */
4211
- DOCUMENT = 13,
4212
- /** 机械层 */
4213
- MECHANICAL = 14,
4214
- /** 飞线层 */
4215
- RATLINE = 57,
4216
- /** 内层 1 */
4217
- INNER_1 = 15,
4218
- /** 内层 2 */
4219
- INNER_2 = 16,
4220
- /** 内层 3 */
4221
- INNER_3 = 17,
4222
- /** 内层 4 */
4223
- INNER_4 = 18,
4224
- /** 内层 5 */
4225
- INNER_5 = 19,
4226
- /** 内层 6 */
4227
- INNER_6 = 20,
4228
- /** 内层 7 */
4229
- INNER_7 = 21,
4230
- /** 内层 8 */
4231
- INNER_8 = 22,
4232
- /** 内层 9 */
4233
- INNER_9 = 23,
4234
- /** 内层 10 */
4235
- INNER_10 = 24,
4236
- /** 内层 11 */
4237
- INNER_11 = 25,
4238
- /** 内层 12 */
4239
- INNER_12 = 26,
4240
- /** 内层 13 */
4241
- INNER_13 = 27,
4242
- /** 内层 14 */
4243
- INNER_14 = 28,
4244
- /** 内层 15 */
4245
- INNER_15 = 29,
4246
- /** 内层 16 */
4247
- INNER_16 = 30,
4248
- /** 内层 17 */
4249
- INNER_17 = 31,
4250
- /** 内层 18 */
4251
- INNER_18 = 32,
4252
- /** 内层 19 */
4253
- INNER_19 = 33,
4254
- /** 内层 20 */
4255
- INNER_20 = 34,
4256
- /** 内层 21 */
4257
- INNER_21 = 35,
4258
- /** 内层 22 */
4259
- INNER_22 = 36,
4260
- /** 内层 23 */
4261
- INNER_23 = 37,
4262
- /** 内层 24 */
4263
- INNER_24 = 38,
4264
- /** 内层 25 */
4265
- INNER_25 = 39,
4266
- /** 内层 26 */
4267
- INNER_26 = 40,
4268
- /** 内层 27 */
4269
- INNER_27 = 41,
4270
- /** 内层 28 */
4271
- INNER_28 = 42,
4272
- /** 内层 29 */
4273
- INNER_29 = 43,
4274
- /** 内层 30 */
4275
- INNER_30 = 44,
4276
- /** 内层 31 */
4277
- /** 内层 32 */
4278
- /** 自定义层 1 */
4279
- CUSTOM_1 = 71,
4280
- /** 自定义层 2 */
4281
- CUSTOM_2 = 72,
4282
- /** 自定义层 3 */
4283
- CUSTOM_3 = 73,
4284
- /** 自定义层 4 */
4285
- CUSTOM_4 = 74,
4286
- /** 自定义层 5 */
4287
- CUSTOM_5 = 75,
4288
- /** 自定义层 6 */
4289
- CUSTOM_6 = 76,
4290
- /** 自定义层 7 */
4291
- CUSTOM_7 = 77,
4292
- /** 自定义层 8 */
4293
- CUSTOM_8 = 78,
4294
- /** 自定义层 9 */
4295
- CUSTOM_9 = 79,
4296
- /** 自定义层 10 */
4297
- CUSTOM_10 = 80,
4298
- /** 自定义层 11 */
4299
- CUSTOM_11 = 81,
4300
- /** 自定义层 12 */
4301
- CUSTOM_12 = 82,
4302
- /** 自定义层 13 */
4303
- CUSTOM_13 = 83,
4304
- /** 自定义层 14 */
4305
- CUSTOM_14 = 84,
4306
- /** 自定义层 15 */
4307
- CUSTOM_15 = 85,
4308
- /** 自定义层 16 */
4309
- CUSTOM_16 = 86,
4310
- /** 自定义层 17 */
4311
- CUSTOM_17 = 87,
4312
- /** 自定义层 18 */
4313
- CUSTOM_18 = 88,
4314
- /** 自定义层 19 */
4315
- CUSTOM_19 = 89,
4316
- /** 自定义层 20 */
4317
- CUSTOM_20 = 90,
4318
- /** 自定义层 21 */
4319
- CUSTOM_21 = 91,
4320
- /** 自定义层 22 */
4321
- CUSTOM_22 = 92,
4322
- /** 自定义层 23 */
4323
- CUSTOM_23 = 93,
4324
- /** 自定义层 24 */
4325
- CUSTOM_24 = 94,
4326
- /** 自定义层 25 */
4327
- CUSTOM_25 = 95,
4328
- /** 自定义层 26 */
4329
- CUSTOM_26 = 96,
4330
- /** 自定义层 27 */
4331
- CUSTOM_27 = 97,
4332
- /** 自定义层 28 */
4333
- CUSTOM_28 = 98,
4334
- /** 自定义层 29 */
4335
- CUSTOM_29 = 99,
4336
- /** 自定义层 30 */
4337
- CUSTOM_30 = 100,
4338
- /** 夹层(介电基板)1 */
4339
- SUBSTRATE_1 = 101,
4340
- /** 孔层(焊盘、过孔的内孔) */
4341
- HOLE = 47,
4342
- /** 元件外形层 */
4343
- COMPONENT_SHAPE = 48,
4344
- /** 元件标识层 */
4345
- COMPONENT_MARKING = 49,
4346
- /** 引脚焊接层 */
4347
- PIN_SOLDERING = 50,
4348
- /** 引脚悬空层 */
4349
- PIN_FLOATING = 51,
4350
- /** 元件模型层 */
4351
- COMPONENT_MODEL = 52,
4352
- /** 3D 外壳边框层 */
4353
- SHELL_3D_OUTLINE = 53,
4354
- /** 3D 外壳顶层 */
4355
- SHELL_3D_TOP = 54,
4356
- /** 3D 外壳底层 */
4357
- SHELL_3D_BOTTOM = 55,
4358
- /** 钻孔图层 */
4359
- DRILL_DRAWING = 56
4360
- }
4361
- /**
4362
- * 层状态
4363
- */
4364
- enum EPCB_LayerStatus {
4365
- /** 不使用 */
4366
- NOT_USED = 0,
4367
- /** 使用并展示 */
4368
- SHOW = 1,
4369
- /** 使用但不展示 */
4370
- HIDDEN = 2
4371
- }
4372
- /**
4373
- * 可选中图层
4374
- *
4375
- * @public
4376
- * @remarks 此处为所有在编辑器图层菜单中可以选中并设置可见性的图层
4377
- */
4378
- type TPCB_LayersInTheSelectable = TPCB_LayersOfInner | TPCB_LayersOfCustom | EPCB_LayerId.TOP | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.TOP_STIFFENER | EPCB_LayerId.BOTTOM | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.BOTTOM_STIFFENER | EPCB_LayerId.BOARD_OUTLINE | EPCB_LayerId.MULTI | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING | EPCB_LayerId.RATLINE | EPCB_LayerId.COMPONENT_SHAPE | EPCB_LayerId.COMPONENT_MARKING | EPCB_LayerId.PIN_SOLDERING | EPCB_LayerId.PIN_FLOATING | EPCB_LayerId.SHELL_3D_OUTLINE | EPCB_LayerId.SHELL_3D_TOP | EPCB_LayerId.SHELL_3D_BOTTOM;
4379
- /**
4380
- * 内层
4381
- *
4382
- * @public
4383
- */
4384
- type TPCB_LayersOfInner = EPCB_LayerId.INNER_1 | EPCB_LayerId.INNER_2 | EPCB_LayerId.INNER_3 | EPCB_LayerId.INNER_4 | EPCB_LayerId.INNER_5 | EPCB_LayerId.INNER_6 | EPCB_LayerId.INNER_7 | EPCB_LayerId.INNER_8 | EPCB_LayerId.INNER_9 | EPCB_LayerId.INNER_10 | EPCB_LayerId.INNER_11 | EPCB_LayerId.INNER_12 | EPCB_LayerId.INNER_13 | EPCB_LayerId.INNER_14 | EPCB_LayerId.INNER_15 | EPCB_LayerId.INNER_16 | EPCB_LayerId.INNER_17 | EPCB_LayerId.INNER_18 | EPCB_LayerId.INNER_19 | EPCB_LayerId.INNER_20 | EPCB_LayerId.INNER_21 | EPCB_LayerId.INNER_22 | EPCB_LayerId.INNER_23 | EPCB_LayerId.INNER_24 | EPCB_LayerId.INNER_25 | EPCB_LayerId.INNER_26 | EPCB_LayerId.INNER_27 | EPCB_LayerId.INNER_28 | EPCB_LayerId.INNER_29 | EPCB_LayerId.INNER_30;
4385
- /**
4386
- * 自定义层
4387
- *
4388
- * @public
4389
- */
4390
- type TPCB_LayersOfCustom = EPCB_LayerId.CUSTOM_1 | EPCB_LayerId.CUSTOM_2 | EPCB_LayerId.CUSTOM_3 | EPCB_LayerId.CUSTOM_4 | EPCB_LayerId.CUSTOM_5 | EPCB_LayerId.CUSTOM_6 | EPCB_LayerId.CUSTOM_7 | EPCB_LayerId.CUSTOM_8 | EPCB_LayerId.CUSTOM_9 | EPCB_LayerId.CUSTOM_10 | EPCB_LayerId.CUSTOM_11 | EPCB_LayerId.CUSTOM_12 | EPCB_LayerId.CUSTOM_13 | EPCB_LayerId.CUSTOM_14 | EPCB_LayerId.CUSTOM_15 | EPCB_LayerId.CUSTOM_16 | EPCB_LayerId.CUSTOM_17 | EPCB_LayerId.CUSTOM_18 | EPCB_LayerId.CUSTOM_19 | EPCB_LayerId.CUSTOM_20 | EPCB_LayerId.CUSTOM_21 | EPCB_LayerId.CUSTOM_22 | EPCB_LayerId.CUSTOM_23 | EPCB_LayerId.CUSTOM_24 | EPCB_LayerId.CUSTOM_25 | EPCB_LayerId.CUSTOM_26 | EPCB_LayerId.CUSTOM_27 | EPCB_LayerId.CUSTOM_28 | EPCB_LayerId.CUSTOM_29 | EPCB_LayerId.CUSTOM_30;
4391
- /**
4392
- * 器件所属层
4393
- *
4394
- * @public
4395
- */
4396
- type TPCB_LayersOfComponent = EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM;
4397
- /**
4398
- * 铜箔所属层
4399
- *
4400
- * @public
4401
- * @remarks 此处为方便单层铜箔层设计,不包含 {@link EPCB_LayerId.MULTI}
4402
- */
4403
- type TPCB_LayersOfCopper = TPCB_LayersOfInner | EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM;
4404
- /**
4405
- * 焊盘所属层
4406
- *
4407
- * @public
4408
- */
4409
- type TPCB_LayersOfPad = EPCB_LayerId.TOP | EPCB_LayerId.BOTTOM | EPCB_LayerId.MULTI;
4410
- /**
4411
- * 线所属层
4412
- *
4413
- * @public
4414
- */
4415
- type TPCB_LayersOfLine = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.BOARD_OUTLINE | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING;
4416
- /**
4417
- * 尺寸标注所属层
4418
- *
4419
- * @public
4420
- */
4421
- type TPCB_LayersOfDimension = TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL;
4422
- /**
4423
- * 复杂多边形图(SVG 图像、文本)所属层
4424
- *
4425
- * @public
4426
- */
4427
- type TPCB_LayersOfImage = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.DRILL_DRAWING;
4428
- /**
4429
- * 填充所属层
4430
- *
4431
- * @public
4432
- * @remarks 填充所属层为 {@link EPCB_LayerId.MULTI} 时代表挖槽区域
4433
- */
4434
- type TPCB_LayersOfFill = TPCB_LayersOfCopper | TPCB_LayersOfCustom | EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.TOP_SOLDER_MASK | EPCB_LayerId.TOP_PASTE_MASK | EPCB_LayerId.TOP_ASSEMBLY | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.BOTTOM_SOLDER_MASK | EPCB_LayerId.BOTTOM_PASTE_MASK | EPCB_LayerId.BOTTOM_ASSEMBLY | EPCB_LayerId.DOCUMENT | EPCB_LayerId.MECHANICAL | EPCB_LayerId.MULTI;
4435
- /**
4436
- * 区域所属层
4437
- *
4438
- * @public
4439
- */
4440
- type TPCB_LayersOfRegion = TPCB_LayersOfCopper | EPCB_LayerId.MULTI;
4441
- /**
4442
- * 二进制内嵌对象所属层
4443
- *
4444
- * @public
4445
- */
4446
- type TPCB_LayersOfObject = EPCB_LayerId.TOP_SILKSCREEN | EPCB_LayerId.BOTTOM_SILKSCREEN | EPCB_LayerId.DOCUMENT;
4447
- /**
4448
- * 图层颜色配置
4449
- *
4450
- * @public
4451
- */
4452
- enum EPCB_LayerColorConfiguration {
4453
- /** 嘉立创 EDA */
4454
- JLCEDA = 1,
4455
- /** EasyEDA */
4456
- EASYEDA = 1,
4457
- /** Altium Designer */
4458
- ALTIUM_DESIGNER = 2,
4459
- /** PADS */
4460
- PADS = 3,
4461
- /** KiCAD */
4462
- KICAD = 4
4463
- }
4464
- /**
4465
- * PCB 板材类型
4466
- *
4467
- * @public
4468
- */
4469
- enum EPCB_PcbPlateType {
4470
- /** 普通板材 */
4471
- NORMAL = 1,
4472
- /** FPC 软板 */
4473
- FPC = 2
4474
- }
4475
- /**
4476
- * 图层类型
4477
- *
4478
- * @public
4479
- */
4480
- enum EPCB_LayerType {
4481
- /** 信号层 */
4482
- SIGNAL = "SIGNAL",
4483
- /** 内电层 */
4484
- INTERNAL_ELECTRICAL = "PLANE",
4485
- /** 丝印层 */
4486
- SILKSCREEN = "SILKSCREEN",
4487
- /** 阻焊层 */
4488
- SOLDER_MASK = "SOLDER_MASK",
4489
- /** 锡膏(助焊)层 */
4490
- PASTE_MASK = "PASTE_MASK",
4491
- /** 装配层 */
4492
- ASSEMBLY = "ASSEMBLY",
4493
- /** 其它 */
4494
- OTHER = "OTHER",
4495
- /** 自定义层 */
4496
- CUSTOM = "CUSTOM"
4497
- }
4498
- /**
4499
- * 内层允许设置的图层类型
4500
- *
4501
- * @public
4502
- */
4503
- type TPCB_LayerTypesOfInnerLayer = EPCB_LayerType.SIGNAL | EPCB_LayerType.INTERNAL_ELECTRICAL;
4504
- /**
4505
- * 图层属性
4506
- *
4507
- * @public
4508
- */
4509
- interface IPCB_LayerItem {
4510
- /** 图层 ID */
4511
- id: EPCB_LayerId;
4512
- /** 名称 */
4513
- name: string;
4514
- /** 类型 */
4515
- type: EPCB_LayerType;
4516
- /** 颜色(RGB HEX 格式) */
4517
- color: string;
4518
- /** 透明度(%) */
4519
- transparency: number;
4520
- /** 非激活颜色(RGB HEX 格式) */
4521
- inactiveColor: string;
4522
- /** 非激活透明度(%) */
4523
- inactiveTransparency: number;
4524
- /** 层状态 */
4525
- layerStatus: EPCB_LayerStatus;
4526
- /** 是否锁定 */
4527
- locked: boolean;
4528
- }
4529
- /**
4530
- * 非激活层展示模式
4531
- *
4532
- * @public
4533
- */
4534
- enum EPCB_InactiveLayerDisplayMode {
4535
- /** 正常亮度 */
4536
- NORMAL_BRIGHTNESS = 0,
4537
- /** 置灰 */
4538
- TURN_GRAY = 1,
4539
- /** 隐藏 */
4540
- HIDE = 2
4541
- }
4542
- /**
4543
- * PCB & 封装 / 图层操作类
4544
- *
4545
- * @public
4546
- */
4547
- class PCB_Layer {
4671
+ getNetRules(): Promise<Array<{
4672
+ [key: string]: any;
4673
+ }>>;
4674
+ /**
4675
+ * 覆写网络规则
4676
+ *
4677
+ * @beta
4678
+ * @remarks 将会覆写当前 PCB 的所有网络规则,请注意数据丢失风险
4679
+ * @param netRules - 网络规则
4680
+ * @returns 覆写是否成功
4681
+ */
4682
+ overwriteNetRules(netRules: Array<{
4683
+ [key: string]: any;
4684
+ }>): Promise<boolean>;
4685
+ /**
4686
+ * 获取网络-网络规则
4687
+ *
4688
+ * @beta
4689
+ * @returns 当前 PCB 的所有网络-网络规则
4690
+ */
4691
+ getNetByNetRules(): Promise<{
4692
+ [key: string]: any;
4693
+ }>;
4694
+ /**
4695
+ * 覆写网络-网络规则
4696
+ *
4697
+ * @beta
4698
+ * @remarks 将会覆写当前 PCB 的所有网络-网络规则,请注意数据丢失风险
4699
+ * @param netByNetRules - 网络-网络规则
4700
+ * @returns 覆写是否成功
4701
+ */
4702
+ overwriteNetByNetRules(netByNetRules: {
4703
+ [key: string]: any;
4704
+ }): Promise<boolean>;
4548
4705
  /**
4549
- * 选中图层
4706
+ * 获取区域规则
4550
4707
  *
4551
- * @public
4552
- * @param layer -
4553
- * @returns 操作是否成功,不存在指定层将返回 `false`
4708
+ * @beta
4709
+ * @returns - 当前 PCB 的所有区域规则
4554
4710
  */
4555
- selectLayer(layer: TPCB_LayersInTheSelectable): Promise<boolean>;
4711
+ getRegionRules(): Promise<Array<{
4712
+ [key: string]: any;
4713
+ }>>;
4556
4714
  /**
4557
- * 将层设置为可见
4715
+ * 覆写区域规则
4558
4716
  *
4559
4717
  * @beta
4560
- * @param layer - 层,如若不指定任何层则默认为所有层
4561
- * @param setOtherLayerInvisible - 是否将其它层设置为不可见
4718
+ * @remarks 将会覆写当前 PCB 的所有区域规则,请注意数据丢失风险
4719
+ * @param regionRules - 区域规则
4720
+ * @returns 覆写是否成功
4721
+ */
4722
+ overwriteRegionRules(regionRules: Array<{
4723
+ [key: string]: any;
4724
+ }>): Promise<boolean>;
4725
+ /**
4726
+ * 创建网络类
4727
+ *
4728
+ * @beta
4729
+ * @param netClassName - 网络类名称
4730
+ * @param nets - 网络名称数组
4731
+ * @param color - 网络类颜色
4562
4732
  * @returns 操作是否成功
4563
4733
  */
4564
- setLayerVisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerInvisible?: boolean): Promise<boolean>;
4734
+ createNetClass(netClassName: string, nets: Array<string>, color: IPCB_EqualLengthNetGroupItem['color']): Promise<boolean>;
4565
4735
  /**
4566
- * 将层设置为不可见
4736
+ * 删除网络类
4567
4737
  *
4568
4738
  * @beta
4569
- * @param layer - 层,如若不指定任何层则默认为所有层
4570
- * @param setOtherLayerVisible - 是否将其它层设置为可见
4739
+ * @param netClassName - 网络类名称
4571
4740
  * @returns 操作是否成功
4572
4741
  */
4573
- setLayerInvisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerVisible?: boolean): Promise<boolean>;
4742
+ deleteNetClass(netClassName: string): Promise<boolean>;
4574
4743
  /**
4575
- * 锁定层
4744
+ * 修改网络类的名称
4576
4745
  *
4577
4746
  * @beta
4578
- * @param layer - 层,如若不指定任何层则默认为所有层
4747
+ * @param originalNetClassName - 原网络类名称
4748
+ * @param netClassName - 新网络类名称
4579
4749
  * @returns 操作是否成功
4580
4750
  */
4581
- lockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
4751
+ modifyNetClassName(originalNetClassName: string, netClassName: string): Promise<boolean>;
4582
4752
  /**
4583
- * 取消锁定层
4753
+ * 将网络添加到网络类
4584
4754
  *
4585
4755
  * @beta
4586
- * @param layer - 层,如若不指定任何层则默认为所有层
4756
+ * @param netClassName - 网络类名称
4757
+ * @param net - 网络名称
4587
4758
  * @returns 操作是否成功
4588
4759
  */
4589
- unlockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
4760
+ addNetToNetClass(netClassName: string, net: string | Array<string>): Promise<boolean>;
4590
4761
  /**
4591
- * 设置铜箔层数
4762
+ * 从网络类中移除网络
4592
4763
  *
4593
4764
  * @beta
4594
- * @remarks 新建的 PCB 文档默认拥有两层铜箔层
4595
- * @param numberOfLayers - 层数
4765
+ * @param netClassName - 网络类名称
4766
+ * @param net - 网络名称
4596
4767
  * @returns 操作是否成功
4597
4768
  */
4598
- setTheNumberOfCopperLayers(numberOfLayers: 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32): Promise<boolean>;
4769
+ removeNetFromNetClass(netClassName: string, net: string | Array<string>): Promise<boolean>;
4770
+ /**
4771
+ * 获取所有网络类的详细属性
4772
+ *
4773
+ * @beta
4774
+ * @returns 所有网络类的详细属性
4775
+ */
4776
+ getAllNetClasses(): Promise<Array<IPCB_NetClassItem>>;
4777
+ /**
4778
+ * 创建差分对
4779
+ *
4780
+ * @beta
4781
+ * @param differentialPairName - 差分对名称
4782
+ * @param positiveNet - 正网络名称
4783
+ * @param negativeNet - 负网络名称
4784
+ * @returns 操作是否成功
4785
+ */
4786
+ createDifferentialPair(differentialPairName: string, positiveNet: string, negativeNet: string): Promise<boolean>;
4787
+ /**
4788
+ * 删除差分对
4789
+ *
4790
+ * @beta
4791
+ * @param differentialPairName - 差分对名称
4792
+ * @returns 操作是否成功
4793
+ */
4794
+ deleteDifferentialPair(differentialPairName: string): Promise<boolean>;
4795
+ /**
4796
+ * 修改差分对的名称
4797
+ *
4798
+ * @beta
4799
+ * @param originalDifferentialPairName - 原差分对名称
4800
+ * @param differentialPairName - 新差分对名称
4801
+ * @returns 操作是否成功
4802
+ */
4803
+ modifyDifferentialPairName(originalDifferentialPairName: string, differentialPairName: string): Promise<boolean>;
4804
+ /**
4805
+ * 修改差分对正网络
4806
+ *
4807
+ * @beta
4808
+ * @param differentialPairName - 差分对名称
4809
+ * @param positiveNet - 正网络名称
4810
+ * @returns 操作是否成功
4811
+ */
4812
+ modifyDifferentialPairPositiveNet(differentialPairName: string, positiveNet: string): Promise<boolean>;
4813
+ /**
4814
+ * 修改差分对负网络
4815
+ *
4816
+ * @beta
4817
+ * @param differentialPairName - 差分对名称
4818
+ * @param negativeNet - 负网络名称
4819
+ * @returns 操作是否成功
4820
+ */
4821
+ modifyDifferentialPairNegativeNet(differentialPairName: string, negativeNet: string): Promise<boolean>;
4822
+ /**
4823
+ * 获取所有差分对的详细属性
4824
+ *
4825
+ * @beta
4826
+ * @remarks
4827
+ * BREAKING CHANGE since EDA v3.4
4828
+ *
4829
+ * - 返回值类型更改为对象
4830
+ * @returns 所有差分对的详细属性
4831
+ */
4832
+ getAllDifferentialPairs(): Promise<Array<IPCB_DifferentialPairItem> | {
4833
+ [key: string]: any;
4834
+ }>;
4835
+ /**
4836
+ * 创建等长网络组
4837
+ *
4838
+ * @beta
4839
+ * @param equalLengthNetGroupName - 等长网络组名称
4840
+ * @param nets - 网络名称数组
4841
+ * @param color - 等长网络组颜色
4842
+ * @returns 操作是否成功
4843
+ */
4844
+ createEqualLengthNetGroup(equalLengthNetGroupName: string, nets: Array<string>, color: IPCB_EqualLengthNetGroupItem['color']): Promise<boolean>;
4845
+ /**
4846
+ * 删除等长网络组
4847
+ *
4848
+ * @beta
4849
+ * @param equalLengthNetGroupName - 等长网络组名称
4850
+ * @returns 操作是否成功
4851
+ */
4852
+ deleteEqualLengthNetGroup(equalLengthNetGroupName: string): Promise<boolean>;
4853
+ /**
4854
+ * 修改等长网络组的名称
4855
+ *
4856
+ * @beta
4857
+ * @param originalEqualLengthNetGroupName - 原等长网络组名称
4858
+ * @param equalLengthNetGroupName - 新等长网络组名称
4859
+ * @returns 操作是否成功
4860
+ */
4861
+ modifyEqualLengthNetGroupName(originalEqualLengthNetGroupName: string, equalLengthNetGroupName: string): Promise<boolean>;
4862
+ /**
4863
+ * 将网络添加到等长网络组
4864
+ *
4865
+ * @beta
4866
+ * @param equalLengthNetGroupName - 等长网络组名称
4867
+ * @param net - 网络名称
4868
+ * @returns 操作是否成功
4869
+ */
4870
+ addNetToEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4871
+ /**
4872
+ * 从等长网络组中移除网络
4873
+ *
4874
+ * @beta
4875
+ * @param equalLengthNetGroupName - 等长网络组名称
4876
+ * @param net - 网络名称
4877
+ * @returns 操作是否成功
4878
+ */
4879
+ removeNetFromEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4880
+ /**
4881
+ * 获取所有等长网络组的详细属性
4882
+ *
4883
+ * @beta
4884
+ * @returns 所有等长网络组的详细属性
4885
+ */
4886
+ getAllEqualLengthNetGroups(): Promise<Array<IPCB_EqualLengthNetGroupItem>>;
4887
+ /**
4888
+ * 创建焊盘对组
4889
+ *
4890
+ * @beta
4891
+ * @param padPairGroupName - 焊盘对组名称
4892
+ * @param padPairs - 焊盘对数组
4893
+ * @returns 操作是否成功
4894
+ * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
4895
+ * await eda.pcb_Drc.createPadPairGroup('test',[['e0','e1']]) // 游离焊盘-游离焊盘
4896
+ * await eda.pcb_Drc.createPadPairGroup('test',[['R1:1','R1:2'],['R2:1','R2:2']]) // 器件焊盘 - 器件焊盘
4897
+ * await eda.pcb_Drc.createPadPairGroup('test',[['R1:1','e0'],['R1:2','e1']]) // 器件焊盘 - 游离焊盘
4898
+ */
4899
+ createPadPairGroup(padPairGroupName: string, padPairs: Array<[string, string]>): Promise<boolean>;
4900
+ /**
4901
+ * 删除焊盘对组
4902
+ *
4903
+ * @beta
4904
+ * @param padPairGroupName - 焊盘对组名称
4905
+ * @returns 操作是否成功
4906
+ */
4907
+ deletePadPairGroup(padPairGroupName: string): Promise<boolean>;
4908
+ /**
4909
+ * 修改焊盘对组的名称
4910
+ *
4911
+ * @beta
4912
+ * @param originalPadPairGroupName - 原焊盘对组名称
4913
+ * @param padPairGroupName - 新焊盘对组名称
4914
+ * @returns 操作是否成功
4915
+ */
4916
+ modifyPadPairGroupName(originalPadPairGroupName: string, padPairGroupName: string): Promise<boolean>;
4917
+ /**
4918
+ * 将焊盘对添加到焊盘对组
4919
+ *
4920
+ * @beta
4921
+ * @param padPairGroupName - 焊盘对组名称
4922
+ * @param padPair - 焊盘对
4923
+ * @returns 操作是否成功
4924
+ * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
4925
+ * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['e0','e1']) // 游离焊盘-游离焊盘
4926
+ * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['R1:1','R1:2']) // 器件焊盘 - 器件焊盘
4927
+ * await eda.pcb_Drc.addPadPairToPadPairGroup('test',['R1:1','e1']) // 器件焊盘 - 游离焊盘
4928
+ */
4929
+ addPadPairToPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4930
+ /**
4931
+ * 从焊盘对组中移除焊盘对
4932
+ *
4933
+ * @beta
4934
+ * @param padPairGroupName - 焊盘对组名称
4935
+ * @param padPair - 焊盘对
4936
+ * @returns 操作是否成功
4937
+ * @example 有三种不同的用法,确保画布上已有对应的焊盘。 分别是 一,游离焊盘-游离焊盘;二,器件焊盘 - 器件焊盘;三,器件焊盘 - 游离焊盘
4938
+ * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['e0','e1']) // 游离焊盘-游离焊盘
4939
+ * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['R1:1','R1:2']) // 器件焊盘 - 器件焊盘
4940
+ * await eda.pcb_Drc.removePadPairFromPadPairGroup('test',['R1:2','e1']) // 器件焊盘 - 游离焊盘
4941
+ */
4942
+ removePadPairFromPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4943
+ /**
4944
+ * 获取所有焊盘对组的详细属性
4945
+ *
4946
+ * @beta
4947
+ * @returns 所有焊盘对组的详细属性
4948
+ */
4949
+ getAllPadPairGroups(): Promise<Array<IPCB_PadPairGroupItem>>;
4950
+ /**
4951
+ * 获取焊盘对组最短导线长度
4952
+ *
4953
+ * @beta
4954
+ * @param padPairGroupName - 焊盘对组名称
4955
+ * @returns 所有焊盘对的最短导线长度
4956
+ */
4957
+ getPadPairGroupMinWireLength(padPairGroupName: string): Promise<Array<IPCB_PadPairMinWireLengthItem>>;
4958
+ }
4959
+
4960
+ /**
4961
+ * 鼠标事件类型
4962
+ *
4963
+ * @public
4964
+ */
4965
+ enum EPCB_MouseEventType {
4966
+ /** 选中 */
4967
+ SELECTED = "selected",
4968
+ /** 取消选中 */
4969
+ CLEAR_SELECTED = "clearSelected",
4970
+ /** 移动 */
4971
+ MOVE = "move"
4972
+ }
4973
+ /**
4974
+ * 图元事件类型
4975
+ *
4976
+ * @public
4977
+ */
4978
+ enum EPCB_PrimitiveEventType {
4979
+ /** 删除 */
4980
+ DELETE = "delete",
4981
+ /** 创建 */
4982
+ CREATE = "add",
4983
+ /** 属性变更 */
4984
+ MODIFY = "modify"
4985
+ }
4986
+ /**
4987
+ * 网络事件类型
4988
+ *
4989
+ * @public
4990
+ */
4991
+ enum EPCB_NetEventType {
4992
+ /** 新增 */
4993
+ ADD = "add",
4994
+ /** 移除 */
4995
+ REMOVE = "remove",
4996
+ /** 选中(仅当选中整个网络时触发) */
4997
+ SELECTED = "selected"
4998
+ }
4999
+ /**
5000
+ * PCB & 封装 / 事件类
5001
+ *
5002
+ * @public
5003
+ * @remarks 注册事件回调
5004
+ */
5005
+ class PCB_Event {
5006
+ /** 扩展 UUID */
5007
+ private extensionUuid?;
4599
5008
  /**
4600
- * 获取铜箔层数
4601
- *
4602
- * @alpha
4603
- * @returns 层数
5009
+ * @internal
5010
+ * @param extensionUuid - 扩展 UUID
4604
5011
  */
4605
- getTheNumberOfCopperLayers(): Promise<number>;
5012
+ constructor(extensionUuid?: string);
4606
5013
  /**
4607
- * 设置层颜色配置
5014
+ * 新增鼠标事件监听
4608
5015
  *
4609
5016
  * @beta
4610
- * @param colorConfiguration - 颜色配置
4611
- * @returns 操作是否成功
5017
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5018
+ * @param id - 事件 ID,用以防止重复注册事件
5019
+ * @param eventType - 事件类型
5020
+ * @param callFn - 事件触发时的回调函数
5021
+ * @param onlyOnce - 是否仅监听一次
4612
5022
  */
4613
- setLayerColorConfiguration(colorConfiguration: EPCB_LayerColorConfiguration): Promise<boolean>;
5023
+ addMouseEventListener(id: string, eventType: 'all' | EPCB_MouseEventType, callFn: (eventType: EPCB_MouseEventType, props: [
5024
+ {
5025
+ primitiveId: string;
5026
+ primitiveType: EPCB_PrimitiveType;
5027
+ net?: string;
5028
+ designator?: string;
5029
+ parentComponentPrimitiveId?: string;
5030
+ parentComponentDesignator?: string;
5031
+ }
5032
+ ]) => void | Promise<void>, onlyOnce?: boolean): void;
4614
5033
  /**
4615
- * 设置非激活层透明度
5034
+ * 新增图元事件监听
4616
5035
  *
4617
5036
  * @beta
4618
- * @param transparency - 透明度,范围 `0-100`
4619
- * @returns 操作是否成功
5037
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5038
+ * @param id - 事件 ID,用以防止重复注册事件
5039
+ * @param eventType - 事件类型
5040
+ * @param callFn - 事件触发时的回调函数
5041
+ * @param onlyOnce - 是否仅监听一次
4620
5042
  */
4621
- setInactiveLayerTransparency(transparency: number): Promise<boolean>;
5043
+ addPrimitiveEventListener(id: string, eventType: 'all' | EPCB_PrimitiveEventType, callFn: (eventType: EPCB_PrimitiveEventType, props: [
5044
+ {
5045
+ primitiveId: string;
5046
+ primitiveType: EPCB_PrimitiveType;
5047
+ net?: string;
5048
+ designator?: string;
5049
+ parentComponentPrimitiveId?: string;
5050
+ parentComponentDesignator?: string;
5051
+ }
5052
+ ]) => void | Promise<void>, onlyOnce?: boolean): void;
4622
5053
  /**
4623
- * 设置 PCB 类型
5054
+ * 新增网络事件监听
4624
5055
  *
4625
5056
  * @beta
4626
5057
  * @remarks
4627
- * 此处主要是为了适配 FPC 软板的设计,如若将 PCB 类型设置为 FPC 软板,将会新增 FPC 补强层图层。
5058
+ * 网络选中事件仅
4628
5059
  *
4629
- * 请注意:
5060
+ * ①在过滤面板选中网络选项并在画布选中网络时
4630
5061
  *
4631
- * 1. 嘉立创暂不支持超过 2 层铜箔层的 FPC 软板生产;
5062
+ * ②在工程设计 -\> 网络内选中网络时
4632
5063
  *
4633
- * 2. 将 PCB 类型从 FPC 软板切换为普通板材时需要预先删除 FPC 补强层上的任何图元,否则将无法切换并返回 `false` 的结果。
4634
- * @param pcbType - PCB 类型
4635
- * @returns 操作是否成功
4636
- */
4637
- setPcbType(pcbType: EPCB_PcbPlateType): Promise<boolean>;
4638
- /**
4639
- * 新增自定义层
5064
+ * 会被触发
4640
5065
  *
4641
- * @beta
4642
- * @returns 新增的自定义层的图层 ID,如若为 `undefined` 则为新增失败,可能是自定义层数量已达到上限
5066
+ * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5067
+ * @param id - 事件 ID,用以防止重复注册事件
5068
+ * @param eventType - 事件类型
5069
+ * @param callFn - 事件触发时的回调函数
5070
+ * @param onlyOnce - 是否仅监听一次
4643
5071
  */
4644
- addCustomLayer(): Promise<TPCB_LayersOfCustom | undefined>;
5072
+ addNetEventListener(id: string, eventType: 'all' | EPCB_NetEventType, callFn: (eventType: EPCB_NetEventType, props: [{
5073
+ net: string;
5074
+ }]) => void | Promise<void>, onlyOnce?: boolean): void;
4645
5075
  /**
4646
- * 移除层
5076
+ * 新增交叉选择事件监听
4647
5077
  *
4648
5078
  * @beta
4649
- * @remarks 当前仅支持移除自定义层
4650
- * @param layer -
4651
- * @returns 操作是否成功
5079
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5080
+ * @param id - 事件 ID,用以防止重复注册事件
5081
+ * @param callFn - 事件触发时的回调函数
4652
5082
  */
4653
- removeLayer(layer: TPCB_LayersOfCustom): Promise<boolean>;
5083
+ addCrossProbeSelectEventListener(id: string, callFn: (props: any) => void | Promise<void>): void;
4654
5084
  /**
4655
- * 修改图层属性
5085
+ * 新增实时 DRC 结果事件监听
4656
5086
  *
4657
- * @beta
4658
- * @remarks 仅内层和自定义层允许修改名称;仅内层允许修改类型, 透明度仅支持0-100之间的数
4659
- * @param layer - 层
4660
- * @param property - 属性
4661
- * @returns 修改后的图层属性,如若为 `undefined` 则代表修改失败或图层不存在
5087
+ * @alpha
5088
+ * @remarks
5089
+ * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5090
+ * @param id - 事件 ID,用以防止重复注册事件
5091
+ * @param eventType - 事件类型
5092
+ * @param callFn - 事件触发时的回调函数
4662
5093
  */
4663
- modifyLayer(layer: TPCB_LayersInTheSelectable, property: {
4664
- name?: string;
4665
- type?: TPCB_LayerTypesOfInnerLayer;
4666
- color?: string;
4667
- transparency?: number;
4668
- }): Promise<boolean>;
5094
+ addRealTimeDrcResultEventListener(id: string, eventType: 'all', callFn: (eventType: undefined, props: [{
5095
+ drcResult: any;
5096
+ }]) => void | Promise<void>): void;
4669
5097
  /**
4670
- * 获取所有图层的详细属性
5098
+ * 移除事件监听
4671
5099
  *
4672
- * @beta
4673
- * @returns 所有图层的详细属性
5100
+ * @public
5101
+ * @param id - 事件 ID
5102
+ * @returns 是否移除指定事件监听
4674
5103
  */
4675
- getAllLayers(): Promise<Array<IPCB_LayerItem>>;
5104
+ removeEventListener(id: string): boolean;
4676
5105
  /**
4677
- * 设置非激活层展示模式
5106
+ * 查询事件监听是否存在
4678
5107
  *
4679
- * @beta
4680
- * @param displayMode - 展示模式
4681
- * @returns 是否设置成功
5108
+ * @public
5109
+ * @param id - 事件 ID
5110
+ * @returns 事件监听是否存在
4682
5111
  */
4683
- setInactiveLayerDisplayMode(displayMode?: EPCB_InactiveLayerDisplayMode): Promise<boolean>;
5112
+ isEventListenerAlreadyExist(id: string): boolean;
4684
5113
  }
4685
5114
 
4686
5115
  /**
@@ -5398,11 +5827,12 @@ declare global {
5398
5827
  * @remarks
5399
5828
  * 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5400
5829
  *
5401
- * `outputMethod`、`contentConfig`、`watermark` 参数暂不可用,等待后期规划
5830
+ * `outputMethod`、`contentConfig`、`watermark`、`graphPageConfig` 参数暂不可用,等待后期规划
5402
5831
  * @param fileName - 文件名
5403
5832
  * @param outputMethod - 输出方式
5404
5833
  * @param contentConfig - 内容配置
5405
5834
  * @param watermark - 水印
5835
+ * @param graphPageConfig - 图页配置
5406
5836
  * @returns PDF 文件数据(或压缩包)
5407
5837
  * @example
5408
5838
  * ```javascript
@@ -5435,7 +5865,9 @@ declare global {
5435
5865
  slope: 0 | 45 | 90;
5436
5866
  denseness: 'Single' | 'Sparse' | 'Std' | 'Dense';
5437
5867
  };
5438
- }): Promise<File | undefined>;
5868
+ }, graphPageConfig?: Array<{
5869
+ [key: string]: any;
5870
+ }>): Promise<File | undefined>;
5439
5871
  /**
5440
5872
  * 获取 IPC-D-356A 文件
5441
5873
  *
@@ -5502,462 +5934,229 @@ declare global {
5502
5934
  objectName: string;
5503
5935
  }>): Promise<File | undefined>;
5504
5936
  /**
5505
- * 获取交互式 BOM 文件
5506
- *
5507
- * @internal
5508
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5509
- * @param fileName - 文件名
5510
- * @returns 交互式 BOM 文件数据
5511
- */
5512
- getInteractiveBomFile(fileName?: string): Promise<File | undefined>;
5513
- /**
5514
- * 获取自动布线文件(DSN)
5515
- *
5516
- * @beta
5517
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5518
- * @param fileName - 文件名
5519
- * @returns 自动布线 DSN 文件数据
5520
- * @example
5521
- * ```javascript
5522
- * const dsnFile = await eda.pcb_ManufactureData.getDsnFile('AutoRoute_DSN');
5523
- * if (dsnFile) {
5524
- * await eda.sys_FileSystem.saveFile(dsnFile);
5525
- * }
5526
- * ```
5527
- */
5528
- getDsnFile(fileName?: string): Promise<File | undefined>;
5529
- /**
5530
- * 获取自动布线文件(JSON)
5531
- *
5532
- * @beta
5533
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5534
- * @param fileName - 文件名
5535
- * @returns 自动布线 JSON 文件数据
5536
- * @example
5537
- * ```javascript
5538
- * const autoRouteJson = await eda.pcb_ManufactureData.getAutoRouteJsonFile('AutoRoute_Json');
5539
- * if (autoRouteJson) {
5540
- * await eda.sys_FileSystem.saveFile(autoRouteJson);
5541
- * }
5542
- * ```
5543
- */
5544
- getAutoRouteJsonFile(fileName?: string): Promise<File | undefined>;
5545
- /**
5546
- * 获取 JRouter 专用自动布线文件(JSON)
5547
- *
5548
- * @beta
5549
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5550
- * @param fileName - 文件名
5551
- * @returns 自动布线 JSON 文件数据
5552
- */
5553
- getAutoRouteJsonFileForJRouter(fileName?: string): Promise<File | undefined>;
5554
- /**
5555
- * 获取自动布局文件(JSON)
5556
- *
5557
- * @beta
5558
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5559
- * @param fileName - 文件名
5560
- * @returns 自动布局 JSON 文件数据
5561
- * @example
5562
- * ```javascript
5563
- * const autoLayoutJson = await eda.pcb_ManufactureData.getAutoLayoutJsonFile('AutoLayout_Json');
5564
- * if (autoLayoutJson) {
5565
- * await eda.sys_FileSystem.saveFile(autoLayoutJson);
5566
- * }
5567
- * ```
5568
- */
5569
- getAutoLayoutJsonFile(fileName?: string): Promise<File | undefined>;
5570
- /**
5571
- * 获取 Altium Designer 文件
5572
- *
5573
- * @beta
5574
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5575
- * @param fileName - 文件名
5576
- * @returns Altium Designer 文件数据
5577
- * @example
5578
- * ```javascript
5579
- * //获取 Altium Designer 格式文件
5580
- * const adFile = await eda.pcb_ManufactureData.getAltiumDesignerFile('Converted_To_AD');
5581
- * if (adFile) {
5582
- * await eda.sys_FileSystem.saveFile(adFile);
5583
- * }
5584
- * ```
5585
- */
5586
- getAltiumDesignerFile(fileName?: string): Promise<File | undefined>;
5587
- /**
5588
- * 获取 PADS 文件
5937
+ * 获取交互式 BOM 文件
5589
5938
  *
5590
- * @beta
5939
+ * @internal
5591
5940
  * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5592
5941
  * @param fileName - 文件名
5593
- * @returns PADS 文件数据
5594
- * @example
5595
- * ```javascript
5596
- * // 获取 PADS 格式文件
5597
- * const padsFile = await eda.pcb_ManufactureData.getPadsFile('Converted_To_PADS');
5598
- * if (padsFile) {
5599
- * await eda.sys_FileSystem.saveFile(padsFile);
5600
- * }
5601
- * ```
5942
+ * @returns 交互式 BOM 文件数据
5602
5943
  */
5603
- getPadsFile(fileName?: string): Promise<File | undefined>;
5944
+ getInteractiveBomFile(fileName?: string): Promise<File | undefined>;
5604
5945
  /**
5605
- * 获取 PCB 信息文件
5946
+ * 获取自动布线文件(DSN)
5606
5947
  *
5607
5948
  * @beta
5608
5949
  * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5609
5950
  * @param fileName - 文件名
5610
- * @returns PCB 信息文件
5951
+ * @returns 自动布线 DSN 文件数据
5611
5952
  * @example
5612
5953
  * ```javascript
5613
- * const pcbInfoFile = await eda.pcb_ManufactureData.getPcbInfoFile('Board_Information');
5614
- * if (pcbInfoFile) {
5615
- * await eda.sys_FileSystem.saveFile(pcbInfoFile);
5954
+ * const dsnFile = await eda.pcb_ManufactureData.getDsnFile('AutoRoute_DSN');
5955
+ * if (dsnFile) {
5956
+ * await eda.sys_FileSystem.saveFile(dsnFile);
5616
5957
  * }
5617
5958
  * ```
5618
5959
  */
5619
- getPcbInfoFile(fileName?: string): Promise<File | undefined>;
5960
+ getDsnFile(fileName?: string): Promise<File | undefined>;
5620
5961
  /**
5621
- * 获取 IDX 文件
5962
+ * 获取自动布线文件(JSON)
5622
5963
  *
5623
5964
  * @beta
5624
5965
  * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5625
- * @returns IDX 文件
5966
+ * @param fileName - 文件名
5967
+ * @returns 自动布线 JSON 文件数据
5626
5968
  * @example
5627
5969
  * ```javascript
5628
- * const idxFile = await eda.pcb_ManufactureData.getIdxFile('Design_Exchange');
5629
- * if (idxFile) {
5630
- * await eda.sys_FileSystem.saveFile(idxFile);
5970
+ * const autoRouteJson = await eda.pcb_ManufactureData.getAutoRouteJsonFile('AutoRoute_Json');
5971
+ * if (autoRouteJson) {
5972
+ * await eda.sys_FileSystem.saveFile(autoRouteJson);
5631
5973
  * }
5632
5974
  * ```
5633
5975
  */
5634
- getIdxFile(fileName?: string): Promise<File | undefined>;
5635
- /**
5636
- * 元件下单
5637
- *
5638
- * @beta
5639
- * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
5640
- * @param interactive - 是否启用交互式检查
5641
- *
5642
- * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
5643
- * 即 `ignoreWarning` 参数将被忽略;
5644
- *
5645
- * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
5646
- * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
5647
- * @param ignoreWarning - 在非交互式检查时忽略警告
5648
- *
5649
- * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
5650
- *
5651
- * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
5652
- * @returns 是否通过下单检查
5653
- */
5654
- placeComponentsOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5655
- /**
5656
- * SMT 元件下单
5657
- *
5658
- * @beta
5659
- * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
5660
- * @param interactive - 是否启用交互式检查
5661
- *
5662
- * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
5663
- * 即 `ignoreWarning` 参数将被忽略;
5664
- *
5665
- * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
5666
- * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
5667
- * @param ignoreWarning - 在非交互式检查时忽略警告
5668
- *
5669
- * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
5670
- *
5671
- * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
5672
- * @returns 是否通过下单检查
5673
- */
5674
- placeSmtComponentsOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5675
- /**
5676
- * PCB 下单
5677
- *
5678
- * @beta
5679
- * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
5680
- * @param interactive - 是否启用交互式检查
5681
- *
5682
- * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
5683
- * 即 `ignoreWarning` 参数将被忽略;
5684
- *
5685
- * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
5686
- * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
5687
- * @param ignoreWarning - 在非交互式检查时忽略警告
5688
- *
5689
- * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
5690
- *
5691
- * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
5692
- * @returns 是否通过下单检查
5693
- */
5694
- placePcbOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5976
+ getAutoRouteJsonFile(fileName?: string): Promise<File | undefined>;
5695
5977
  /**
5696
- * 3D 外壳下单
5978
+ * 获取 JRouter 专用自动布线文件(JSON)
5697
5979
  *
5698
5980
  * @beta
5699
- * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
5700
- * @param interactive - 是否启用交互式检查
5701
- *
5702
- * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
5703
- * 即 `ignoreWarning` 参数将被忽略;
5704
- *
5705
- * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
5706
- * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
5707
- * @param ignoreWarning - 在非交互式检查时忽略警告
5708
- *
5709
- * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
5710
- *
5711
- * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
5712
- * @returns 是否通过下单检查
5981
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5982
+ * @param fileName - 文件名
5983
+ * @returns 自动布线 JSON 文件数据
5713
5984
  */
5714
- place3DShellOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5985
+ getAutoRouteJsonFileForJRouter(fileName?: string): Promise<File | undefined>;
5715
5986
  /**
5716
- * 导出制造文件
5987
+ * 获取自动布局文件(JSON)
5717
5988
  *
5718
5989
  * @beta
5719
- * @remarks
5720
- * 本接口对应私有化部署版本一键导出制造文件功能
5721
- *
5722
- * 将根据前端一键导出制造文件弹窗的配置获取其文件数据
5723
- *
5724
- * 注意:本接口仅私有化部署版本有效,如若在其他版本调用将始终 `throw Error`
5725
- * @returns 制造文件
5726
- */
5727
- getManufactureData(): Promise<File | undefined>;
5728
- }
5729
-
5730
- /**
5731
- * 单多边形源数组
5732
- *
5733
- * @public
5734
- * @remarks
5735
- * 单多边形为首尾重合的一条不间断的线所描述的区域,如果首尾不重合将会自动重合。
5736
- *
5737
- * 单多边形的数据格式举例:
5738
- *
5739
- * `[300, 200, 'L', 400, 200, 'ARC', 400, 220, 15, 'C', 200, 500, 400, 300, 100, 100]`
5740
- *
5741
- * `['R', 100, 200, 300, 300, 0, 0]`
5742
- *
5743
- * `['CIRCLE', 100, 200, 5]`
5744
- *
5745
- * 单多边形的数据由以下几种模式组合而成:
5746
- *
5747
- * ① L 直线模式
5748
- *
5749
- * `x1 y1 L x2 y3 x3 y3 ...`
5750
- *
5751
- * - `{number}` `x` - 直线点的 X 坐标
5752
- *
5753
- * - `{number}` `y` - 直线点的 Y 坐标
5754
- *
5755
- * ② ARC/CARC 圆弧模式
5756
- *
5757
- * `ARC` 为两点交互,`CARC` 为中心圆弧交互
5758
- *
5759
- * `startX startY ARC arcAngle endX endY`
5760
- *
5761
- * `startX startY CARC arcAngle endX endY`
5762
- *
5763
- * - `{number}` `startX` - 起始 X
5764
- *
5765
- * - `{number}` `startY` - 起始 Y
5766
- *
5767
- * - `{number}` `arcAngle` - 圆弧角(负值为顺时针旋转;角度制)
5768
- *
5769
- * - `{number}` `endX` - 终止 X
5770
- *
5771
- * - `{number}` `endY` - 终止 Y
5772
- *
5773
- * ③ C 三阶贝塞尔模式
5774
- *
5775
- * `x1 y1 C x2 y2 x3 y3 x4 y4 ...`
5776
- *
5777
- * - `{number}` `x` - 控制点 X
5778
- *
5779
- * - `{number}` `y` - 控制点 Y
5780
- *
5781
- * ④ R 矩形模式
5782
- *
5783
- * `R x y width height rot round`
5784
- *
5785
- * - `{number}` `x` - 左上点 X
5786
- *
5787
- * - `{number}` `y` - 左上点 Y
5788
- *
5789
- * - `{number}` `width` - 宽
5790
- *
5791
- * - `{number}` `height` - 高
5792
- *
5793
- * - `{number}` `rotation` - 旋转角度
5794
- *
5795
- * - `{number}` `round` - 圆角半径
5796
- *
5797
- * ⑤ CIRCLE 圆形模式
5798
- *
5799
- * `CIRCLE cx cy radius`
5800
- *
5801
- * - `{number}` `cx` - 中心点 X
5802
- *
5803
- * - `{number}` `xy` - 中心点 Y
5804
- *
5805
- * - `{number}` `radius` - 半径
5806
- */
5807
- type TPCB_PolygonSourceArray = Array<'L' | 'ARC' | 'CARC' | 'C' | 'R' | 'CIRCLE' | number>;
5808
- /**
5809
- * PCB & 封装 / 多边形数学类
5810
- *
5811
- * @public
5812
- */
5813
- class PCB_MathPolygon {
5814
- /**
5815
- * 创建单多边形
5816
- *
5817
- * @public
5818
- * @param polygon - 单多边形数据
5819
- * @returns 单多边形对象,`undefined` 表示数据不合法
5820
- */
5821
- createPolygon(polygon: TPCB_PolygonSourceArray): IPCB_Polygon | undefined;
5822
- /**
5823
- * 创建复杂多边形
5824
- *
5825
- * @public
5826
- * @param complexPolygon - 复杂多边形数据
5827
- * @returns 复杂多边形对象,`undefined` 表示数据不合法
5828
- */
5829
- createComplexPolygon(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>): IPCB_ComplexPolygon | undefined;
5830
- /**
5831
- * 拆分单多边形
5832
- *
5833
- * @public
5834
- * @param complexPolygons - 复杂多边形
5835
- * @returns 单多边形数组
5836
- */
5837
- splitPolygon(...complexPolygons: Array<IPCB_ComplexPolygon>): Array<IPCB_Polygon>;
5838
- /**
5839
- * 计算复杂多边形 BBox 宽度
5840
- *
5841
- * @alpha
5842
- * @param complexPolygon - 复杂多边形
5843
- * @returns BBox 宽度
5990
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5991
+ * @param fileName - 文件名
5992
+ * @returns 自动布局 JSON 文件数据
5993
+ * @example
5994
+ * ```javascript
5995
+ * const autoLayoutJson = await eda.pcb_ManufactureData.getAutoLayoutJsonFile('AutoLayout_Json');
5996
+ * if (autoLayoutJson) {
5997
+ * await eda.sys_FileSystem.saveFile(autoLayoutJson);
5998
+ * }
5999
+ * ```
5844
6000
  */
5845
- calculateWidth(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
5846
- calculateBBoxWidth(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>): number;
6001
+ getAutoLayoutJsonFile(fileName?: string): Promise<File | undefined>;
5847
6002
  /**
5848
- * 计算复杂多边形 BBox 高度
6003
+ * 获取 Altium Designer 文件
5849
6004
  *
5850
- * @alpha
5851
- * @param complexPolygon - 复杂多边形
5852
- * @returns BBox 高度
6005
+ * @beta
6006
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
6007
+ * @param fileName - 文件名
6008
+ * @returns Altium Designer 文件数据
6009
+ * @example
6010
+ * ```javascript
6011
+ * //获取 Altium Designer 格式文件
6012
+ * const adFile = await eda.pcb_ManufactureData.getAltiumDesignerFile('Converted_To_AD');
6013
+ * if (adFile) {
6014
+ * await eda.sys_FileSystem.saveFile(adFile);
6015
+ * }
6016
+ * ```
5853
6017
  */
5854
- calculateHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
5855
- calculateBBoxHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>): number;
6018
+ getAltiumDesignerFile(fileName?: string): Promise<File | undefined>;
5856
6019
  /**
5857
- * 将图像转换为复杂多边形对象
6020
+ * 获取 PADS 文件
5858
6021
  *
5859
6022
  * @beta
5860
- * @param imageBlob - 图像 Blob 文件,可以使用 {@link SYS_FileSystem.openReadFileDialog} 方法从文件系统读取文件
5861
- * @param imageWidth - 图像宽度
5862
- * @param imageHeight - 图像高度
5863
- * @param tolerance - 容差,取值范围 `0`-`1`
5864
- * @param simplification - 简化,取值范围 `0`-`1`
5865
- * @param smoothing - 平滑,取值范围 `0`-`1.33`
5866
- * @param despeckling - 去斑,取值范围 `0`-`5`
5867
- * @param whiteAsBackgroundColor - 是否白色作为背景色
5868
- * @param inversion - 是否反相
5869
- * @returns 复杂多边形对象
6023
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
6024
+ * @param fileName - 文件名
6025
+ * @returns PADS 文件数据
6026
+ * @example
6027
+ * ```javascript
6028
+ * // 获取 PADS 格式文件
6029
+ * const padsFile = await eda.pcb_ManufactureData.getPadsFile('Converted_To_PADS');
6030
+ * if (padsFile) {
6031
+ * await eda.sys_FileSystem.saveFile(padsFile);
6032
+ * }
6033
+ * ```
5870
6034
  */
5871
- convertImageToComplexPolygon(imageBlob: Blob, imageWidth: number, imageHeight: number, tolerance?: number, simplification?: number, smoothing?: number, despeckling?: number, whiteAsBackgroundColor?: boolean, inversion?: boolean): Promise<IPCB_ComplexPolygon | undefined>;
5872
- }
5873
- /**
5874
- * 单多边形
5875
- *
5876
- * @public
5877
- */
5878
- class IPCB_Polygon {
5879
- private polygon;
5880
- /** @internal */
5881
- constructor(polygon: TPCB_PolygonSourceArray);
6035
+ getPadsFile(fileName?: string): Promise<File | undefined>;
5882
6036
  /**
5883
- * 获取单多边形数据
6037
+ * 获取 PCB 信息文件
5884
6038
  *
5885
- * @public
5886
- * @returns 单多边形数据
6039
+ * @beta
6040
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
6041
+ * @param fileName - 文件名
6042
+ * @returns PCB 信息文件
6043
+ * @example
6044
+ * ```javascript
6045
+ * const pcbInfoFile = await eda.pcb_ManufactureData.getPcbInfoFile('Board_Information');
6046
+ * if (pcbInfoFile) {
6047
+ * await eda.sys_FileSystem.saveFile(pcbInfoFile);
6048
+ * }
6049
+ * ```
5887
6050
  */
5888
- getSource(): TPCB_PolygonSourceArray;
6051
+ getPcbInfoFile(fileName?: string): Promise<File | undefined>;
5889
6052
  /**
5890
- * 获取单多边形中心点
6053
+ * 获取 IDX 文件
5891
6054
  *
5892
- * @alpha
5893
- * @returns 单多边形中心点
6055
+ * @beta
6056
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
6057
+ * @returns IDX 文件
6058
+ * @example
6059
+ * ```javascript
6060
+ * const idxFile = await eda.pcb_ManufactureData.getIdxFile('Design_Exchange');
6061
+ * if (idxFile) {
6062
+ * await eda.sys_FileSystem.saveFile(idxFile);
6063
+ * }
6064
+ * ```
5894
6065
  */
5895
- getCenter(): Promise<{
5896
- x: number;
5897
- y: number;
5898
- }>;
6066
+ getIdxFile(fileName?: string): Promise<File | undefined>;
5899
6067
  /**
5900
- * 校验单多边形
6068
+ * 元件下单
5901
6069
  *
5902
- * @alpha
5903
- * @remarks 校验并整理输入数据,如数据有误,则抛出错误
5904
- * @returns 单多边形数据
5905
- */
5906
- private validateSource;
5907
- }
5908
- /**
5909
- * 复杂多边形
5910
- *
5911
- * @public
5912
- * @remarks
5913
- * 复杂多边形可以包含多个单多边形,通过 {@link https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/fill-rule | fill-rule} 将其组合,以实现多边形的布尔运算。
5914
- * 目前嘉立创 EDA 专业版固定使用 {@link https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/fill-rule#nonzero | nonzero} 这个 fill-rule。
5915
- */
5916
- class IPCB_ComplexPolygon {
5917
- private complexPolygon;
5918
- /** @internal */
5919
- constructor(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>);
5920
- /**
5921
- * 添加多边形数据
6070
+ * @beta
6071
+ * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
6072
+ * @param interactive - 是否启用交互式检查
5922
6073
  *
5923
- * @public
5924
- * @param complexPolygon - 复杂多边形数据
5925
- * @returns 复杂多边形对象
6074
+ * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
6075
+ * `ignoreWarning` 参数将被忽略;
6076
+ *
6077
+ * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
6078
+ * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
6079
+ * @param ignoreWarning - 在非交互式检查时忽略警告
6080
+ *
6081
+ * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
6082
+ *
6083
+ * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
6084
+ * @returns 是否通过下单检查
5926
6085
  */
5927
- addSource(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>): IPCB_ComplexPolygon;
6086
+ placeComponentsOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5928
6087
  /**
5929
- * 获取多边形数据
6088
+ * SMT 元件下单
5930
6089
  *
5931
- * @public
5932
- * @remarks 如遇仅包含单一的单多边形,将会化简最外层的数组
5933
- * @returns 单多边形或复杂多边形数据
6090
+ * @beta
6091
+ * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
6092
+ * @param interactive - 是否启用交互式检查
6093
+ *
6094
+ * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
6095
+ * 即 `ignoreWarning` 参数将被忽略;
6096
+ *
6097
+ * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
6098
+ * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
6099
+ * @param ignoreWarning - 在非交互式检查时忽略警告
6100
+ *
6101
+ * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
6102
+ *
6103
+ * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
6104
+ * @returns 是否通过下单检查
5934
6105
  */
5935
- getSource(): TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>;
6106
+ placeSmtComponentsOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5936
6107
  /**
5937
- * 获取复杂多边形数据
6108
+ * PCB 下单
5938
6109
  *
5939
- * @public
5940
- * @remarks 强制返回复杂多边形格式数据,即使它仅包含单一的单多边形
5941
- * @returns 复杂多边形数据
6110
+ * @beta
6111
+ * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
6112
+ * @param interactive - 是否启用交互式检查
6113
+ *
6114
+ * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
6115
+ * 即 `ignoreWarning` 参数将被忽略;
6116
+ *
6117
+ * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
6118
+ * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
6119
+ * @param ignoreWarning - 在非交互式检查时忽略警告
6120
+ *
6121
+ * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
6122
+ *
6123
+ * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
6124
+ * @returns 是否通过下单检查
5942
6125
  */
5943
- getSourceStrictComplex(): Array<TPCB_PolygonSourceArray>;
6126
+ placePcbOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5944
6127
  /**
5945
- * 获取复杂多边形中心点
6128
+ * 3D 外壳下单
5946
6129
  *
5947
- * @alpha
5948
- * @returns 复杂多边形中心点
6130
+ * @beta
6131
+ * @remarks 本接口暂时只支持交互式检查,入参暂无作用,预留后续开发
6132
+ * @param interactive - 是否启用交互式检查
6133
+ *
6134
+ * 如若启用,则会存在弹窗等待用户进行交互,且无法使用 `ignoreWarning` 参数忽略警告,
6135
+ * 即 `ignoreWarning` 参数将被忽略;
6136
+ *
6137
+ * 如若禁用,则在调用后不会有任何 EDA 内部弹窗,程序执行静默检查,
6138
+ * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
6139
+ * @param ignoreWarning - 在非交互式检查时忽略警告
6140
+ *
6141
+ * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
6142
+ *
6143
+ * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
6144
+ * @returns 是否通过下单检查
5949
6145
  */
5950
- getCenter(): {
5951
- x: number;
5952
- y: number;
5953
- };
6146
+ place3DShellOrder(interactive?: boolean, ignoreWarning?: boolean): Promise<boolean>;
5954
6147
  /**
5955
- * 校验复杂多边形
6148
+ * 导出制造文件
5956
6149
  *
5957
- * @alpha
5958
- * @returns 复杂多边形数据
6150
+ * @beta
6151
+ * @remarks
6152
+ * 本接口对应私有化部署版本一键导出制造文件功能
6153
+ *
6154
+ * 将根据前端一键导出制造文件弹窗的配置获取其文件数据
6155
+ *
6156
+ * 注意:本接口仅私有化部署版本有效,如若在其他版本调用将始终 `throw Error`
6157
+ * @returns 制造文件
5959
6158
  */
5960
- private validateSource;
6159
+ getManufactureData(): Promise<File | undefined>;
5961
6160
  }
5962
6161
 
5963
6162
  /**
@@ -6849,7 +7048,7 @@ declare global {
6849
7048
  * 获取所有圆弧线的图元 ID
6850
7049
  *
6851
7050
  * @beta
6852
- * @param net - 网络名称
7051
+ * @param net - ���络名称
6853
7052
  * @param layer - 层
6854
7053
  * @param primitiveLock - 是否锁定
6855
7054
  * @returns 圆弧线的图元 ID 数组
@@ -8081,7 +8280,7 @@ declare global {
8081
8280
  * 在 PCB 画布中创建图元
8082
8281
  *
8083
8282
  * @internal
8084
- * @remarks 覆铜填充图元不支持新建,本接口调用将不会有任何效果
8283
+ * @remarks 覆��填充图元不支持新建,本接口调用将不会有任何效果
8085
8284
  * @returns 覆铜填充图元对象
8086
8285
  */
8087
8286
  create(): IPCB_PrimitivePoured;
@@ -8869,7 +9068,7 @@ declare global {
8869
9068
  *
8870
9069
  * @beta
8871
9070
  * @param primitiveId - 图元 ID
8872
- * @param property - 修���参数
9071
+ * @param property - 修改参数
8873
9072
  * @returns 折线图元对象
8874
9073
  */
8875
9074
  modify(primitiveId: string | IPCB_PrimitivePolyline, property: {
@@ -10226,7 +10425,7 @@ declare global {
10226
10425
  *
10227
10426
  * @beta
10228
10427
  * @remarks
10229
- * 本接口模拟前端点击放置按钮,指定的器件将绑定到当前鼠标,并在用户后续点击时放置于画布
10428
+ * 本接口模拟前端点击放置按钮,指定的器件将绑定到当前鼠标,并在用户后续点击时���置于画布
10230
10429
  *
10231
10430
  * 本接口的返回时机并不会等待用户的放置操作,一旦器件被绑定到鼠标,本接口将立即返回 `true` 的结果
10232
10431
  * @param component - 关联库器件
@@ -11636,7 +11835,7 @@ declare global {
11636
11835
  * 将图元转换为异步图元
11637
11836
  *
11638
11837
  * @public
11639
- * @returns 二进制内嵌对象图���对象
11838
+ * @returns 二进制内嵌对象图元对象
11640
11839
  */
11641
11840
  toAsync(): IPCB_PrimitiveObject;
11642
11841
  /**
@@ -12395,7 +12594,7 @@ declare global {
12395
12594
  * 如若达成下单条件,将返回 `true` 并在新标签页打开下单页面
12396
12595
  * @param ignoreWarning - 在非交互式检查时忽略警告
12397
12596
  *
12398
- * 如果设置为 `true`,将会忽略所有检查警告项并尽可能生成下单资料;
12597
+ * 如果设置为 `true`,将会忽���所有检查警告项并尽可能生成下单资料;
12399
12598
  *
12400
12599
  * 如果设置为 `false`,存在任意警告将中断执行并返回 `false` 的结果
12401
12600
  * @returns 是否通过下单检查
@@ -14147,7 +14346,7 @@ declare global {
14147
14346
  */
14148
14347
  toSync(): ISCH_PrimitiveCircle;
14149
14348
  /**
14150
- * 查询图元是否为异步图元
14349
+ * 查询图元是否为异��图元
14151
14350
  *
14152
14351
  * @public
14153
14352
  * @returns 是否为异步图元
@@ -14881,7 +15080,7 @@ declare global {
14881
15080
  * @param addIntoPcb - 是否转到 PCB
14882
15081
  * @param designator - 位号
14883
15082
  * @param name - 名称,`null` 表示留空
14884
- * @param uniqueId - 唯一 ID,`null` 表示���空
15083
+ * @param uniqueId - 唯一 ID,`null` 表示留空
14885
15084
  * @param manufacturer - 制造商,`null` 表示留空
14886
15085
  * @param manufacturerId - 制造商编号,`null` 表示留空
14887
15086
  * @param supplier - 供应商,`null` 表示留空
@@ -15201,7 +15400,7 @@ declare global {
15201
15400
  */
15202
15401
  getState_Manufacturer(): string | undefined;
15203
15402
  /**
15204
- * 获取属性状态:制造商编号
15403
+ * 获取属性���态:制造商编号
15205
15404
  *
15206
15405
  * @public
15207
15406
  * @returns 制造商编号
@@ -15885,7 +16084,7 @@ declare global {
15885
16084
  * 获取属性状态:图元 ID
15886
16085
  *
15887
16086
  * @public
15888
- * @returns 图��� ID
16087
+ * @returns 图元 ID
15889
16088
  */
15890
16089
  getState_PrimitiveId(): string;
15891
16090
  /**
@@ -16250,7 +16449,7 @@ declare global {
16250
16449
  * 在原理图画布中创建图元
16251
16450
  *
16252
16451
  * @internal
16253
- * @returns 器件图元对象
16452
+ * @returns 器件图���对象
16254
16453
  */
16255
16454
  create(): Promise<ISCH_PrimitiveCbbSymbolComponent>;
16256
16455
  /**
@@ -16307,7 +16506,7 @@ declare global {
16307
16506
  /**
16308
16507
  * 创建二进制内嵌对象
16309
16508
  *
16310
- * @alpha
16509
+ * @beta
16311
16510
  * @param startX - 起点坐标 X
16312
16511
  * @param startY - 起点坐标 Y
16313
16512
  * @param width - 宽
@@ -16322,7 +16521,7 @@ declare global {
16322
16521
  /**
16323
16522
  * 删除二进制内嵌对象
16324
16523
  *
16325
- * @alpha
16524
+ * @beta
16326
16525
  * @param primitiveIds - 二进制内嵌对象的图元 ID 或二进制内嵌对象图元对象
16327
16526
  * @returns 删除操作是否成功
16328
16527
  */
@@ -16330,7 +16529,7 @@ declare global {
16330
16529
  /**
16331
16530
  * 修改二进制内嵌对象
16332
16531
  *
16333
- * @alpha
16532
+ * @beta
16334
16533
  * @param primitiveId - 图元 ID
16335
16534
  * @param property - 修改参数
16336
16535
  * @returns 二进制内嵌对象图元对象,`undefined` 表示修改失败
@@ -16348,7 +16547,7 @@ declare global {
16348
16547
  /**
16349
16548
  * 获取二进制内嵌对象
16350
16549
  *
16351
- * @alpha
16550
+ * @beta
16352
16551
  * @param primitiveIds - 二进制内嵌对象的图元 ID,可以为字符串或字符串数组,如若为数组,则返回的也是数组
16353
16552
  * @returns 二进制内嵌对象图元对象,`undefined` 表示获取失败
16354
16553
  */
@@ -16356,7 +16555,7 @@ declare global {
16356
16555
  /**
16357
16556
  * 获取二进制内嵌对象
16358
16557
  *
16359
- * @alpha
16558
+ * @beta
16360
16559
  * @remarks 如若传入多个图元 ID,任意图元 ID 未匹配到不影响其它图元的返回,即可能返回少于传入的图元 ID 数量的图元对象
16361
16560
  * @param primitiveIds - 二进制内嵌对象的图元 ID,可以为字符串或字符串数组,如若为数组,则返回的也是数组
16362
16561
  * @returns 二进制内嵌对象图元对象,空数组表示获取失败
@@ -16365,14 +16564,14 @@ declare global {
16365
16564
  /**
16366
16565
  * 获取所有二进制内嵌对象的图元 ID
16367
16566
  *
16368
- * @alpha
16567
+ * @beta
16369
16568
  * @returns 二进制内嵌对象的图元 ID 数组
16370
16569
  */
16371
16570
  getAllPrimitiveId(): Promise<Array<string>>;
16372
16571
  /**
16373
16572
  * 获取所有二进制内嵌对象
16374
16573
  *
16375
- * @alpha
16574
+ * @beta
16376
16575
  * @returns 二进制内嵌对象图元对象数组
16377
16576
  */
16378
16577
  getAll(): Promise<Array<ISCH_PrimitiveObject>>;
@@ -16414,14 +16613,6 @@ declare global {
16414
16613
  * @returns 二进制内嵌对象图元对象
16415
16614
  */
16416
16615
  create(): Promise<ISCH_PrimitiveObject>;
16417
- /**
16418
- * 将 File 对象转换为 base64 字符串
16419
- *
16420
- * @internal
16421
- * @param file - File 对象
16422
- * @returns base64 字符串
16423
- */
16424
- private fileToBase64;
16425
16616
  /**
16426
16617
  * 获取属性状态:图元类型
16427
16618
  *
@@ -16497,7 +16688,7 @@ declare global {
16497
16688
  *
16498
16689
  * @beta
16499
16690
  * @param content - 对象内容
16500
- * @returns 二进制内嵌��象图元对象
16691
+ * @returns 二进制内嵌对象图元对象
16501
16692
  */
16502
16693
  setState_Content(content: File | string): ISCH_PrimitiveObject;
16503
16694
  /**
@@ -16580,14 +16771,14 @@ declare global {
16580
16771
  /**
16581
16772
  * 将异步图元重置为当前画布状态
16582
16773
  *
16583
- * @alpha
16774
+ * @beta
16584
16775
  * @returns 二进制内嵌对象图元对象
16585
16776
  */
16586
16777
  reset(): Promise<ISCH_PrimitiveObject>;
16587
16778
  /**
16588
16779
  * 将对图元的更改应用到画布
16589
16780
  *
16590
- * @alpha
16781
+ * @beta
16591
16782
  * @returns 二进制内嵌对象图元对象
16592
16783
  */
16593
16784
  done(): Promise<ISCH_PrimitiveObject>;
@@ -17384,7 +17575,7 @@ declare global {
17384
17575
  */
17385
17576
  toSync(): ISCH_PrimitiveWire;
17386
17577
  /**
17387
- * 查询图元是否为异步图元
17578
+ * 查询��元是否为异步图元
17388
17579
  *
17389
17580
  * @public
17390
17581
  * @returns 是否为异步图元
@@ -17776,10 +17967,12 @@ declare global {
17776
17967
  maxDragX?: number;
17777
17968
  maxDragY?: number;
17778
17969
  hide?: boolean;
17970
+ resizingX?: boolean;
17971
+ resizingY?: boolean;
17779
17972
  children?: React$1.ReactNode;
17780
17973
  onMoved?: (top: number, left: number) => void;
17781
17974
  }
17782
- function Modal({ top, left, width, height, maxDragX, maxDragY, hide, overlay, children, onMoved, }: ModalProps): react_jsx_runtime.JSX.Element;
17975
+ function Modal({ top, left, width, height, maxDragX, maxDragY, hide, overlay, resizingX, resizingY, children, onMoved, }: ModalProps): react_jsx_runtime.JSX.Element;
17783
17976
 
17784
17977
  interface DialogProps {
17785
17978
  title: string;
@@ -17791,9 +17984,12 @@ declare global {
17791
17984
  overlay?: boolean;
17792
17985
  maxDragY?: number;
17793
17986
  modal?: boolean;
17987
+ resizingX?: boolean;
17988
+ resizingY?: boolean;
17794
17989
  buttons?: ButtonProps[];
17795
17990
  onClose?: () => void;
17796
17991
  children?: React$1.ReactNode;
17992
+ footer?: React$1.ReactNode;
17797
17993
  }
17798
17994
  function Dialog(props: DialogProps): react_jsx_runtime.JSX.Element;
17799
17995
 
@@ -18381,7 +18577,7 @@ declare global {
18381
18577
  * 打开读入文件窗口
18382
18578
  *
18383
18579
  * @beta
18384
- * @param filenameExtensions - 文件扩展名
18580
+ * @param filenameExtensions - 文件��展名
18385
18581
  * @param multiFiles - 是否允许读取多文件
18386
18582
  * @returns File 格式文件
18387
18583
  */
@@ -18565,7 +18761,7 @@ declare global {
18565
18761
  */
18566
18762
  convertAltiumDesignerLibrariesToEasyEDASingleFile(file: File | Array<File>): Promise<File | undefined>;
18567
18763
  /**
18568
- * 转换 Altium Designer 库到多个嘉立创库文件(��个器件一个文件)
18764
+ * 转换 Altium Designer 库到多个嘉立创库文件(每个器件一个文件)
18569
18765
  *
18570
18766
  * @beta
18571
18767
  * @param file - Altium Designer 库文件
@@ -19384,7 +19580,7 @@ declare global {
19384
19580
  * @public
19385
19581
  * @param message - 消息内容
19386
19582
  * @param messageType - 消息类型
19387
- * @param timer - 自动关闭倒计时秒数,`0` 为不自动关闭
19583
+ * @param timer - 自动关闭���计时秒数,`0` 为不自动关闭
19388
19584
  * @param bottomPanel - 展开底部信息面板
19389
19585
  * @param buttonTitle - 回调按钮标题
19390
19586
  * @param buttonCallbackFn - 回调函数内容,字符串形式,会被自动解析并执行
@@ -19889,7 +20085,7 @@ declare global {
19889
20085
  * 系统 / 定时器类
19890
20086
  *
19891
20087
  * @public
19892
- * @remarks 设置定时器
20088
+ * @remarks 设置���时器
19893
20089
  */
19894
20090
  class SYS_Timer {
19895
20091
  /** 扩展 UUID */
@@ -20066,7 +20262,7 @@ declare global {
20066
20262
  * 关闭 WebSocket 连接
20067
20263
  *
20068
20264
  * @public
20069
- * @remarks 注意:本接口需要使用者启用扩展的外部交互权限,如若��启用将始终 `throw Error`
20265
+ * @remarks 注意:本接口需要使用者启用扩展的外部交互权限,如若未启用将始终 `throw Error`
20070
20266
  * @param id - 自定义的 WebSocket ID
20071
20267
  * @param code - 数字状态码,对应 {@link https://developer.mozilla.org/docs/Web/API/CloseEvent/code | WebSocket.CloseEvent} 内允许的状态码
20072
20268
  * @param reason - 一个人类可读的字符串,解释连接关闭的原因