@jlceda/pro-api-types 0.2.37 → 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 +1581 -1377
  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 - 符号类型,默认为全部
@@ -1880,7 +1880,7 @@ declare global {
1880
1880
  * @param libraryUuid - 库 UUID,可以使用 {@link LIB_LibrariesList} 内的接口获取
1881
1881
  * @param targetLibraryUuid - 目标库 UUID
1882
1882
  * @param targetClassification - 目标库内的分类
1883
- * @param newModelName - 新 3D 模型名称,如若目标库内存在���名 3D 模型将导致复制失败
1883
+ * @param newModelName - 新 3D 模型名称,如若目标库内存在重名 3D 模型将导致复制失败
1884
1884
  * @returns 目标库内新 3D 模型的 UUID
1885
1885
  */
1886
1886
  copy(modelUuid: string, libraryUuid: string, targetLibraryUuid: string, targetClassification?: ILIB_ClassificationIndex | Array<string>, newModelName?: string): Promise<string | undefined>;
@@ -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. 当图元为过孔时,允许设置顶层/底层的阻焊扩展,助焊扩展的设置不生效,如若为盲孔,则视其暴露层生效其阻焊扩展设置
3375
+ * @remarks 此处为所有在编辑器图层菜单中可以选中并设置可见性的图层
3376
+ */
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;
3378
+ /**
3379
+ * 内层
3226
3380
  *
3227
- * 助焊扩展在一般情况下仅用于钢网生产等特定用途,不了解其作用请安心地忽略其参数设置
3381
+ * @public
3228
3382
  */
3229
- interface IPCB_PrimitiveSolderMaskAndPasteMaskExpansion {
3230
- /** 顶层阻焊扩展 */
3231
- topSolderMask?: number;
3232
- /** 底层阻焊扩展 */
3233
- bottomSolderMask?: number;
3234
- /** 顶层助焊扩展 */
3235
- topPasteMask?: number;
3236
- /** 底层助焊扩展 */
3237
- bottomPasteMask?: number;
3238
- }
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;
3239
3384
  /**
3240
- * PCB & 封装 / 图元类
3385
+ * 自定义层
3241
3386
  *
3242
3387
  * @public
3243
- * @remarks 图元的统一操作
3244
3388
  */
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>;
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
+ * 获取当前图层的详细属性
3337
3549
  *
3338
- * @public
3339
- * @param uuid - 原理图 UUID,默认为关联在同一个 Board 下的原理图
3340
- * @returns 导入操作是否成功,导入失败或未传入原理图 UUID 的游离 PCB 将返回 `false`
3550
+ * @alpha
3551
+ * @returns 当前图层的详细属性
3341
3552
  */
3342
- importChanges(uuid?: string): Promise<boolean>;
3553
+ getCurrentLayer(): IPCB_LayerItem | undefined;
3343
3554
  /**
3344
- * 导入自动布线文件(JSON)
3555
+ * 选中图层
3345
3556
  *
3346
- * @beta
3347
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3348
- * @param autoRouteFile - 欲导入的 JSON 文件
3349
- * @returns 导入操作是否成功
3557
+ * @public
3558
+ * @param layer -
3559
+ * @returns 操作是否成功,不存在指定层将返回 `false`
3350
3560
  */
3351
- importAutoRouteJsonFile(autoRouteFile: File): Promise<boolean>;
3561
+ selectLayer(layer: TPCB_LayersInTheSelectable): Promise<boolean>;
3352
3562
  /**
3353
- * 导入自动布线文件(SES)
3563
+ * 将层设置为可见
3354
3564
  *
3355
3565
  * @beta
3356
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3357
- * @param autoRouteFile - 欲导入的 SES 文件
3358
- * @returns 导入操作是否成功
3566
+ * @param layer - 层,如若不指定任何层则默认为所有层
3567
+ * @param setOtherLayerInvisible - 是否将其它层设置为不可见
3568
+ * @returns 操作是否成功
3359
3569
  */
3360
- importAutoRouteSesFile(autoRouteFile: File): Promise<boolean>;
3570
+ setLayerVisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerInvisible?: boolean): Promise<boolean>;
3361
3571
  /**
3362
- * 导入自动布局文件(JSON)
3572
+ * 将层设置为不可见
3363
3573
  *
3364
3574
  * @beta
3365
- * @remarks 可以使用 {@link SYS_FileSystem.openReadFileDialog} 读入文件
3366
- * @param autoLayoutFile - 欲导入的 JSON 文件
3367
- * @returns 导入操作是否成功
3575
+ * @param layer - 层,如若不指定任何层则默认为所有层
3576
+ * @param setOtherLayerVisible - 是否将其它层设置为可见
3577
+ * @returns 操作是否成功
3368
3578
  */
