@manycore/custom-sdk 1.7.0-rc.0

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 (4) hide show
  1. package/index.css +20 -0
  2. package/index.d.ts +2264 -0
  3. package/index.js +144 -0
  4. package/package.json +36 -0
package/index.d.ts ADDED
@@ -0,0 +1,2264 @@
1
+ import { ELineType as ELineType_2 } from '@manycore/custom-miniapp-sdk';
2
+ import { IExportModelData } from '@manycore/custom-miniapp-sdk';
3
+ import { IParamModelPhotoResponse } from '@manycore/custom-miniapp-sdk';
4
+ import { Number3 } from '@manycore/custom-miniapp-sdk';
5
+
6
+ declare interface AMap<K, V> {
7
+ clear(): void;
8
+ delete(key: K): boolean;
9
+ forEach(callbackfn: (value: V, key: K, map: AMap<K, V>) => void, thisArg?: any): void;
10
+ get(key: K): V | undefined;
11
+ has(key: K): boolean;
12
+ set(key: K, value: V): this;
13
+ readonly size: number;
14
+ }
15
+
16
+ /**
17
+ * 对接2.0主应用
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const application = new Application();
22
+ * ```
23
+ */
24
+ export declare class Application {
25
+ constructor();
26
+ private serviceMap;
27
+ /**
28
+ * 启动对接2.0应用
29
+ *
30
+ * 当前,在启动对接2.0应用时,默认会自动把酷家乐主工具当中,选中的模型,加载至对接2.0场景当中。
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * await application.start();
35
+ * ```
36
+ */
37
+ start(): Promise<void>;
38
+ /**
39
+ * 初始化语言类型(默认不需要处理)
40
+ *
41
+ * 如果你有多语言的诉求,可能会用到此功能
42
+ *
43
+ * @param lang
44
+ * @param resource
45
+ */
46
+ initLange(lang?: string, resource?: {}): void;
47
+ /**
48
+ * 停止对接2.0应用
49
+ *
50
+ * 当停用时,会让主工具当中,更新模型最新的锁定状态。
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * await application.stop();
55
+ * ```
56
+ */
57
+ stop(): Promise<void>;
58
+ /**
59
+ *
60
+ * 对接2.0中,获取相关的service
61
+ *
62
+ * 如果需要调用此方法,需要确保`Application`调用过`start`方法
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const s = application.getService(FittingDesignService);
67
+ * ```
68
+ *
69
+ * @param serv
70
+ */
71
+ getService<T extends BaseService>(serv: {
72
+ new (): T;
73
+ }): T;
74
+ }
75
+
76
+ /**
77
+ * @private
78
+ */
79
+ declare abstract class BaseService {
80
+ __onDestroy?(): void;
81
+ }
82
+
83
+ /**
84
+ * 模型相关控制的逻辑
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const CustomModelService = application.getService(CustomModelService);
89
+ * ```
90
+ */
91
+ export declare class CustomModelService extends BaseService {
92
+ /**
93
+ * 获取所有模型
94
+ * @returns Promise<IParamModelLite[]>
95
+ */
96
+ getAllCustomModels(): Promise<IParamModelLite[]>;
97
+ /**
98
+ * 根据id获取所有模型
99
+ * @param id 模型id
100
+ * @returns Promise<IParamModelLite | undefined>
101
+ */
102
+ getCustomModelById(id: string): Promise<IParamModelLite | undefined>;
103
+ /**
104
+ * 保存模型改动
105
+ * @example
106
+ * ```typescript
107
+ * // 模型改动:隐藏
108
+ * model.setHidden(true);
109
+ * // 保存模型改动
110
+ * ModelService.save({ models: [model] }});
111
+ * ```
112
+ * @param option
113
+ * @returns Promise<void>
114
+ */
115
+ save(option: {
116
+ models: IParamModelLite[];
117
+ }): Promise<void>;
118
+ }
119
+
120
+ /**
121
+ * 相机展示模式
122
+ */
123
+ export declare enum ECameraMode {
124
+ /**
125
+ * 鸟瞰模式
126
+ */
127
+ View3D = "view3d",
128
+ /**
129
+ * 漫游模式
130
+ */
131
+ Roamer = "roamer"
132
+ }
133
+
134
+ /**
135
+ * 场景相机方向移动
136
+ */
137
+ export declare enum ECameraMoveDirection {
138
+ /**
139
+ * 上移
140
+ */
141
+ UP = "UP",
142
+ /**
143
+ * 下移
144
+ */
145
+ DOWN = "DOWN",
146
+ /**
147
+ * 左移
148
+ */
149
+ LEFT = "LEFT",
150
+ /**
151
+ * 右移
152
+ */
153
+ RIGHT = "RIGHT",
154
+ /**
155
+ * 前进
156
+ */
157
+ FRONT = "FRONT",
158
+ /**
159
+ * 后退
160
+ */
161
+ BACK = "BACK"
162
+ }
163
+
164
+ /**
165
+ * 交互模式
166
+ */
167
+ export declare enum EDesignMode {
168
+ /**
169
+ * 自定模式
170
+ */
171
+ CUSTOM = 'custom',
172
+ /**
173
+ * 顶层模式
174
+ */
175
+ TOP_MODEL = 'top_model',
176
+ /**
177
+ * 组件模式
178
+ */
179
+ ACCESSORY = 'accessory',
180
+ /**
181
+ * 底层商品模式
182
+ */
183
+ PRODUCT = 'product',
184
+ }
185
+
186
+ /**
187
+ * 孔槽配件类型
188
+ */
189
+ export declare enum EFittingType {
190
+ /**
191
+ * 槽
192
+ */
193
+ GROOVE = 1,
194
+ /**
195
+ * 孔
196
+ */
197
+ HOLE = 2,
198
+ /**
199
+ * 五金
200
+ */
201
+ HARDWARE = 3,
202
+ /**
203
+ * 五金槽
204
+ */
205
+ HARDWARE_GROOVE = 4,
206
+ /**
207
+ * 交接面信息
208
+ */
209
+ INTERSECTED = 'intersected',
210
+ }
211
+
212
+ /**
213
+ * 交接信息的产生方式
214
+ */
215
+ export declare enum EIntersectedCreatedType {
216
+ /**
217
+ * 板与板之间产生的交界
218
+ */
219
+ BOTH_PLANK,
220
+ /**
221
+ * 板与五金之间产生的交界信息
222
+ */
223
+ PLANK_FURNITURE,
224
+ }
225
+
226
+ /**
227
+ * 交接数据的数据类型
228
+ */
229
+ export declare enum EIntersectedType {
230
+ /**
231
+ * 交接体
232
+ */
233
+ SHELL = '1',
234
+ /**
235
+ * 交界面
236
+ */
237
+ FACE = '2',
238
+ }
239
+
240
+ /**
241
+ * 语言
242
+ */
243
+ export declare enum ELanguage {
244
+ ZH_CN = 'zh_CN',
245
+ EN_US = 'en_US',
246
+ DE_DE = 'de_DE',
247
+ FR_FR = 'fr_FR',
248
+ JA_JP = 'ja_JP',
249
+ ZH_TW = 'zh_TW',
250
+ RU_RU = 'ru_RU',
251
+ KO_KR = 'ko_KR',
252
+ ES_ES = 'es_ES',
253
+ AR_EG = 'ar_EG',
254
+ EN_CN = 'en_CN',
255
+ VI = 'vi',
256
+ }
257
+
258
+ /**
259
+ * 线的类型
260
+ */
261
+ export declare enum ELineType {
262
+ /**
263
+ * 直线
264
+ */
265
+ SEGMENT = 0,
266
+ /**
267
+ * 圆弧
268
+ */
269
+ CIRCLE_ARC = 1,
270
+ /**
271
+ * 椭圆
272
+ * 当前代码中,暂不支持
273
+ */
274
+ ELLIPSE_ARC = 3,
275
+ }
276
+
277
+ /**
278
+ * 模型类型
279
+ */
280
+ export declare enum EModelType {
281
+ /**
282
+ * 模型
283
+ */
284
+ PARAM_MODEL = 'param_model',
285
+ /**
286
+ * 模型组合
287
+ */
288
+ PARAM_MODEL_ASSEMBLY = 'param_model_assembly',
289
+ }
290
+
291
+ /**
292
+ * 当前模型的类型
293
+ */
294
+ declare enum EParamModelType {
295
+ /**
296
+ * 普通模型的单一模型
297
+ */
298
+ COMMON = 0,
299
+ /**
300
+ * 实例组合:即在设计方案当中,选中多个模型,组合之后的结果
301
+ */
302
+ ASSEMBLY = 1,
303
+ /**
304
+ * 参数化组合:在参数化编辑器中,对多个模型进行组合操作
305
+ */
306
+ TEMPLATE_ASSEMBLY = 2
307
+ }
308
+
309
+ declare enum EParamType {
310
+ FLOAT = "float",
311
+ FLOAT2 = "float2",
312
+ FLOAT3 = "float3",
313
+ FLOAT_BUFFER = "floatbuf",
314
+ FLOAT2_BUFFER = "float2buf",
315
+ FLOAT3_BUFFER = "float3buf",
316
+ REFERENCE = "reference",
317
+ INT = "int",
318
+ INT_BUFFER = "intbuf",
319
+ STRING = "string",
320
+ SHAPE = "shape",
321
+ MATERIAL = "material",
322
+ BOOLEAN = "boolean",
323
+ BOOLEAN_BUFFER = "booleanbuf",
324
+ FIT = "fit",
325
+ PATH = "paramcornerpath",
326
+ STYLE = "style",
327
+ FORMULA_STRING = "formulaString",
328
+ BOOLEAN_LIST = "booleanlist"
329
+ }
330
+
331
+ /**
332
+ * 点的类型
333
+ */
334
+ export declare enum EPointType {
335
+ /**
336
+ * 普通点
337
+ */
338
+ NONE = 0,
339
+ /**
340
+ * 倒圆
341
+ */
342
+ CIRCLE = 1,
343
+ /**
344
+ * 倒角
345
+ */
346
+ LINE = 2,
347
+ /**
348
+ * 切圆,就是内挖一个倒圆的形状
349
+ */
350
+ CUT_CIRCLE = 3,
351
+ }
352
+
353
+ /**
354
+ * 处理选中的内容
355
+ */
356
+ export declare enum ESelectedType {
357
+ /**
358
+ * 未选中模型
359
+ */
360
+ NULL = 0,
361
+ /**
362
+ * 模型或商品
363
+ */
364
+ MODEL = 1,
365
+ /**
366
+ * 五金信息
367
+ */
368
+ CASBIN = 2
369
+ }
370
+
371
+ /**
372
+ * 设置选中内容类型
373
+ */
374
+ export declare enum ESetSelectType {
375
+ /**
376
+ * 模型或商品
377
+ */
378
+ MODEL = 1,
379
+ /**
380
+ * 五金
381
+ */
382
+ CASBIN = 2
383
+ }
384
+
385
+ /**
386
+ * 定制行业工具线
387
+ */
388
+ export declare enum EToolType {
389
+ /**
390
+ * 定制厨卫
391
+ */
392
+ CABINET = "CABINET",
393
+ /**
394
+ * 定制家居
395
+ */
396
+ WARDROBE = "WARDROBE",
397
+ /**
398
+ * 定制门窗
399
+ */
400
+ DOOR_WINDOW = "DW",
401
+ /**
402
+ * 定制厨卫副本工具线
403
+ */
404
+ CABINET_COPY = "CABINET_COPY",
405
+ /**
406
+ * 定制家居副本工具线
407
+ */
408
+ WARDROBE_COPY = "WARDROBE_COPY",
409
+ /**
410
+ * 定制门窗副本工具线
411
+ */
412
+ DOOR_WINDOW_COPY = "DW_COPY"
413
+ }
414
+
415
+ /** 定制工具线 */
416
+ declare enum EToolType_2 {
417
+ /** 厨卫定制 */
418
+ Cabinet = "Cabinet",
419
+ /** 家居定制 */
420
+ Wardrobe = "Wardrobe",
421
+ /** 门窗定制 */
422
+ DoorWindow = "DW",
423
+ /** 厨卫定制副本 */
424
+ CabinetCopy = "Cabinet_Copy",
425
+ /** 家居定制副本 */
426
+ WardrobeCopy = "Wardrobe_Copy",
427
+ /** 门窗定制副本 */
428
+ DoorWindowCopy = "DW_Copy"
429
+ }
430
+
431
+ /**
432
+ * 选中模型触发方式
433
+ */
434
+ export declare enum ETriggerType {
435
+ /**
436
+ * 单击
437
+ */
438
+ CLICK = 'click',
439
+ /**
440
+ * 双击
441
+ */
442
+ DB_CLICK = 'double_click',
443
+ }
444
+
445
+ /**
446
+ * 孔槽方案相关数据的管理
447
+ *
448
+ * @example
449
+ * ```typescript
450
+ * const fittingDesignService = application.getService(FittingDesignService);
451
+ * ```
452
+ */
453
+ export declare class FittingDesignService extends BaseService {
454
+ /**
455
+ * 设置孔槽方案自动保存
456
+ *
457
+ * 当你调用`appendFittingDesign`时,如果开启自动保存,就会将当前数据与之前数据作合并,并保存至后台。如果不开启,那只会临时暂存在状态中,后续调用`saveDesign`时,才会保存至后端。
458
+ *
459
+ * @default true 自动保存
460
+ *
461
+ * @example
462
+ * ```typescript
463
+ * fittingDesignService.toggleAutoSave(false);
464
+ * ```
465
+ *
466
+ * @param autoSave 默认开启自动保存
467
+ */
468
+ toggleAutoSave(autoSave?: boolean): void;
469
+ /**
470
+ * 获取当前是否开启了自动保存
471
+ *
472
+ * @example
473
+ * ```typescript
474
+ * fittingDesignService.isAutoSave();
475
+ * ```
476
+ */
477
+ isAutoSave(): boolean;
478
+ /**
479
+ * 获取孔/槽方案数据
480
+ *
481
+ * @example
482
+ * ```typescript
483
+ * fittingDesignService.getFittingDesignData();
484
+ * ```
485
+ *
486
+ * @param modelId 方案模型的ID,当没传时,就是获取场景中,正在预览的模型ID的方案数据
487
+ */
488
+ getFittingDesignData(modelId?: string): Promise<IFittingDesignData | null>;
489
+ /**
490
+ *
491
+ * 获取某个元件关联的孔/槽方案数据(仅作用于当前正在处理的模型)
492
+ *
493
+ * @example
494
+ * ```typescript
495
+ * // 获取当前正在编辑的方案信息
496
+ * fittingDesignService.getConnectedFittingDesign();
497
+ *
498
+ * // 获取某块板上关联的孔/槽数据
499
+ * fittingDesignService.getConnectedFittingDesign('id');
500
+ *
501
+ * ```
502
+ *
503
+ * @param modelid 模型ID,如果为空时,则表示传递的为查询当前正在编辑的模型的方案数据
504
+ * @param casbin 是否为五金,当modelid为五金的id时,需要为true
505
+ */
506
+ getConnectedFittingDesign(modelid?: string, casbin?: boolean): Promise<IFittingDesignData | null>;
507
+ /**
508
+ * 五金槽路径验证API(非稳定API,暂不建议使用)
509
+ *
510
+ * @param path 待验证的路径
511
+ * @param linkModelId 关联的模型ID
512
+ */
513
+ validateFittingDesign(path: IHardwareGrooveData, linkModelId: string): IFittingDesignValidateResult;
514
+ /**
515
+ * 往当前方案中,新增孔/槽数据
516
+ *
517
+ * 会自动merge数据,但同一块板上,会进行覆盖
518
+ *
519
+ * > 如果没有开启自动保存,调用此API只影响视图展示,不会立即存储至后端。
520
+ *
521
+ * @example
522
+ * ```typescript
523
+ * await fittingDesignService.save({
524
+ * ...
525
+ * })
526
+ * ```
527
+ *
528
+ * @param design 孔/槽方案信息
529
+ * @param option { timeout, save} 调用超时,save 是否立即保存至后端,默认为true
530
+ */
531
+ appendFittingDesign(design: Partial<IFittingDesignData>, option?: {
532
+ /**
533
+ * 超时时间(只有在往后端保存时,才有效)
534
+ */
535
+ timeout?: number;
536
+ /**
537
+ * 是否强制立即保存(即覆盖是否自动保存参数)
538
+ */
539
+ save?: boolean;
540
+ }): Promise<void>;
541
+ /**
542
+ * 保存孔/槽数据至方案
543
+ * 如果design不传,即表示将分步保存数据存储至后端
544
+ *
545
+ * @example
546
+ * ```typescript
547
+ * await fittingDesignService.saveDesign({
548
+ * ...
549
+ * })
550
+ * ```
551
+ *
552
+ * @param design 需要保存的方案信息
553
+ * @param option
554
+ */
555
+ saveDesign(design?: IFittingDesignData, option?: {
556
+ timeout?: number;
557
+ }): Promise<void>;
558
+ /**
559
+ * 删除当前孔槽方案(解锁主工具模型)
560
+ *
561
+ * 主工具当中,模型的锁定与解锁,与当前模型是不存在孔槽方案有关
562
+ * 默认情况下,option不传时,清空当前正在编辑的模型的孔槽方案,当传入modelId时,表示清空指定模型的孔槽方案数据
563
+ *
564
+ * * @example
565
+ * ```typescript
566
+ * await fittingDesignService.clearDesign();
567
+ * ```
568
+ * @param options
569
+ */
570
+ clearDesign(options?: IBaseOptions): Promise<void>;
571
+ }
572
+
573
+ /**
574
+ * 提供孔槽模型操作能力
575
+ *
576
+ * @example
577
+ * ```typescript
578
+ * const fittingModelService = application.getService(FittingModelService);
579
+ * ```
580
+ */
581
+ export declare class FittingModelService extends BaseService {
582
+ /**
583
+ * 获取所有五金孔槽模型
584
+ * @param modelId paramModel id,查找相关联孔槽五金
585
+ * @returns Promise<IFittingModelLite[]>
586
+ */
587
+ getAllFittingModels(modelId?: string): Promise<IFittingModelLite[]>;
588
+ /**
589
+ * 保存所有孔槽模型
590
+ * @param option
591
+ * @returns Promise<void>
592
+ */
593
+ save(option: {
594
+ models: IFittingModelLite[];
595
+ }): Promise<void>;
596
+ }
597
+
598
+ /**
599
+ * 孔槽数据基础示意
600
+ */
601
+ export declare interface IBaseFittingData {
602
+ /**
603
+ * 开发者自己生成的孔、槽信息标识ID(自行区分)
604
+ */
605
+ id: string;
606
+ /**
607
+ * 当前数据类型
608
+ */
609
+ fittingType: EFittingType;
610
+ /**
611
+ * 附加通用参数,开发者可以自己存储一些数据
612
+ */
613
+ params?: IBaseFittingParameters[];
614
+ }
615
+
616
+ /**
617
+ * 附加通用参数存储
618
+ */
619
+ export declare interface IBaseFittingParameters {
620
+ /**
621
+ * 通用参数的key
622
+ */
623
+ key: string;
624
+ /**
625
+ * 通用参数的value
626
+ */
627
+ value: string;
628
+ /**
629
+ * 当前value值的数据类型
630
+ */
631
+ type: string;
632
+ }
633
+
634
+ /**
635
+ * 孔/槽的基础数据结构
636
+ */
637
+ export declare interface IBaseHoleGrooveData extends IBaseFittingData {
638
+ /**
639
+ * 孔/槽的深度
640
+ */
641
+ depth: number;
642
+
643
+ /**
644
+ * 所处的板面
645
+ */
646
+ plankFaceId: number;
647
+
648
+ /**
649
+ * 起点
650
+ */
651
+ start: Number3;
652
+
653
+ /**
654
+ * 终点
655
+ */
656
+ end: Number3;
657
+ }
658
+
659
+ /**
660
+ * 交接信息
661
+ */
662
+ export declare interface IBaseIntersected {
663
+ /**
664
+ * 当前交接信息所处的板面信息
665
+ */
666
+ plankFaceId: number;
667
+ /**
668
+ * 当前交接信息所有顶点的信息
669
+ * * 如果为交接面,length为4
670
+ * * 如果为交接体,length为8
671
+ */
672
+ points: Number3[];
673
+
674
+ /**
675
+ * 当前交接信息产生的元件ID
676
+ */
677
+ linkedModelId: string;
678
+ /**
679
+ * 交接信息产生元件的父母ID
680
+ */
681
+ linkedParentModelId: string;
682
+ /**
683
+ * 交接数据的数据类型
684
+ */
685
+ '@type': EIntersectedType;
686
+ /**
687
+ * @ignore
688
+ * 交接体的shell数据
689
+ */
690
+ shell?: string;
691
+ /**
692
+ * 交接体板面是否需要开槽
693
+ * 当五金与板面产生的交接信息,为板面的部分,则为true
694
+ */
695
+ needGroove?: boolean;
696
+ }
697
+
698
+ /**
699
+ * 获取模型数据/交界面/体数据参数
700
+ */
701
+ export declare interface IBaseOptions {
702
+ /**
703
+ * 最长等待时间(以ms为单位)
704
+ * @default 500000
705
+ */
706
+ timeout?: number;
707
+ /**
708
+ * 模型ID
709
+ */
710
+ modelId?: string;
711
+ }
712
+
713
+ declare interface IChangeMap {
714
+ update?: IUpdateInfo[];
715
+ }
716
+
717
+ /**
718
+ * 自定义模式,hover触发模型高亮回调
719
+ */
720
+ export declare interface IFindHintModel {
721
+ (rayTarget: IParamModelLite): void | ISceneHintOption | ISceneHintOption[];
722
+ }
723
+
724
+ /**
725
+ * 自定义模式,单击、双击触发模型选中回调
726
+ */
727
+ export declare interface IFindSelectModel {
728
+ (rayTarget: IParamModelLite, triggerType: ETriggerType):
729
+ | void
730
+ | ISceneSelectOption
731
+ | ISceneSelectOption[];
732
+ }
733
+
734
+ /**
735
+ * 孔/槽方案的数据结构
736
+ */
737
+ export declare interface IFittingDesignData {
738
+ /**
739
+ * 所属模型的id
740
+ */
741
+ id?: string;
742
+ /**
743
+ * 所有的孔的数据
744
+ */
745
+ holes: IFittingHoleCollect;
746
+ /**
747
+ * 槽的数据
748
+ */
749
+ grooves: IFittingGrooveCollect;
750
+ /**
751
+ * 五金数据
752
+ */
753
+ hardwares: IFittingHardwareCollect;
754
+ /**
755
+ * 五金槽数据
756
+ */
757
+ hardwareGrooves: IFittingHardwareGrooves;
758
+ }
759
+
760
+ export declare interface IFittingDesignValidateResult {
761
+ /**
762
+ * 是否验证通过
763
+ */
764
+ validated: boolean;
765
+ }
766
+
767
+ /**
768
+ * 方案中的所有槽的数据
769
+ */
770
+ export declare type IFittingGrooveCollect = Record<string, IGrooveData[]>;
771
+
772
+ /**
773
+ * 五金数据
774
+ */
775
+ export declare type IFittingHardwareCollect = Record<string, IHardwareData[]>;
776
+
777
+ /**
778
+ * 五金槽数据
779
+ */
780
+ export declare type IFittingHardwareGrooves = Record<string, IHardwareGrooveData[]>;
781
+
782
+ /**
783
+ * 方案中,所有孔的数据
784
+ */
785
+ export declare type IFittingHoleCollect = Record<string, IHoleData[]>;
786
+
787
+ /**
788
+ * 五金孔槽通用模型
789
+ */
790
+ export declare interface IFittingModelLite {
791
+ /**
792
+ * 孔槽模型id
793
+ */
794
+ id: string;
795
+
796
+ /**
797
+ * 隐藏状态
798
+ */
799
+ isHidden: boolean;
800
+
801
+ /**
802
+ * 模型类型
803
+ */
804
+ modelType: EFittingType;
805
+
806
+ /**
807
+ * 关联 paramModel id
808
+ */
809
+ linkParamModelId: string;
810
+
811
+ /**
812
+ * 方案原始数据
813
+ */
814
+ originalData: IHoleData | IGrooveData | IHardwareData | IHardwareGrooveData;
815
+
816
+ /**
817
+ * 模型变更记录
818
+ */
819
+ __changeMap: IChangeMap;
820
+
821
+ /**
822
+ * 获取显示隐藏状态
823
+ * @returns
824
+ */
825
+ getHidden(): boolean;
826
+
827
+ /**
828
+ * 更新显示隐藏状态
829
+ * @param isHidden
830
+ */
831
+ setHidden(isHidden: boolean): void;
832
+ }
833
+
834
+ /**
835
+ * 获取模型数据
836
+ */
837
+ export declare interface IGetParamModelJsonOption extends IBaseOptions {
838
+ /**
839
+ * 是否强制重新获取
840
+ * @default true 默认值为true,当前浏览模型时,获取json数据时,将会缓存
841
+ */
842
+ force?: boolean;
843
+ }
844
+
845
+ export declare interface IGrooveData extends IBaseHoleGrooveData {
846
+ // 槽宽
847
+ width: number;
848
+ }
849
+
850
+ /**
851
+ * 五金相关的信息
852
+ */
853
+ export declare interface IHardwareData extends IBaseFittingData {
854
+ /**
855
+ * 建模原点在板件坐标系下的坐标
856
+ */
857
+ position: Number3;
858
+
859
+ /**
860
+ * 相对建模坐标系中夹角,不传默认没有任何基于板件坐标的旋转,会将五金以建模原点放在 position 上,五金建模方向和板件建模方向一致进行摆放。
861
+ */
862
+ rotate: Number3;
863
+
864
+ /**
865
+ * 相对建模坐标系中缩放,不传默认五金和上传大小完全一致
866
+ */
867
+ scale: Number3;
868
+
869
+ /**
870
+ * 商品ID
871
+ */
872
+ brandGoodId: string;
873
+
874
+ /**
875
+ * 关联孔槽ID
876
+ */
877
+ linkedIds: string[];
878
+ }
879
+
880
+ /**
881
+ * 闭合路径中的点,需要按逆时针顺序上传,否则会导致异常
882
+ */
883
+ export declare interface IHardwareGrooveData extends IBaseFittingData {
884
+ /**
885
+ * 槽的深度
886
+ */
887
+ depth: number;
888
+
889
+ /**
890
+ * 所处的板面
891
+ */
892
+ plankFaceId: number;
893
+ /**
894
+ * 闭合路径的所有点
895
+ */
896
+ points: IPointData[];
897
+ /**
898
+ * 闭合路径的所有线
899
+ */
900
+ lines: ILineData[];
901
+ }
902
+
903
+ /**
904
+ * 颜色配置信息
905
+ *
906
+ * @example
907
+ * ```json
908
+ * {
909
+ * "color": "#234432",
910
+ * "opacity": 0.8
911
+ * }
912
+ * ```
913
+ */
914
+ export declare interface IHintBase {
915
+ /**
916
+ * 颜色,以#开头,16进制
917
+ *
918
+ * @example
919
+ * ```
920
+ * #FFB6C1
921
+ * ```
922
+ */
923
+ color: string;
924
+ /**
925
+ * 透明度,范围为 0~1 ;当为1时,表示不透明;为0时,表示为全透明
926
+ */
927
+ opacity: number;
928
+ }
929
+
930
+ /**
931
+ * 配置默认的高亮配置信息
932
+ */
933
+ export declare interface IHintPlank {
934
+ /**
935
+ * 边框高亮颜色
936
+ */
937
+ hintOutline?: boolean | IHintBase;
938
+ /**
939
+ * 高亮的板面信息
940
+ */
941
+ hintPlankFace?: Array<IHintPlankFace | Omit<IHintPlankFace, keyof IHintBase>>;
942
+ }
943
+
944
+ /**
945
+ * 板面配置信息
946
+ *
947
+ * @example
948
+ * ```json
949
+ * {
950
+ * "color": "#234432",
951
+ * "opacity": 0.8,
952
+ * "plankFaceId": 1
953
+ * }
954
+ * ```
955
+ */
956
+ export declare interface IHintPlankFace extends IHintBase {
957
+ /**
958
+ * 需要展示的该信息的板面
959
+ * 支持多个板面ID或单个
960
+ */
961
+ plankFaceId: number | number[];
962
+ }
963
+
964
+ export declare interface IHoleData extends IBaseHoleGrooveData {
965
+ /**
966
+ * 孔直径
967
+ */
968
+ diameter: number;
969
+ }
970
+
971
+ /**
972
+ * 一组交接信息
973
+ */
974
+ export declare interface IIntersectedGroup {
975
+ /**
976
+ * 交接信息的唯一标识ID
977
+ */
978
+ id: string;
979
+ /**
980
+ * 交接信息的产生来源
981
+ */
982
+ intersectType: EIntersectedCreatedType;
983
+ /**
984
+ * 关联元素产生的多组交接信息
985
+ */
986
+ intersecteds: IBaseIntersected[];
987
+ }
988
+
989
+ /**
990
+ * 交接信息
991
+ */
992
+ export declare interface IIntersectedResult {
993
+ /**
994
+ * 交接信息集合
995
+ */
996
+ intersectedGroups: IIntersectedGroup[];
997
+ }
998
+
999
+ export declare type ILineData = ILineDataBase | ILineDataCircle;
1000
+
1001
+ export declare interface ILineDataBase {
1002
+ /**
1003
+ * 线条类型
1004
+ */
1005
+ type: ELineType_2.SEGMENT;
1006
+ }
1007
+
1008
+ export declare interface ILineDataCircle {
1009
+ /**
1010
+ * 线条类型
1011
+ */
1012
+ type: ELineType_2.CIRCLE_ARC;
1013
+ /**
1014
+ * 是否顺时针
1015
+ */
1016
+ clockwise: boolean;
1017
+ /**
1018
+ * 优弧劣弧 (只有弧线有)
1019
+ */
1020
+ minorArc: boolean;
1021
+ /**
1022
+ * 半径 (只有弧线有)
1023
+ */
1024
+ radius: number;
1025
+ }
1026
+
1027
+ /**
1028
+ * 模型高亮默认配置信息
1029
+ * @example
1030
+ * ```json
1031
+ * {
1032
+ * "outline": {
1033
+ * "color": "#234432",
1034
+ * "opacity": 0.8,
1035
+ * },
1036
+ * "plankFace":{
1037
+ * "color": "#234432",
1038
+ * "opacity": 0.8,
1039
+ * }
1040
+ * }
1041
+ * ```
1042
+ */
1043
+ export declare interface IModelDefaultHintOption {
1044
+ /**
1045
+ * 模型轮廓高亮信息
1046
+ */
1047
+ outline?: IHintBase;
1048
+ /**
1049
+ * 板面高亮配置信息
1050
+ */
1051
+ plankFace?: IHintBase;
1052
+ }
1053
+
1054
+ /**
1055
+ * 设置模型高亮时的配置信息
1056
+ * @example
1057
+ * ```typescript
1058
+ * {
1059
+ * "89D2793C-2B23-41A9-BA6E-4E3908490057": {
1060
+ * // 使用默认的高亮配置信息
1061
+ * "hintBorder": true,
1062
+ * // 板件高亮
1063
+ * "hintPlankFace": [
1064
+ * {
1065
+ * "color": "#234432",
1066
+ * "opacity": 0.8,
1067
+ * // 仅单个板面
1068
+ * "plankFaceId": 1
1069
+ * },
1070
+ * {
1071
+ * "color": "#233242",
1072
+ * "opacity": 0.8,
1073
+ * // 多个板面
1074
+ * "plankFaceId": [2, 4]
1075
+ * },
1076
+ * // 使用默认颜色
1077
+ * {
1078
+ * "plankFaceId": 3
1079
+ * }
1080
+ * ]
1081
+ * },
1082
+ * "89D2793C-2B23-41A9-BA6E-4E3FS8490057": {
1083
+ * // 自定议高亮配置信息
1084
+ * "hintBorder": {
1085
+ * "color": "#234432",
1086
+ * "opacity": 0.8
1087
+ * }
1088
+ * }
1089
+ * }
1090
+ * ```
1091
+ */
1092
+ export declare type IModelHintOption = Record<string, IHintPlank>;
1093
+
1094
+ /**
1095
+ * 获取交接信息
1096
+ *
1097
+ * @example
1098
+ * ```typescript
1099
+ * const intersectedService = application.getService(IntersectedService);
1100
+ * ```
1101
+ */
1102
+ export declare class IntersectedService extends BaseService {
1103
+ /**
1104
+ * 是否展示交接信息
1105
+ *
1106
+ * @example
1107
+ * ```typescript
1108
+ * intersectedService.toggleModelViewIntersected(true);
1109
+ * ```
1110
+ *
1111
+ * @param flag
1112
+ */
1113
+ toggleModelViewIntersected(flag: boolean): void;
1114
+ /**
1115
+ * 切换展示的交接面、交接体坐标
1116
+ *
1117
+ * @example
1118
+ * ```typescript
1119
+ * intersectedService.toggleModelViewedIntersected({
1120
+ * references: true,
1121
+ * plankFaceIds: [1],
1122
+ * });
1123
+ * ```
1124
+ *
1125
+ * @param option
1126
+ */
1127
+ toggleModelViewedIntersected(option?: IToggleIntersectedViewOption): void;
1128
+ }
1129
+
1130
+ export declare interface IParamModelLite extends IParamModelLite_2 {
1131
+ /**
1132
+ * 获取显示隐藏状态
1133
+ * @returns
1134
+ */
1135
+ getHidden(): boolean | undefined;
1136
+
1137
+ /**
1138
+ * 更新显示隐藏状态
1139
+ * @param isHidden
1140
+ */
1141
+ setHidden(isHidden: boolean): void;
1142
+ }
1143
+
1144
+ /**
1145
+ * 对定制参数化模型进行精简处理后的结果
1146
+ * @name ParamModel
1147
+ */
1148
+ declare interface IParamModelLite_2 {
1149
+ /**
1150
+ * 模型的唯一标识ID
1151
+ * 如果模型是从方案当中获取至的,则为模型在方案中的ID,非方案模型,将会随机生成ID
1152
+ * @readonly
1153
+ * @public
1154
+ * @type string
1155
+ */
1156
+ readonly id: string;
1157
+ /**
1158
+ * 当前位置信息
1159
+ * @readonly
1160
+ * @public
1161
+ * @typedef Number3
1162
+ */
1163
+ position: Number3_2;
1164
+ /**
1165
+ * 当前模型的旋转信息
1166
+ * @readonly
1167
+ * @public
1168
+ * @typedef Number3
1169
+ * @deprecated 将废弃,推荐使用 rotation
1170
+ */
1171
+ rotate: Number3_2;
1172
+ /**
1173
+ * 当前模型的旋转信息
1174
+ * @readonly
1175
+ * @public
1176
+ * @typedef Number3
1177
+ */
1178
+ rotation: Number3_2;
1179
+ /**
1180
+ * 当前尺寸信息
1181
+ * @readonly
1182
+ * @public
1183
+ * @typedef Number3
1184
+ */
1185
+ size: Number3_2;
1186
+ /**
1187
+ * 模型当中自定议的参数信息
1188
+ * @readonly
1189
+ * @protected
1190
+ * @typedef AMap<string, IParamModelLiteParam>
1191
+ */
1192
+ readonly params: AMap<string, IParamModelLiteParam>;
1193
+ /**
1194
+ * 商品ID,即商品后台的商品ID
1195
+ * @readonly
1196
+ */
1197
+ readonly productId?: string;
1198
+ /**
1199
+ * 当前模型所处的真分类信息
1200
+ * @readonly
1201
+ */
1202
+ category: number;
1203
+ /**
1204
+ * 此字段只有当模型从工具场景中获取,才具有意义
1205
+ * 当前模型在工具当中的显示与隐藏状态;如果为`true`,则表示为隐藏状态
1206
+ * @public
1207
+ * @readonly
1208
+ */
1209
+ isHidden?: boolean;
1210
+ /**
1211
+ * 模型类型,仅为从方案中获取模型才具备意义
1212
+ * @public
1213
+ * @readonly
1214
+ * @typedef EParamModelType
1215
+ */
1216
+ modelType?: EParamModelType;
1217
+ /**
1218
+ * 当前模型所处的定制行业线
1219
+ * @public
1220
+ * @readonly
1221
+ */
1222
+ toolType?: EToolType_2;
1223
+ /**
1224
+ * 当前模型是否为root节点,如果是,则为true
1225
+ * @public
1226
+ * @readonly
1227
+ */
1228
+ isRoot?: boolean;
1229
+ /**
1230
+ * 更新当前模型的位置信息
1231
+ * @param position {Number3} 坐标
1232
+ */
1233
+ setPosition(position: Number3_2): void;
1234
+ /**
1235
+ * 获取当前模型的坐标信息
1236
+ * @return Number3 相对父模型坐标,如果为顶层模型,则为世界坐标
1237
+ */
1238
+ getPosition(): Number3_2;
1239
+ /**
1240
+ * 更新当前模型的旋转信息
1241
+ * @description 特别说明,定制模型,使用的是右手坐标系,rotate字段中
1242
+ * @param rotate {Number3} 旋转的弧度
1243
+ * @deprecated 将废弃,推荐使用 rotation
1244
+ */
1245
+ setRotate(rotate: Number3_2): void;
1246
+ /**
1247
+ * 获取当前模型相对父级的旋转信息
1248
+ * @deprecated 将废弃,推荐使用 rotation
1249
+ */
1250
+ getRotate(): Number3_2;
1251
+ /**
1252
+ * 更新当前模型的旋转信息
1253
+ * @description 特别说明,定制模型,使用的是右手坐标系,rotation字段中
1254
+ * @param rotation {Number3} 旋转的弧度
1255
+ */
1256
+ setRotation(rotation: Number3_2): void;
1257
+ /**
1258
+ * 获取当前模型相对父级的旋转信息
1259
+ */
1260
+ getRotation(): Number3_2;
1261
+ /**
1262
+ * 模型的复制,返回一个新的`ParamModel`对象
1263
+ */
1264
+ clone(): IParamModelLite_2;
1265
+ /**
1266
+ * 将当前模型与父级模型断开联系
1267
+ * 可以更直接的理解为:删除当前模型
1268
+ * > 针对`clone()`后的对象,作`dispose()`操作,将不会产生任何作用
1269
+ */
1270
+ dispose(): void;
1271
+ /**
1272
+ * 查找当前模型的父节点
1273
+ */
1274
+ getParent(): IParamModelLite_2 | undefined;
1275
+ /**
1276
+ * 获取当前模型的顶层模型,如果当前模型就是顶层模型,则会返回undefined
1277
+ */
1278
+ getRoot(): IParamModelLite_2 | undefined;
1279
+ /**
1280
+ * 获取当前模型的所有子模型
1281
+ */
1282
+ getChild(): IParamModelLite_2[];
1283
+ /**
1284
+ * 获取当前模型下的所有非原生模型
1285
+ * @description 说明一下:非原生模型可以大致理解为:在方案当中,手动生成一个模型,添加到其他模型上;与之对应子模型可以理解为原生模型,即参数
1286
+ * 化编辑中自带的模型
1287
+ */
1288
+ getAccessory(): IParamModelLite_2[];
1289
+ /**
1290
+ * 向当前模型中,添加一个子模型;一般会向包裹层当中,添加子模型;另外,五金配件,也必须使用此方法添加
1291
+ * @param child {IParamModelLite} 待添加的模型
1292
+ */
1293
+ appendChild(child: IParamModelLite_2): void;
1294
+ /**
1295
+ * 向当前模型中,添加一个非原生模型;一般会使用在添加五金
1296
+ * @param accessory {IParamModelLite} 待添加的模型
1297
+ */
1298
+ appendAccessory(accessory: IParamModelLite_2): void;
1299
+ /**
1300
+ * 获取当前模型中的参数信息(参数即在参数化编辑中的信息)
1301
+ * @example
1302
+ * `m.getParam('W')` 获取模型的宽度信息
1303
+ * @param name {string} 参数名称
1304
+ */
1305
+ getParam(name: string): IParamModelLiteParam | undefined;
1306
+ /**
1307
+ * 判断当前模型是否包含某个参数
1308
+ * @param name {string} 参数名称
1309
+ */
1310
+ hasParam(name: string): boolean;
1311
+ /**
1312
+ * 将当前数据转换成一个纯对象
1313
+ * @private
1314
+ */
1315
+ toJSON(): Record<string, any>;
1316
+ /**
1317
+ * 对当前模型数据进行序列化操作
1318
+ */
1319
+ serialize(): string;
1320
+ /**
1321
+ * 将一个序列化之后的模型,进行反序列化操作
1322
+ */
1323
+ deserialize(model: string): IParamModelLite_2;
1324
+ }
1325
+
1326
+ /**
1327
+ * 模型的参数信息
1328
+ */
1329
+ declare interface IParamModelLiteParam<T = any> {
1330
+ /**
1331
+ * 获取当前参数解析后的值内容
1332
+ */
1333
+ getValue(): T;
1334
+ /**
1335
+ * @deprecated 请直接使用'getValue'方法
1336
+ */
1337
+ getParsedValue(): T;
1338
+ /**
1339
+ * 设置当前参数的值
1340
+ * @description 当前函数并未对输入的参数进行校验
1341
+ * @param value
1342
+ */
1343
+ setValue(value: T): any;
1344
+ /**
1345
+ * @deprecated 请直接使用'setValue'方法
1346
+ * @param value
1347
+ */
1348
+ setParsedValue(value: T): any;
1349
+ /**
1350
+ * 获取当前参数类型
1351
+ */
1352
+ getType(): EParamType;
1353
+ /**
1354
+ * 获取当前参数输入值的最大值(参数化编辑器中设置的)
1355
+ */
1356
+ getMax(): number | undefined;
1357
+ /**
1358
+ * 获取当前参数输入值的最小值(参数化编辑器中设置的)
1359
+ */
1360
+ getMin(): number | undefined;
1361
+ /**
1362
+ * 获取当前参数的步长信息
1363
+ */
1364
+ getStep(): number | undefined;
1365
+ /**
1366
+ * 获取可选值
1367
+ */
1368
+ getOptionValues(): NamedValue[];
1369
+ /**
1370
+ * 当前参数是否可以被编辑
1371
+ * @description 如果为不可编辑的话,强制更改参数也不会生效
1372
+ */
1373
+ getEditable(): boolean;
1374
+ /**
1375
+ * 获取当前模型在参数化编辑器中设置的推荐值
1376
+ */
1377
+ getRecommendValues(): NamedValue[];
1378
+ /**
1379
+ * 获取value展示的值
1380
+ */
1381
+ getValueDisplayNames(): string[];
1382
+ /**
1383
+ * 是否需要将设置的参数覆盖原始参数信息
1384
+ * 仅对部分参数设计有效,具体细节,见对应场景
1385
+ */
1386
+ getPrimitiveOverride(): boolean;
1387
+ /**
1388
+ * 是否需要将设置的参数覆盖原始参数信息
1389
+ * @param value {boolean}
1390
+ */
1391
+ setPrimitiveOverride(value: boolean): void;
1392
+ }
1393
+
1394
+ /**
1395
+ * 点的基本类型
1396
+ */
1397
+ export declare interface IPointBase {
1398
+ type: EPointType;
1399
+ /**
1400
+ * 点的位置
1401
+ *
1402
+ * @example
1403
+ * "123,-345"
1404
+ */
1405
+ position: Number3;
1406
+ }
1407
+
1408
+ /**
1409
+ * 点的类型参数
1410
+ */
1411
+ export declare type IPointData = IPointWithNone | IPointWithLine | IPointWithCircle | IPointWithCutCircle;
1412
+
1413
+ /**
1414
+ * 倒圆
1415
+ */
1416
+ export declare interface IPointWithCircle extends IPointBase {
1417
+ /**
1418
+ * 切角类型
1419
+ */
1420
+ type: EPointType.CIRCLE;
1421
+ /**
1422
+ * 切角边边距
1423
+ */
1424
+ /**
1425
+ * 半径 (倒圆切圆专用)
1426
+ * @example
1427
+ * "345.12"
1428
+ */
1429
+ radius: number;
1430
+ }
1431
+
1432
+ /**
1433
+ * 切圆(就是内挖一个倒圆的形状)
1434
+ */
1435
+ export declare interface IPointWithCutCircle extends Omit<IPointWithCircle, 'type'> {
1436
+ type: EPointType.CUT_CIRCLE;
1437
+ /**
1438
+ * 是否顺时针
1439
+ * 未设置时,则为false
1440
+ */
1441
+ clockwise: boolean;
1442
+ }
1443
+
1444
+ /**
1445
+ * 切角
1446
+ */
1447
+ export declare interface IPointWithLine extends IPointBase {
1448
+ /**
1449
+ * 切角类型
1450
+ */
1451
+ type: EPointType.LINE;
1452
+ /**
1453
+ * 切角边边距
1454
+ */
1455
+ cornerCutDistance: [number, number];
1456
+ }
1457
+
1458
+ /**
1459
+ * 普通点类型
1460
+ */
1461
+ export declare interface IPointWithNone extends IPointBase {
1462
+ /**
1463
+ * 普通点
1464
+ */
1465
+ type: EPointType.NONE;
1466
+ /**
1467
+ * 是否顺时针
1468
+ * 未设置时,则为false
1469
+ */
1470
+ clockwise?: boolean;
1471
+ }
1472
+
1473
+ /**
1474
+ * 房间信息
1475
+ */
1476
+ declare interface IRoomInfo {
1477
+ /**
1478
+ * 所属房间ID
1479
+ */
1480
+ roomId?: string;
1481
+ /**
1482
+ * 所属房间名
1483
+ */
1484
+ roomName?: string;
1485
+ }
1486
+
1487
+ /**
1488
+ * 高亮模型描述
1489
+ */
1490
+ export declare type ISceneHintOption = ISceneSelectOption;
1491
+
1492
+ /**
1493
+ * 选中模型描述
1494
+ */
1495
+ export declare interface ISceneSelectOption {
1496
+ /**
1497
+ * 模型id | 组合id
1498
+ */
1499
+ id: string;
1500
+ /**
1501
+ * 模型类型
1502
+ */
1503
+ type: EModelType;
1504
+ }
1505
+
1506
+ /**
1507
+ * 当前选中的数据
1508
+ */
1509
+ export declare interface ISelected {
1510
+ /**
1511
+ * 选中的数据内容
1512
+ */
1513
+ data: IExportModelData[] | IHardwareData[];
1514
+ /**
1515
+ * 选中的数据类型
1516
+ */
1517
+ type: ESelectedType;
1518
+ }
1519
+
1520
+ /**
1521
+ * 通过ID选中模型参数
1522
+ */
1523
+ export declare interface ISetSelectedByIdOption {
1524
+ /**
1525
+ * 模型ID/五金ID
1526
+ */
1527
+ id: string;
1528
+ /**
1529
+ * 选中的类型
1530
+ */
1531
+ type: ESetSelectType;
1532
+ }
1533
+
1534
+ /**
1535
+ * 场景中,模型的颜色配置能力
1536
+ *
1537
+ * @example
1538
+ * ```json
1539
+ * {
1540
+ * // 交接页数据信息
1541
+ * intersectedColor: 0xff4500,
1542
+ * // 交接体颜色
1543
+ * intersectedBodyColor: 0xff00ff,
1544
+ * holeColor: 0x00ff00,
1545
+ * grooveColor: 0x1e90ff,
1546
+ * }
1547
+ * ```
1548
+ *
1549
+ */
1550
+ export declare interface ISettingColor {
1551
+ /**
1552
+ * 交接面展示时,使用的颜色表示
1553
+ */
1554
+ intersectedColor: number;
1555
+ /**
1556
+ * 交接体展示时,使用的颜色
1557
+ */
1558
+ intersectedBodyColor: number;
1559
+ /**
1560
+ * 五金与柜体之间,交接面产生的颜色
1561
+ */
1562
+ grooveIntersectedColor: number;
1563
+ /**
1564
+ * 五金与柜体之间,交接体产生的颜色
1565
+ */
1566
+ grooveIntersectedBodyColor: number;
1567
+ /**
1568
+ * 孔展示
1569
+ */
1570
+ holeColor: number;
1571
+ /**
1572
+ * 槽展示颜色
1573
+ */
1574
+ grooveColor: number;
1575
+ }
1576
+
1577
+ /**
1578
+ * 展示交接信息时的筛选行为
1579
+ */
1580
+ export declare interface IToggleIntersectedViewOption {
1581
+ /**
1582
+ * 切换展示交接信息数据
1583
+ *
1584
+ * * `true` 显示第一组交接数据
1585
+ * * `false`: 显示第二组交接数据
1586
+ *
1587
+ * @default false
1588
+ */
1589
+ references?: boolean;
1590
+ /**
1591
+ * 根据板面信息来筛选展示内容,null 表示空板面
1592
+ */
1593
+ plankFaceIds?: Array<number | null>;
1594
+ }
1595
+
1596
+ /**
1597
+ * 获取顶层模型返回值
1598
+ */
1599
+ export declare interface ITopParamModelDataResponse {
1600
+ /**
1601
+ * 当前查询总数
1602
+ */
1603
+ count: number;
1604
+ /**
1605
+ * 当前页码
1606
+ */
1607
+ currPage: number;
1608
+ /**
1609
+ * 是否还有可查询的结果
1610
+ */
1611
+ hasMore: boolean;
1612
+ /**
1613
+ * 查询的顶层模型结果
1614
+ */
1615
+ result: ITopParamModelList[];
1616
+ /**
1617
+ * 总的页数
1618
+ */
1619
+ totalPage: number;
1620
+ }
1621
+
1622
+ /**
1623
+ * 顶层模型信息
1624
+ */
1625
+ export declare interface ITopParamModelList {
1626
+ /**
1627
+ * 模型ID
1628
+ */
1629
+ id: string;
1630
+ /**
1631
+ * 所属工具线
1632
+ */
1633
+ toolType: EToolType;
1634
+ /**
1635
+ * 模型名称
1636
+ */
1637
+ name: string;
1638
+ /**
1639
+ * 户型信息
1640
+ */
1641
+ roomInfo: IRoomInfo;
1642
+ /**
1643
+ * 模型是否已拆单
1644
+ */
1645
+ isSplit: boolean;
1646
+ /**
1647
+ * 模型是否锁定
1648
+ */
1649
+ isLocked: boolean;
1650
+ /**
1651
+ * 模型是否隐藏
1652
+ */
1653
+ isHidden: boolean;
1654
+ /**
1655
+ * 模型是否提审
1656
+ */
1657
+ isAudited: boolean;
1658
+ }
1659
+
1660
+ /**
1661
+ * 获取顶层模型参数
1662
+ */
1663
+ export declare interface ITopParamModelListOption {
1664
+ /**
1665
+ * 第几页
1666
+ * page 默认为 1
1667
+ */
1668
+ pageSize?: number;
1669
+ /**
1670
+ * 每页模型数量
1671
+ * size 默认为 20
1672
+ * 最大值为 500
1673
+ */
1674
+ pageNum?: number;
1675
+ }
1676
+
1677
+ declare interface IUpdateInfo {
1678
+ field: string; // 变更字段
1679
+ }
1680
+
1681
+ /**
1682
+ * 键盘按键
1683
+ */
1684
+ export declare const KEYBOARD_KEY = [
1685
+ '0',
1686
+ '1',
1687
+ '2',
1688
+ '3',
1689
+ '4',
1690
+ '5',
1691
+ '6',
1692
+ '7',
1693
+ '8',
1694
+ '9',
1695
+ 'ctrl',
1696
+ 'alt',
1697
+ 'shift',
1698
+ 'up',
1699
+ 'right',
1700
+ 'down',
1701
+ 'left',
1702
+ 'tab',
1703
+ 'enter',
1704
+ 'capslock',
1705
+ 'esc',
1706
+ 'backspace',
1707
+ 'space',
1708
+ 'f1',
1709
+ 'f2',
1710
+ 'f3',
1711
+ 'f4',
1712
+ 'f5',
1713
+ 'f6',
1714
+ 'f7',
1715
+ 'f8',
1716
+ 'f9',
1717
+ 'f10',
1718
+ 'f11',
1719
+ 'f12',
1720
+ 'a',
1721
+ 'b',
1722
+ 'c',
1723
+ 'd',
1724
+ 'e',
1725
+ 'f',
1726
+ 'g',
1727
+ 'h',
1728
+ 'i',
1729
+ 'j',
1730
+ 'k',
1731
+ 'l',
1732
+ 'm',
1733
+ 'n',
1734
+ 'o',
1735
+ 'p',
1736
+ 'q',
1737
+ 'r',
1738
+ 's',
1739
+ 't',
1740
+ 'u',
1741
+ 'v',
1742
+ 'w',
1743
+ 'x',
1744
+ 'y',
1745
+ 'z',
1746
+ '~',
1747
+ '!',
1748
+ '@',
1749
+ '#',
1750
+ '$',
1751
+ '%',
1752
+ '^',
1753
+ '&',
1754
+ '*',
1755
+ '(',
1756
+ ')',
1757
+ '_',
1758
+ '+',
1759
+ ':',
1760
+ '"',
1761
+ '<',
1762
+ '>',
1763
+ '?',
1764
+ ',',
1765
+ '`',
1766
+ '-',
1767
+ '=',
1768
+ '[',
1769
+ ']',
1770
+ '\\',
1771
+ ';',
1772
+ "'",
1773
+ ',',
1774
+ '.',
1775
+ '/',
1776
+ ];
1777
+
1778
+ /**
1779
+ * 键盘按键类型
1780
+ */
1781
+ export declare type KeyboardKey =
1782
+ | '0'
1783
+ | '1'
1784
+ | '2'
1785
+ | '3'
1786
+ | '4'
1787
+ | '5'
1788
+ | '6'
1789
+ | '7'
1790
+ | '8'
1791
+ | '9'
1792
+ | 'ctrl'
1793
+ | 'alt'
1794
+ | 'shift'
1795
+ | 'up'
1796
+ | 'right'
1797
+ | 'down'
1798
+ | 'left'
1799
+ | 'tab'
1800
+ | 'enter'
1801
+ | 'capslock'
1802
+ | 'esc'
1803
+ | 'backspace'
1804
+ | 'space'
1805
+ | 'f1'
1806
+ | 'f2'
1807
+ | 'f3'
1808
+ | 'f4'
1809
+ | 'f5'
1810
+ | 'f6'
1811
+ | 'f7'
1812
+ | 'f8'
1813
+ | 'f9'
1814
+ | 'f10'
1815
+ | 'f11'
1816
+ | 'f12'
1817
+ | 'a'
1818
+ | 'b'
1819
+ | 'c'
1820
+ | 'd'
1821
+ | 'e'
1822
+ | 'f'
1823
+ | 'g'
1824
+ | 'h'
1825
+ | 'i'
1826
+ | 'j'
1827
+ | 'k'
1828
+ | 'l'
1829
+ | 'm'
1830
+ | 'n'
1831
+ | 'o'
1832
+ | 'p'
1833
+ | 'q'
1834
+ | 'r'
1835
+ | 's'
1836
+ | 't'
1837
+ | 'u'
1838
+ | 'v'
1839
+ | 'w'
1840
+ | 'x'
1841
+ | 'y'
1842
+ | 'z'
1843
+ | '~'
1844
+ | '!'
1845
+ | '@'
1846
+ | '#'
1847
+ | '$'
1848
+ | '%'
1849
+ | '^'
1850
+ | '&'
1851
+ | '*'
1852
+ | '('
1853
+ | ')'
1854
+ | '_'
1855
+ | '+'
1856
+ | ':'
1857
+ | '"'
1858
+ | '<'
1859
+ | '>'
1860
+ | '?'
1861
+ | '|'
1862
+ | '`'
1863
+ | '-'
1864
+ | '='
1865
+ | '['
1866
+ | ']'
1867
+ | '\\'
1868
+ | ';'
1869
+ | "'"
1870
+ | ','
1871
+ | '.'
1872
+ | '/';
1873
+
1874
+ /**
1875
+ * 主要提供了场景相机的模式、移动等
1876
+ *
1877
+ * @example
1878
+ * ```typescript
1879
+ * const modelCameraService = application.getService(ModelCameraService);
1880
+ * ```
1881
+ */
1882
+ export declare class ModelCameraService extends BaseService {
1883
+ /**
1884
+ * 切换相机模式
1885
+ * @param mode 相机模式
1886
+ * @example
1887
+ * ```ts
1888
+ * const modelCameraService = application.getService(ModelCameraService);
1889
+ *
1890
+ * // 切换至漫游模式
1891
+ * modelCameraService.toggleCameraMode(ECameraMode.Roamer);
1892
+ * ```
1893
+ */
1894
+ toggleCameraMode(mode: ECameraMode): void;
1895
+ /**
1896
+ * 根据方向移动相机
1897
+ * @param direction 移动方向
1898
+ * @example
1899
+ * ```ts
1900
+ * const modelCameraService = application.getService(ModelCameraService);
1901
+ *
1902
+ * // 相机向上移动
1903
+ * modelCameraService.moveCamera(ECameraMoveDirection.UP);
1904
+ *
1905
+ * // 相机向前移动
1906
+ * modelCameraService.moveCamera(ECameraMoveDirection.FRONT);
1907
+ * ```
1908
+ */
1909
+ moveCamera(direction: ECameraMoveDirection): void;
1910
+ }
1911
+
1912
+ /**
1913
+ * 配置板件特殊标识
1914
+ *
1915
+ * @example
1916
+ * ```typescript
1917
+ * const modelHintService = application.getService(ModelHintService);
1918
+ * ```
1919
+ */
1920
+ export declare class ModelHintService extends BaseService {
1921
+ /**
1922
+ * 设置板件标识的特殊颜色
1923
+ * @example
1924
+ * modelHintService.setDefaultHint({
1925
+ * "outline": {
1926
+ * "color": "#234432",
1927
+ * "opacity": 0.8,
1928
+ * },
1929
+ * "plankFace":{
1930
+ * "color": "#234432",
1931
+ * "opacity": 0.8,
1932
+ * }
1933
+ * });
1934
+ */
1935
+ setDefaultHint(option: IModelDefaultHintOption): void;
1936
+ /**
1937
+ * 设置模型高亮
1938
+ *
1939
+ * @example
1940
+ * ```typescript
1941
+ * modelHintService.setModelHint({
1942
+ * "89D2793C-2B23-41A9-BA6E-4E3908490057": {
1943
+ * // 使用默认的标识信息
1944
+ * "hintBorder": true,
1945
+ * // 板件高亮
1946
+ * "hintPlankFace": [
1947
+ * {
1948
+ * "color": "#234432",
1949
+ * "opacity": 0.8,
1950
+ * // 仅单个板面
1951
+ * "plankFaceId": 1
1952
+ * },
1953
+ * {
1954
+ * "color": "#233242",
1955
+ * "opacity": 0.8,
1956
+ * // 多个板面
1957
+ * "plankFaceId": [2, 4]
1958
+ * },
1959
+ * // 使用默认颜色配置
1960
+ * {
1961
+ * "plankFaceId": 1
1962
+ * },
1963
+ * ]
1964
+ * },
1965
+ * "89D2793C-2B23-41A9-BA6E-4E3FS8490057": {
1966
+ * // 自定议标识颜色
1967
+ * "hintBorder": {
1968
+ * "color": "#234432",
1969
+ * "opacity": 0.8
1970
+ * }
1971
+ * }
1972
+ * })
1973
+ * ```
1974
+ */
1975
+ setModelHint(config: IModelHintOption): void;
1976
+ /**
1977
+ * 清空当前已经配置的标识信息
1978
+ *
1979
+ * 当id不传时,清空所有,当id传入部分时,则清除对应的内容
1980
+ *
1981
+ * @example
1982
+ * ```typescript
1983
+ * modelHintService.clearModelHint()
1984
+ * ```
1985
+ *
1986
+ * @param id 待删除标识信息的ID
1987
+ */
1988
+ clearModelHint(id?: string[]): void;
1989
+ }
1990
+
1991
+ /**
1992
+ * 主要提供了获取当前模型的 JSON 输出数据,以及当前模型的交接信息的功能。
1993
+ *
1994
+ * @example
1995
+ * ```typescript
1996
+ * const modelService = application.getService(ModelService);
1997
+ * ```
1998
+ */
1999
+ export declare class ModelService extends BaseService {
2000
+ /**
2001
+ * 开发者,通常需要来获取某个模型的 JSON 数据,所以需要用此 API。当前 API 获取 JSON 数据,主要是拿的是当前正在编辑的模型的 JSON 数据。
2002
+ * 如果传入modelId,则表示获取其他模型的JSON输出数据。
2003
+ *
2004
+ * 底层其实是通过`servkit`服务实现的。使用的是`MiniAppParamModelJsonDataService`服务。
2005
+ *
2006
+ * 使用servkit实现示例如下:
2007
+ *
2008
+ * @example
2009
+ * ```typescript
2010
+ * import { MiniAppParamModelJsonDataService } from '@manycore/custom-miniapp-sdk';
2011
+ * import { sappSDK } from 'servkit';
2012
+ *
2013
+ * const service = sappSDK.getServiceUnsafe(MiniAppParamModelJsonDataService);
2014
+ *
2015
+ * const json = await service.getModelJsonDataByModelId('请输入模型ID');
2016
+ * ```
2017
+ *
2018
+ * > 以上 API 暂不建议在非对接 2.0 环境下使用,主要是与孔/槽方案数据存在关联关系。
2019
+ > > 替代的 service 为`CustomDesignExportService`,将会在 9 月底最新的`@manycore/custom-miniapp-sdk`中提供。
2020
+ *
2021
+ * @example
2022
+ * ```typescript
2023
+ * await modelService.getParamData();
2024
+ * ```
2025
+ *
2026
+ * @param options
2027
+ */
2028
+ getParamData(options?: IGetParamModelJsonOption): Promise<any>;
2029
+ /**
2030
+ * 获取模型的交接数据
2031
+ *
2032
+ * @example
2033
+ * ```typescript
2034
+ * await modelService.getParamData();
2035
+ * ```
2036
+ *
2037
+ * @param options
2038
+ */
2039
+ getParamIntersected(options?: IBaseOptions): Promise<IIntersectedResult>;
2040
+ /**
2041
+ * 获取方案顶层模型列表
2042
+ * @param options
2043
+ */
2044
+ getTopParamModels(options?: ITopParamModelListOption): Promise<ITopParamModelDataResponse>;
2045
+ getParamModelPhotoById(modelId: string | string[]): Promise<IParamModelPhotoResponse[]>;
2046
+ }
2047
+
2048
+ /**
2049
+ * 主要是用来与场景交互的,监听当前选中的对象, 获取选中的内容
2050
+ *
2051
+ * @example
2052
+ * ```typescript
2053
+ * const viewerSelectionService = application.getService(ModelViewerSelectionService);
2054
+ * ```
2055
+ */
2056
+ export declare class ModelViewerSelectionService extends BaseService {
2057
+ constructor();
2058
+ /**
2059
+ * 获取当前选中的数据
2060
+ */
2061
+ getSelected(): ISelected;
2062
+ /**
2063
+ * 设置选中的模型
2064
+ * 同时选中多个模型暂未支持,请勿使用
2065
+ * @param option ISetSelectedByIdOption
2066
+ * @example
2067
+ * ```
2068
+ * const viewerSelectionService = application.getService(ModelViewerSelectionService);
2069
+ * const selectOption = {
2070
+ * id: 'modelId...',
2071
+ * type: ESetSelectType.MODEL,
2072
+ * };
2073
+ *
2074
+ * viewerSelectionService.select(selectOption);
2075
+ * ```
2076
+ */
2077
+ select(option: ISetSelectedByIdOption | ISetSelectedByIdOption[]): void;
2078
+ /**
2079
+ * 取消场景当中选中内容
2080
+ * 同时取消多个模型暂未支持,请勿使用
2081
+ * @param option
2082
+ * @example
2083
+ * ```
2084
+ * const viewerSelectionService = application.getService(ModelViewerSelectionService);
2085
+ * const selectOption = {
2086
+ * id: 'modelId...',
2087
+ * type: ESetSelectType.MODEL,
2088
+ * };
2089
+ *
2090
+ * // 取消指定选中模型
2091
+ * viewerSelectionService.unSelect(selectOption);
2092
+ * // 默认取消全部选中模型
2093
+ * viewerSelectionService.unSelect();
2094
+ * ```
2095
+ */
2096
+ unSelect(option?: ISetSelectedByIdOption | ISetSelectedByIdOption[]): void;
2097
+ /**
2098
+ * 根据参数生成entity
2099
+ * @param option
2100
+ * @returns entity
2101
+ * @private
2102
+ * @ignore
2103
+ */
2104
+ private __generateEntity;
2105
+ /**
2106
+ * @ignore
2107
+ */
2108
+ private onSelectedChanged;
2109
+ /**
2110
+ * 监听当前选中内容
2111
+ * @param fn
2112
+ */
2113
+ on(fn: (param: ISelected) => any): void;
2114
+ /**
2115
+ * 取消监听选中变化
2116
+ * @param fn
2117
+ */
2118
+ off(fn?: (param: ISelected) => any): void;
2119
+ /**
2120
+ * 监听当前选中的内容(触发一次后自动取消)
2121
+ * @param fn
2122
+ */
2123
+ once(fn: (param: ISelected) => any): void;
2124
+ /**
2125
+ * @ignore
2126
+ */
2127
+ __onDestroy(): void;
2128
+ }
2129
+
2130
+ /**
2131
+ * 主要提供了模型展示的控制能力:重置视角,边框,半透明,以及展示颜色配置
2132
+ *
2133
+ * @example
2134
+ * ```typescript
2135
+ * const modelViewerService = application.getService(ModelViewerService);
2136
+ * ```
2137
+ */
2138
+ export declare class ModelViewerService extends BaseService {
2139
+ /**
2140
+ * 将工具方案中,选中的模型,加载到对接 2.0 小程序中展示
2141
+ *
2142
+ * 此方法,会成Application.start方法中,默认执行
2143
+ *
2144
+ */
2145
+ viewSelected(): Promise<void>;
2146
+ /**
2147
+ * 指定模型的 ID,将当前模型加载到工具方案当中
2148
+ *
2149
+ * @param id 模型ID
2150
+ */
2151
+ viewModelById(id: string | string[]): Promise<void>;
2152
+ /**
2153
+ * 重置视图展示视角
2154
+ */
2155
+ resetPerspective(): void;
2156
+ /**
2157
+ * 模型渲染是否显示边框
2158
+ * @param flag
2159
+ */
2160
+ toggleModelBorder(flag: boolean): void;
2161
+ /**
2162
+ * 模型渲染是否为半透明
2163
+ * @param flag
2164
+ */
2165
+ toggleModelTransparent(flag: boolean): void;
2166
+ /**
2167
+ * 设置交接信息展示颜色
2168
+ *
2169
+ * > `settings`,需要在application.start()后,立即被设置,否则展示会读取至之前配置信息,展示可能存在异常。
2170
+ */
2171
+ setting(settings: Partial<ISettingColor>): void;
2172
+ /**
2173
+ * 刷新场景内所有模型
2174
+ *
2175
+ * > example: 调用工具API修改模型材质纹理方向(或其他属性)后,调用该API可手动同步模型修改到小程序渲染场景中(效果同退出小程序后重新进入),如果小程序中不存在任意模型,则抛出错误.
2176
+ */
2177
+ refreshModel(): Promise<void>;
2178
+ }
2179
+
2180
+ /**
2181
+ * 可选值参数每项数据类型
2182
+ */
2183
+ declare interface NamedValue<T = any> {
2184
+ /**
2185
+ * 显示的名称
2186
+ */
2187
+ name: string;
2188
+ value: T;
2189
+ }
2190
+
2191
+ /**
2192
+ * 二维空间下:坐标/向量/旋转/尺寸的基础表示
2193
+ */
2194
+ declare interface Number2 {
2195
+ /**
2196
+ * x轴上的数据
2197
+ */
2198
+ x: number;
2199
+ /**
2200
+ * y轴上数据
2201
+ */
2202
+ y: number;
2203
+ }
2204
+
2205
+ /**
2206
+ * 三维空间下,坐标/向量/旋转/尺寸的基础表示
2207
+ */
2208
+ declare interface Number3_2 extends Number2 {
2209
+ /**
2210
+ * z轴方向数据
2211
+ */
2212
+ z: number;
2213
+ }
2214
+
2215
+ /**
2216
+ * 提供渲染场景的控制
2217
+ *
2218
+ * @example
2219
+ * ```typescript
2220
+ * const SceneService = application.getService(SceneService);
2221
+ * ```
2222
+ */
2223
+ export declare class SceneService extends BaseService {
2224
+ /**
2225
+ * 设置场景内模型交互级别
2226
+ * @param param.mode EDesignMode
2227
+ * @param param.customModeCb 自定义模式回调
2228
+ * @param param.customModeCb.findSelectModel 检测选中模型
2229
+ * @param param.customModeCb.findHintModel 检测高亮模型
2230
+ *
2231
+ * 除自定义模式外,每一种模式内部定义了单击可选中的模型类型:
2232
+ * * `TOP_MODEL`: 顶层模型、模型组合
2233
+ * * `ACCESSORY`: 组件(组件定义来源定制工具线)
2234
+ * * `PRODUCT`: 底层商品模型
2235
+ *
2236
+ * 每一种模式单击选中某模型后,可双击选中下层模型
2237
+ *
2238
+ * 例:`TOP_MODEL`模式下,单击选中一个组合后,可双击双中组合中的顶层模型,再双击可选中顶层模型下的组件,单双击操作不可以逆向选择,假设处于`PRODUCT`模式下,那只能单击选中底层商品模型
2239
+ *
2240
+ * **自定义模式:**
2241
+ *
2242
+ * 自定义模式下,可以自定义选中模型的级别,以及高亮模型的级别,SDK传出目前的交互类型(`单击、双击、Hover`)及对应的底层商品模型
2243
+ */
2244
+ setDesignMode({ mode, customModeCb, }: {
2245
+ mode: EDesignMode;
2246
+ customModeCb?: {
2247
+ findSelectModel: IFindSelectModel;
2248
+ findHintModel: IFindHintModel;
2249
+ };
2250
+ }): void;
2251
+ /**
2252
+ * 设置多选模式快捷键,默认`shift`
2253
+ * @param key KeyboardKey
2254
+ *
2255
+ * @example
2256
+ * ```typescript
2257
+ * SceneService.registerMultiSelectShortcut('shift');
2258
+ * SceneService.registerMultiSelectShortcut(['shift', 'a']); // 同时按中`shift`和`a`多选, 无先后顺序
2259
+ * ```
2260
+ */
2261
+ registerMultiSelectShortcut(key: KeyboardKey | KeyboardKey[]): void;
2262
+ }
2263
+
2264
+ export { }