3369
- importAutoLayoutJsonFile(autoLayoutFile: File): Promise<boolean>;
3579
+ setLayerInvisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerVisible?: boolean): Promise<boolean>;
3370
3580
  /**
3371
- * 保存文档
3581
+ * 锁定层
3372
3582
  *
3373
- * @public
3374
- * @returns 保存操作是否成功,保存失败、上���失败等错误均返回 `false`
3583
+ * @beta
3584
+ * @param layer - 层,如若不指定任何层则默认为所有层
3585
+ * @returns 操作是否成功
3375
3586
  */
3376
- save(uuid: string): Promise<boolean>;
3587
+ lockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
3377
3588
  /**
3378
- * 获取当前飞线计算功能状态
3589
+ * 取消锁定层
3379
3590
  *
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 的所有网络规则
4021
+ * @public
4022
+ * @param complexPolygon - 复杂多边形数据
4023
+ * @returns 复杂多边形对象
3744
4024
  */
3745
- getNetRules(): Promise<Array<{
3746
- [key: string]: any;
3747
- }>>;
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"
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;
4046
4466
  }
4047
4467
  /**
4048
- * 图元事件类型
4468
+ * 差分对属性
4049
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>;
4705
+ /**
4706
+ * 获取区域规则
4707
+ *
4708
+ * @beta
4709
+ * @returns - 当前 PCB 的所有区域规则
4710
+ */
4711
+ getRegionRules(): Promise<Array<{
4712
+ [key: string]: any;
4713
+ }>>;
4714
+ /**
4715
+ * 覆写区域规则
4716
+ *
4717
+ * @beta
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 - 网络类颜色
4732
+ * @returns 操作是否成功
4733
+ */
4734
+ createNetClass(netClassName: string, nets: Array<string>, color: IPCB_EqualLengthNetGroupItem['color']): Promise<boolean>;
4735
+ /**
4736
+ * 删除网络类
4737
+ *
4738
+ * @beta
4739
+ * @param netClassName - 网络类名称
4740
+ * @returns 操作是否成功
4741
+ */
4742
+ deleteNetClass(netClassName: string): Promise<boolean>;
4743
+ /**
4744
+ * 修改网络类的名称
4745
+ *
4746
+ * @beta
4747
+ * @param originalNetClassName - 原网络类名称
4748
+ * @param netClassName - 新网络类名称
4749
+ * @returns 操作是否成功
4750
+ */
4751
+ modifyNetClassName(originalNetClassName: string, netClassName: string): Promise<boolean>;
4752
+ /**
4753
+ * 将网络添加到网络类
4754
+ *
4755
+ * @beta
4756
+ * @param netClassName - 网络类名称
4757
+ * @param net - 网络名称
4758
+ * @returns 操作是否成功
4759
+ */
4760
+ addNetToNetClass(netClassName: string, net: string | Array<string>): Promise<boolean>;
4761
+ /**
4762
+ * 从网络类中移除网络
4763
+ *
4764
+ * @beta
4765
+ * @param netClassName - 网络类名称
4766
+ * @param net - 网络名称
4767
+ * @returns 操作是否成功
4768
+ */
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>;
4548
4853
  /**
4549
- * 选中图层
4854
+ * 修改等长网络组的名称
4550
4855
  *
4551
- * @public
4552
- * @param layer -
4553
- * @returns 操作是否成功,不存在指定层将返回 `false`
4856
+ * @beta
4857
+ * @param originalEqualLengthNetGroupName - 原等长网络组名称
4858
+ * @param equalLengthNetGroupName - 新等长网络组名称
4859
+ * @returns 操作是否成功
4554
4860
  */
4555
- selectLayer(layer: TPCB_LayersInTheSelectable): Promise<boolean>;
4861
+ modifyEqualLengthNetGroupName(originalEqualLengthNetGroupName: string, equalLengthNetGroupName: string): Promise<boolean>;
4556
4862
  /**
4557
- * 将层设置为可见
4863
+ * 将网络添加到等长网络组
4558
4864
  *
4559
4865
  * @beta
4560
- * @param layer - 层,如若不指定任何层则默认为所有层
4561
- * @param setOtherLayerInvisible - 是否将其它层设置为不可见
4866
+ * @param equalLengthNetGroupName - 等长网络组名称
4867
+ * @param net - 网络名称
4562
4868
  * @returns 操作是否成功
4563
4869
  */
4564
- setLayerVisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerInvisible?: boolean): Promise<boolean>;
4870
+ addNetToEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4565
4871
  /**
4566
- * 将层设置为不可见
4872
+ * 从等长网络组中移除网络
4567
4873
  *
4568
4874
  * @beta
4569
- * @param layer - 层,如若不指定任何层则默认为所有层
4570
- * @param setOtherLayerVisible - 是否将其它层设置为可见
4875
+ * @param equalLengthNetGroupName - 等长网络组名称
4876
+ * @param net - 网络名称
4571
4877
  * @returns 操作是否成功
4572
4878
  */
4573
- setLayerInvisible(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>, setOtherLayerVisible?: boolean): Promise<boolean>;
4879
+ removeNetFromEqualLengthNetGroup(equalLengthNetGroupName: string, net: string | Array<string>): Promise<boolean>;
4574
4880
  /**
4575
- * 锁定层
4881
+ * 获取所有等长网络组的详细属性
4576
4882
  *
4577
4883
  * @beta
4578
- * @param layer - 层,如若不指定任何层则默认为所有层
4579
- * @returns 操作是否成功
4884
+ * @returns 所有等长网络组的详细属性
4580
4885
  */
4581
- lockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
4886
+ getAllEqualLengthNetGroups(): Promise<Array<IPCB_EqualLengthNetGroupItem>>;
4582
4887
  /**
4583
- * 取消锁定层
4888
+ * 创建焊盘对组
4584
4889
  *
4585
4890
  * @beta
4586
- * @param layer - 层,如若不指定任何层则默认为所有层
4891
+ * @param padPairGroupName - 焊盘对组名称
4892
+ * @param padPairs - 焊盘对数组
4587
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']]) // 器件焊盘 - 游离焊盘
4588
4898
  */
4589
- unlockLayer(layer?: TPCB_LayersInTheSelectable | Array<TPCB_LayersInTheSelectable>): Promise<boolean>;
4899
+ createPadPairGroup(padPairGroupName: string, padPairs: Array<[string, string]>): Promise<boolean>;
4590
4900
  /**
4591
- * 设置铜箔层数
4901
+ * 删除焊盘对组
4592
4902
  *
4593
4903
  * @beta
4594
- * @remarks 新建的 PCB 文档默认拥有两层铜箔层
4595
- * @param numberOfLayers - 层数
4904
+ * @param padPairGroupName - 焊盘对组名称
4596
4905
  * @returns 操作是否成功
4597
4906
  */
4598
- setTheNumberOfCopperLayers(numberOfLayers: 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32): Promise<boolean>;
4907
+ deletePadPairGroup(padPairGroupName: string): Promise<boolean>;
4599
4908
  /**
4600
- * 获取铜箔层数
4909
+ * 修改焊盘对组的名称
4601
4910
  *
4602
- * @alpha
4603
- * @returns 层数
4911
+ * @beta
4912
+ * @param originalPadPairGroupName - 原焊盘对组名称
4913
+ * @param padPairGroupName - 新焊盘对组名称
4914
+ * @returns 操作是否成功
4604
4915
  */
4605
- getTheNumberOfCopperLayers(): Promise<number>;
4916
+ modifyPadPairGroupName(originalPadPairGroupName: string, padPairGroupName: string): Promise<boolean>;
4606
4917
  /**
4607
- * 设置层颜色配置
4918
+ * 将焊盘对添加到焊盘对组
4608
4919
  *
4609
4920
  * @beta
4610
- * @param colorConfiguration - 颜色配置
4921
+ * @param padPairGroupName - 焊盘对组名称
4922
+ * @param padPair - 焊盘对
4611
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']) // 器件焊盘 - 游离焊盘
4612
4928
  */
4613
- setLayerColorConfiguration(colorConfiguration: EPCB_LayerColorConfiguration): Promise<boolean>;
4929
+ addPadPairToPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4614
4930
  /**
4615
- * 设置非激活层透明度
4931
+ * 从焊盘对组中移除焊盘对
4616
4932
  *
4617
4933
  * @beta
4618
- * @param transparency - 透明度,范围 `0-100`
4934
+ * @param padPairGroupName - 焊盘对组名称
4935
+ * @param padPair - 焊盘对
4619
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']) // 器件焊盘 - 游离焊盘
4620
4941
  */
4621
- setInactiveLayerTransparency(transparency: number): Promise<boolean>;
4942
+ removePadPairFromPadPairGroup(padPairGroupName: string, padPair: [string, string] | Array<[string, string]>): Promise<boolean>;
4622
4943
  /**
4623
- * 设置 PCB 类型
4944
+ * 获取所有焊盘对组的详细属性
4624
4945
  *
4625
4946
  * @beta
4626
- * @remarks
4627
- * 此处主要是为了适配 FPC 软板的设计,如若将 PCB 类型设置为 FPC 软板,将会新增 FPC 补强层图层。
4628
- *
4629
- * 请注意:
4630
- *
4631
- * 1. 嘉立创暂不支持超过 2 层铜箔层的 FPC 软板生产;
4947
+ * @returns 所有焊盘对组的详细属性
4948
+ */
4949
+ getAllPadPairGroups(): Promise<Array<IPCB_PadPairGroupItem>>;
4950
+ /**
4951
+ * 获取焊盘对组最短导线长度
4632
4952
  *
4633
- * 2. 将 PCB 类型从 FPC 软板切换为普通板材时需要预先删除 FPC 补强层上的任何图元,否则将无法切换并返回 `false` 的结果。
4634
- * @param pcbType - PCB 类型
4635
- * @returns 操作是否成功
4953
+ * @beta
4954
+ * @param padPairGroupName - 焊盘对组名称
4955
+ * @returns 所有焊盘对的最短导线长度
4636
4956
  */
4637
- setPcbType(pcbType: EPCB_PcbPlateType): Promise<boolean>;
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?;
4638
5008
  /**
4639
- * 新增自定义层
5009
+ * @internal
5010
+ * @param extensionUuid - 扩展 UUID
5011
+ */
5012
+ constructor(extensionUuid?: string);
5013
+ /**
5014
+ * 新增鼠标事件监听
4640
5015
  *
4641
5016
  * @beta
4642
- * @returns 新增的自定义层的图层 ID,如若为 `undefined` 则为新增失败,可能是自定义层数量已达到上限
5017
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5018
+ * @param id - 事件 ID,用以防止重复注册事件
5019
+ * @param eventType - 事件类型
5020
+ * @param callFn - 事件触发时的回调函数
5021
+ * @param onlyOnce - 是否仅监听一次
4643
5022
  */
4644
- addCustomLayer(): Promise<TPCB_LayersOfCustom | undefined>;
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;
4645
5033
  /**
4646
- * 移除层
5034
+ * 新增图元事件监听
4647
5035
  *
4648
5036
  * @beta
4649
- * @remarks 当前仅支持移除自定义层
4650
- * @param layer -
4651
- * @returns 操作是否成功
5037
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5038
+ * @param id - 事件 ID,用以防止重复注册事件
5039
+ * @param eventType - 事件类型
5040
+ * @param callFn - 事件触发时的回调函数
5041
+ * @param onlyOnce - 是否仅监听一次
4652
5042
  */
4653
- removeLayer(layer: TPCB_LayersOfCustom): 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;
4654
5053
  /**
4655
- * 修改图层属性
5054
+ * 新增网络事件监听
4656
5055
  *
4657
5056
  * @beta
4658
- * @remarks 仅内层和自定义层允许修改名称;仅内层允许修改类型, 透明度仅支持0-100之间的数
4659
- * @param layer - 层
4660
- * @param property - 属性
4661
- * @returns 修改后的图层属性,如若为 `undefined` 则代表修改失败或图层不存在
5057
+ * @remarks
5058
+ * 网络选中事件仅
5059
+ *
5060
+ * ①在过滤面板选中网络选项并在画布选中网络时
5061
+ *
5062
+ * ②在工程设计 -\> 网络内选中网络时
5063
+ *
5064
+ * 会被触发
5065
+ *
5066
+ * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5067
+ * @param id - 事件 ID,用以防止重复注册事件
5068
+ * @param eventType - 事件类型
5069
+ * @param callFn - 事件触发时的回调函数
5070
+ * @param onlyOnce - 是否仅监听一次
4662
5071
  */
4663
- modifyLayer(layer: TPCB_LayersInTheSelectable, property: {
4664
- name?: string;
4665
- type?: TPCB_LayerTypesOfInnerLayer;
4666
- color?: string;
4667
- transparency?: number;
4668
- }): Promise<boolean>;
5072
+ addNetEventListener(id: string, eventType: 'all' | EPCB_NetEventType, callFn: (eventType: EPCB_NetEventType, props: [{
5073
+ net: string;
5074
+ }]) => void | Promise<void>, onlyOnce?: boolean): void;
4669
5075
  /**
4670
- * 获取所有图层的详细属性
5076
+ * 新增交叉选择事件监听
4671
5077
  *
4672
5078
  * @beta
4673
- * @returns 所有图层的详细属性
5079
+ * @remarks 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5080
+ * @param id - 事件 ID,用以防止重复注册事件
5081
+ * @param callFn - 事件触发时的回调函数
4674
5082
  */
4675
- getAllLayers(): Promise<Array<IPCB_LayerItem>>;
5083
+ addCrossProbeSelectEventListener(id: string, callFn: (props: any) => void | Promise<void>): void;
4676
5084
  /**
4677
- * 设置非激活层展示模式
5085
+ * 新增实时 DRC 结果事件监听
5086
+ *
5087
+ * @alpha
5088
+ * @remarks
5089
+ * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
5090
+ * @param id - 事件 ID,用以防止重复注册事件
5091
+ * @param eventType - 事件类型
5092
+ * @param callFn - 事件触发时的回调函数
5093
+ */
5094
+ addRealTimeDrcResultEventListener(id: string, eventType: 'all', callFn: (eventType: undefined, props: [{
5095
+ drcResult: any;
5096
+ }]) => void | Promise<void>): void;
5097
+ /**
5098
+ * 移除事件监听
5099
+ *
5100
+ * @public
5101
+ * @param id - 事件 ID
5102
+ * @returns 是否移除指定事件监听
5103
+ */
5104
+ removeEventListener(id: string): boolean;
5105
+ /**
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
  *
@@ -5546,7 +5978,7 @@ declare global {
5546
5978
  * 获取 JRouter 专用自动布线文件(JSON)
5547
5979
  *
5548
5980
  * @beta
5549
- * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口���文件导出到本地文件系统
5981
+ * @remarks 可以使用 {@link SYS_FileSystem.saveFile} 接口将文件导出到本地文件系统
5550
5982
  * @param fileName - 文件名
5551
5983
  * @returns 自动布线 JSON 文件数据
5552
5984
  */
@@ -5727,239 +6159,6 @@ declare global {
5727
6159
  getManufactureData(): Promise<File | undefined>;
5728
6160
  }
5729
6161
 
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 宽度
5844
- */
5845
- calculateWidth(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
5846
- calculateBBoxWidth(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>): number;
5847
- /**
5848
- * 计算复杂多边形 BBox 高度
5849
- *
5850
- * @alpha
5851
- * @param complexPolygon - 复杂多边形
5852
- * @returns BBox 高度
5853
- */
5854
- calculateHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | IPCB_ComplexPolygon): number;
5855
- calculateBBoxHeight(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>): number;
5856
- /**
5857
- * 将图像转换为复杂多边形对象
5858
- *
5859
- * @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 复杂多边形对象
5870
- */
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);
5882
- /**
5883
- * 获取单多边形数据
5884
- *
5885
- * @public
5886
- * @returns 单多边形数据
5887
- */
5888
- getSource(): TPCB_PolygonSourceArray;
5889
- /**
5890
- * 获取单多边形中心点
5891
- *
5892
- * @alpha
5893
- * @returns 单多边形中心点
5894
- */
5895
- getCenter(): Promise<{
5896
- x: number;
5897
- y: number;
5898
- }>;
5899
- /**
5900
- * 校验单多边形
5901
- *
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
- * 添加多边形数据
5922
- *
5923
- * @public
5924
- * @param complexPolygon - 复杂多边形数据
5925
- * @returns 复杂多边形对象
5926
- */
5927
- addSource(complexPolygon: TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray> | IPCB_Polygon | Array<IPCB_Polygon>): IPCB_ComplexPolygon;
5928
- /**
5929
- * 获取多边形数据
5930
- *
5931
- * @public
5932
- * @remarks 如遇仅包含单一的单多边形,将会化简最外层的数组
5933
- * @returns 单多边形或复杂多边形数据
5934
- */
5935
- getSource(): TPCB_PolygonSourceArray | Array<TPCB_PolygonSourceArray>;
5936
- /**
5937
- * 获取复杂多边形数据
5938
- *
5939
- * @public
5940
- * @remarks 强制返回复杂多边形格式数据,即使它仅包含单一的单多边形
5941
- * @returns 复杂多边形数据
5942
- */
5943
- getSourceStrictComplex(): Array<TPCB_PolygonSourceArray>;
5944
- /**
5945
- * 获取复杂多边形中心点
5946
- *
5947
- * @alpha
5948
- * @returns 复杂多边形中心点
5949
- */
5950
- getCenter(): {
5951
- x: number;
5952
- y: number;
5953
- };
5954
- /**
5955
- * 校验复杂多边形
5956
- *
5957
- * @alpha
5958
- * @returns 复杂多边形数据
5959
- */
5960
- private validateSource;
5961
- }
5962
-
5963
6162
  /**
5964
6163
  * 网络属性
5965
6164
  *
@@ -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;
@@ -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 是否为异步图元
@@ -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 制造商编号
@@ -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
  /**
@@ -17070,7 +17269,7 @@ declare global {
17070
17269
  * 设置属性状态:圆角半径
17071
17270
  *
17072
17271
  * @beta
17073
- * @param cornerRadius - 圆角���径
17272
+ * @param cornerRadius - 圆角半径
17074
17273
  * @returns 矩形图元对象
17075
17274
  */
17076
17275
  setState_CornerRadius(cornerRadius: number): ISCH_PrimitiveRectangle;
@@ -17376,7 +17575,7 @@ declare global {
17376
17575
  */
17377
17576
  toSync(): ISCH_PrimitiveWire;
17378
17577
  /**
17379
- * 查询图元是否为异步图元
17578
+ * 查询��元是否为异步图元
17380
17579
  *
17381
17580
  * @public
17382
17581
  * @returns 是否为异步图元
@@ -17768,10 +17967,12 @@ declare global {
17768
17967
  maxDragX?: number;
17769
17968
  maxDragY?: number;
17770
17969
  hide?: boolean;
17970
+ resizingX?: boolean;
17971
+ resizingY?: boolean;
17771
17972
  children?: React$1.ReactNode;
17772
17973
  onMoved?: (top: number, left: number) => void;
17773
17974
  }
17774
- 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;
17775
17976
 
17776
17977
  interface DialogProps {
17777
17978
  title: string;
@@ -17783,9 +17984,12 @@ declare global {
17783
17984
  overlay?: boolean;
17784
17985
  maxDragY?: number;
17785
17986
  modal?: boolean;
17987
+ resizingX?: boolean;
17988
+ resizingY?: boolean;
17786
17989
  buttons?: ButtonProps[];
17787
17990
  onClose?: () => void;
17788
17991
  children?: React$1.ReactNode;
17992
+ footer?: React$1.ReactNode;
17789
17993
  }
17790
17994
  function Dialog(props: DialogProps): react_jsx_runtime.JSX.Element;
17791
17995
 
@@ -18135,7 +18339,7 @@ declare global {
18135
18339
  * 弹出确认窗口
18136
18340
  *
18137
18341
  * @public
18138
- * @remarks 显示一个拥有确认和��消按钮的窗口
18342
+ * @remarks 显示一个拥有确认和取消按钮的窗口
18139
18343
  * @param content - 消息文本,支持使用 `\n` 换行
18140
18344
  * @param title - 弹出窗口标题
18141
18345
  * @param mainButtonTitle - 主要按钮标题
@@ -18373,7 +18577,7 @@ declare global {
18373
18577
  * 打开读入文件窗口
18374
18578
  *
18375
18579
  * @beta
18376
- * @param filenameExtensions - 文件扩展名
18580
+ * @param filenameExtensions - 文件��展名
18377
18581
  * @param multiFiles - 是否允许读取多文件
18378
18582
  * @returns File 格式文件
18379
18583
  */
@@ -19001,7 +19205,7 @@ declare global {
19001
19205
  *
19002
19206
  * @beta
19003
19207
  * @remarks
19004
- * 关闭指��� ID 的内联框架窗口
19208
+ * 关闭指定 ID 的内联框架窗口
19005
19209
  *
19006
19210
  * 注意:本接口仅扩展有效,在独立脚本环境内调用将始终 `throw Error`
19007
19211
  * @param id - 内联框架窗口 ID,如若传入 `undefined`,将关闭由本扩展打开的所有内联框架窗口
@@ -19376,7 +19580,7 @@ declare global {
19376
19580
  * @public
19377
19581
  * @param message - 消息内容
19378
19582
  * @param messageType - 消息类型
19379
- * @param timer - 自动关闭倒计时秒数,`0` 为不自动关闭
19583
+ * @param timer - 自动关闭���计时秒数,`0` 为不自动关闭
19380
19584
  * @param bottomPanel - 展开底部信息面板
19381
19585
  * @param buttonTitle - 回调按钮标题
19382
19586
  * @param buttonCallbackFn - 回调函数内容,字符串形式,会被自动解析并执行
@@ -19881,7 +20085,7 @@ declare global {
19881
20085
  * 系统 / 定时器类
19882
20086
  *
19883
20087
  * @public
19884
- * @remarks 设置定时器
20088
+ * @remarks 设置���时器
19885
20089
  */
19886
20090
  class SYS_Timer {
19887
20091
  /** 扩展 UUID */