@x-viewer/core 0.21.7 → 0.21.9
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.
- package/README.md +2 -2
- package/dist/chunks/libredwg-web-CN6Seddu.js +9 -0
- package/dist/index.esm.js +1001 -991
- package/dist/types/core/compare/BaseDxfCompareHelper.d.ts +7 -19
- package/dist/types/core/compare/DxfCompareHelper.d.ts +3 -7
- package/dist/types/core/helpers/index.d.ts +0 -1
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/core/loaders/DaeLoader.d.ts +13 -0
- package/dist/types/core/loaders/DxfModelLoader.d.ts +21 -0
- package/dist/types/core/loaders/FbxLoader.d.ts +17 -0
- package/dist/types/core/loaders/GltfLoader.d.ts +26 -0
- package/dist/types/core/loaders/ModelLoader.d.ts +49 -0
- package/dist/types/core/loaders/ModelLoaderManager.d.ts +33 -0
- package/dist/types/core/loaders/ObjLoader.d.ts +15 -0
- package/dist/types/core/loaders/PlyLoader.d.ts +22 -0
- package/dist/types/core/loaders/RasterLoader.d.ts +13 -0
- package/dist/types/core/loaders/StlLoader.d.ts +15 -0
- package/dist/types/core/loaders/index.d.ts +11 -0
- package/dist/types/core/model/Model2d.d.ts +1 -1
- package/dist/types/core/utils/CoordinateUtils.d.ts +3 -9
- package/dist/types/core/viewers/BaseViewer.d.ts +17 -7
- package/dist/types/core/viewers/Viewer2d.d.ts +20 -50
- package/package.json +2 -1
- package/dist/chunks/libredwg-web-DR0Rasye.js +0 -9
- package/dist/types/core/helpers/LoadingHelper.d.ts +0 -130
- package/dist/types/core/shp-js/BitView.d.ts +0 -12
- package/dist/types/core/shp-js/SHPLoader.d.ts +0 -12
- package/dist/types/core/shp-js/Shp.d.ts +0 -10
- package/dist/types/core/shp-js/ShpThree.d.ts +0 -23
- package/dist/types/core/shp-js/index.d.ts +0 -4
|
@@ -43,15 +43,9 @@ export declare class BaseDxfCompareHelper {
|
|
|
43
43
|
constructor(viewerCfg: Viewer2dConfig);
|
|
44
44
|
protected initSpinner(): void;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @description {zh} 设置字体。
|
|
50
|
-
* 需要在加载dxf之前调用,不会影响已加载的文字。
|
|
51
|
-
* 支持shx或typeface格式。对于typeface,目前只支持传入1个字体文件。
|
|
52
|
-
* @param urls
|
|
53
|
-
* - {en} font file urls.
|
|
54
|
-
* - {zh} 字体文件链接。
|
|
46
|
+
* Loads fonts used when parsing DXF text. Call before loading a DXF; does not affect text that is already loaded.
|
|
47
|
+
* Supports SHX or typeface bundles; for typeface, only a single file in the array is supported for now.
|
|
48
|
+
* @param urls Font file URLs.
|
|
55
49
|
* @example
|
|
56
50
|
* ```typescript
|
|
57
51
|
* compareHelper.setFont(["https://example.com/xxx.shx"]);
|
|
@@ -68,11 +62,8 @@ export declare class BaseDxfCompareHelper {
|
|
|
68
62
|
*/
|
|
69
63
|
compare(modelCfg1: Model2dConfig, modelCfg2: Model2dConfig, compareCfg?: DxfCompareConfig, onProgress?: (event: ProgressEvent) => void): Promise<void>;
|
|
70
64
|
/**
|
|
71
|
-
*
|
|
72
|
-
* @
|
|
73
|
-
* @returns
|
|
74
|
-
* - {en} Compare changes.
|
|
75
|
-
* - {zh} 对比变动列表。
|
|
65
|
+
* Returns the comparison diff (per-change records) from the last successful `compare`.
|
|
66
|
+
* @returns Compare changes keyed by id, or undefined if not yet compared.
|
|
76
67
|
* @example
|
|
77
68
|
* ``` typescript
|
|
78
69
|
* const changes = compareHelper.getChanges();
|
|
@@ -81,11 +72,8 @@ export declare class BaseDxfCompareHelper {
|
|
|
81
72
|
*/
|
|
82
73
|
getChanges(): Record<number, DxfChange> | undefined;
|
|
83
74
|
/**
|
|
84
|
-
*
|
|
85
|
-
* @
|
|
86
|
-
* @param changeId
|
|
87
|
-
* - {en} Change id, which is an incremental integer starts from 1.
|
|
88
|
-
* - {zh} 变动id,该id是从数字1开始自增的整数。
|
|
75
|
+
* Zooms the camera to the bounding box of a single compare change (with padding).
|
|
76
|
+
* @param changeId Change id: positive integer, starting at 1.
|
|
89
77
|
* @example
|
|
90
78
|
* ``` typescript
|
|
91
79
|
* const changeId = 1;
|
|
@@ -39,8 +39,7 @@ export declare class DxfCompareHelper extends BaseDxfCompareHelper {
|
|
|
39
39
|
constructor(viewerCfg1: Viewer2dConfig, viewerCfg2: Viewer2dConfig);
|
|
40
40
|
protected initSyncCameraEvent(): void;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
43
|
-
* @description {zh} 设置开启或关闭同步相机视角。
|
|
42
|
+
* Enables or disables synchronizing the two viewers' cameras when either one moves.
|
|
44
43
|
* @example
|
|
45
44
|
* ```typescript
|
|
46
45
|
* compareHelper.enableSyncCamera(true);
|
|
@@ -57,11 +56,8 @@ export declare class DxfCompareHelper extends BaseDxfCompareHelper {
|
|
|
57
56
|
*/
|
|
58
57
|
compare(modelCfg1: Model2dConfig, modelCfg2: Model2dConfig, compareCfg?: DxfCompareConfig, onProgress?: (event: ProgressEvent) => void): Promise<void>;
|
|
59
58
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @
|
|
62
|
-
* @param changeId
|
|
63
|
-
* - {en} Change id, which is an incremental integer starts from 1.
|
|
64
|
-
* - {zh} 变动id,该id是从数字1开始自增的整数。
|
|
59
|
+
* Zooms both viewers to the bounding box of one compare change (with padding).
|
|
60
|
+
* @param changeId Change id: positive integer starting at 1.
|
|
65
61
|
* @example
|
|
66
62
|
* ``` typescript
|
|
67
63
|
* const changeId = 1;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class DaeLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.dae";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["dae"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private applyRequestHeader;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
3
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
4
|
+
import type { DxfData, DxfLoaderConfig } from "../../core/dxf";
|
|
5
|
+
import type { FontManager } from "../../core/font";
|
|
6
|
+
export declare class DxfModelLoader extends BaseModelLoader {
|
|
7
|
+
private readonly manager?;
|
|
8
|
+
readonly id = "loader.builtin.dxf";
|
|
9
|
+
readonly priority = 0;
|
|
10
|
+
readonly formats: readonly ["dxf", "dwg"];
|
|
11
|
+
private font?;
|
|
12
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
13
|
+
setFont(font?: FontManager): void;
|
|
14
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
15
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
16
|
+
loadEx(url: string, dxfDataId?: string, onProgress?: (event: ProgressEvent) => void, onLoad?: () => void, cfg?: DxfLoaderConfig, requestHeader?: {
|
|
17
|
+
[header: string]: string;
|
|
18
|
+
}): Promise<DxfData>;
|
|
19
|
+
loadExFromBuffer(data: ArrayBuffer | Uint8Array, dxfDataId?: string, onProgress?: (event: ProgressEvent) => void, onLoad?: () => void, cfg?: DxfLoaderConfig): Promise<DxfData>;
|
|
20
|
+
private applyRequestHeader;
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class FbxLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.fbx";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["fbx"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private applyUnitScaleToMeters;
|
|
15
|
+
private fixMaterials;
|
|
16
|
+
private hasSuspiciousDarkVertexColors;
|
|
17
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
/**
|
|
5
|
+
* glTF / GLB model loader wrapping GLTFLoader, DRACO path, and progress handling.
|
|
6
|
+
*/
|
|
7
|
+
export declare class GltfLoader extends BaseModelLoader {
|
|
8
|
+
private readonly manager?;
|
|
9
|
+
readonly id = "loader.builtin.gltf";
|
|
10
|
+
readonly priority = 0;
|
|
11
|
+
readonly formats: readonly ["gltf", "glb"];
|
|
12
|
+
private static dracoDecoderPath;
|
|
13
|
+
static setDracoDecoderPath(path: string): void;
|
|
14
|
+
private gltfLoader?;
|
|
15
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
16
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
17
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
18
|
+
parseToScene(data: ArrayBuffer | string, path: string, onLoad: (object: THREE.Object3D) => void, onError?: (event: ErrorEvent) => void): void;
|
|
19
|
+
private obtainLoader;
|
|
20
|
+
private applyRequestHeader;
|
|
21
|
+
private sanitizeUrlForLoad;
|
|
22
|
+
/**
|
|
23
|
+
* Filter invalid early progress events from three.js loadAsync.
|
|
24
|
+
*/
|
|
25
|
+
private wrapProgress;
|
|
26
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* Shared fields for one model load request.
|
|
4
|
+
*/
|
|
5
|
+
interface BaseModelLoadContext {
|
|
6
|
+
/** Normalized lowercase format token; same semantics as historical `endsWith` checks. */
|
|
7
|
+
readonly format: string;
|
|
8
|
+
readonly onProgress?: (event: ProgressEvent) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Context for model loading from URL.
|
|
12
|
+
*/
|
|
13
|
+
export interface ModelLoadContext extends BaseModelLoadContext {
|
|
14
|
+
readonly url: string;
|
|
15
|
+
readonly requestHeader?: {
|
|
16
|
+
[header: string]: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface ObjLoadContext extends ModelLoadContext {
|
|
20
|
+
readonly mtlUrls?: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Context for model loading from memory buffer.
|
|
24
|
+
*/
|
|
25
|
+
export interface ModelLoadFromBufferContext extends BaseModelLoadContext {
|
|
26
|
+
readonly data: ArrayBuffer | Uint8Array;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Pluggable model loader (strategy). Built-ins and extensions share this contract.
|
|
30
|
+
*/
|
|
31
|
+
export declare abstract class BaseModelLoader {
|
|
32
|
+
/** Stable id for unregister and diagnostics. */
|
|
33
|
+
abstract readonly id: string;
|
|
34
|
+
/** Higher runs first; use a value above built-in `0` to override built-ins. */
|
|
35
|
+
readonly priority?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Lowercase extension tokens without a leading dot (e.g. `glb`, `gltf`).
|
|
38
|
+
* Aggregated by `ModelLoaderManager.getSupportedModelFormats`; default {@link match} uses suffix checks on these entries.
|
|
39
|
+
*/
|
|
40
|
+
abstract readonly formats: readonly string[];
|
|
41
|
+
/**
|
|
42
|
+
* True when `format` (often a lowercased filename or extension token) ends with one of {@link formats}.
|
|
43
|
+
* Override for non-suffix matching.
|
|
44
|
+
*/
|
|
45
|
+
match(format: string): boolean;
|
|
46
|
+
load?(ctx: ModelLoadContext): Promise<THREE.Object3D | void>;
|
|
47
|
+
loadFromBuffer?(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D | void>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { BaseModelLoader } from "./ModelLoader";
|
|
3
|
+
import type { FontManager } from "../../core/font";
|
|
4
|
+
export declare class ModelLoaderManager {
|
|
5
|
+
private font?;
|
|
6
|
+
private manager?;
|
|
7
|
+
/** Built-in loaders; rebuilt when {@link setLoadManager} / {@link setFont} runs. */
|
|
8
|
+
private readonly builtinLoaders;
|
|
9
|
+
/** Extension loaders (e.g. from plugins); preserved across builtin rebuilds. */
|
|
10
|
+
private readonly extensionLoaders;
|
|
11
|
+
constructor(manager?: THREE.LoadingManager);
|
|
12
|
+
register(loader: BaseModelLoader): void;
|
|
13
|
+
unregister(id: string): void;
|
|
14
|
+
private unregisterFromList;
|
|
15
|
+
private rebuildBuiltinLoaders;
|
|
16
|
+
private allLoaders;
|
|
17
|
+
/**
|
|
18
|
+
* Unique extension tokens from all registered loaders (extensions first, then built-ins), sorted.
|
|
19
|
+
*/
|
|
20
|
+
getSupportedModelFormats(): string[];
|
|
21
|
+
private createBuiltinModelLoaders;
|
|
22
|
+
private resolveModelLoader;
|
|
23
|
+
private computeUrlModelFormat;
|
|
24
|
+
private loadModelInternal;
|
|
25
|
+
private loadModelFromBufferInternal;
|
|
26
|
+
setLoadManager(manager?: THREE.LoadingManager): void;
|
|
27
|
+
loadLocalModel(url: string, src: string, onProgress?: (event: ProgressEvent) => void, mtlUrls?: string[]): Promise<THREE.Object3D>;
|
|
28
|
+
loadModel(src: string, fileFormat?: string, onProgress?: (event: ProgressEvent) => void, requestHeader?: {
|
|
29
|
+
[header: string]: string;
|
|
30
|
+
}): Promise<THREE.Object3D | void>;
|
|
31
|
+
loadModelFromBuffer(data: ArrayBuffer | Uint8Array, fileFormat: string, onProgress?: (event: ProgressEvent) => void): Promise<THREE.Object3D | void>;
|
|
32
|
+
setFont(font: FontManager): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadFromBufferContext, ObjLoadContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class ObjLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.obj";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["obj"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ObjLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private parseMtlUrlsFromObj;
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class PlyLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.ply";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["ply"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
/**
|
|
15
|
+
* PLYLoader always does `channel / 255` for vertex rgb. Float colors already in 0..1 become ~0.004 (near black).
|
|
16
|
+
* Also ensure normals exist so MeshStandardMaterial is lit correctly.
|
|
17
|
+
*/
|
|
18
|
+
private static preparePlyGeometry;
|
|
19
|
+
private static ensureVertexNormals;
|
|
20
|
+
private static fixVertexColorEncoding;
|
|
21
|
+
private finalizeLoadedObject;
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class RasterLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.raster";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["jpg", "jpeg", "png"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private applyRequestHeader;
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class StlLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.stl";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["stl"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private meshFromGeometry;
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { BaseModelLoader } from "./ModelLoader";
|
|
2
|
+
export type { ModelLoadContext, ModelLoadFromBufferContext, ObjLoadContext } from "./ModelLoader";
|
|
3
|
+
export { ModelLoaderManager } from "./ModelLoaderManager";
|
|
4
|
+
export { DaeLoader } from "./DaeLoader";
|
|
5
|
+
export { DxfModelLoader } from "./DxfModelLoader";
|
|
6
|
+
export { FbxLoader } from "./FbxLoader";
|
|
7
|
+
export { GltfLoader } from "./GltfLoader";
|
|
8
|
+
export { ObjLoader } from "./ObjLoader";
|
|
9
|
+
export { PlyLoader } from "./PlyLoader";
|
|
10
|
+
export { RasterLoader } from "./RasterLoader";
|
|
11
|
+
export { StlLoader } from "./StlLoader";
|
|
@@ -95,7 +95,7 @@ export declare class Model2d extends Model {
|
|
|
95
95
|
/**
|
|
96
96
|
* Sets layer visibility.
|
|
97
97
|
*/
|
|
98
|
-
setLayerVisible(layerName: string, visible: boolean,
|
|
98
|
+
setLayerVisible(layerName: string, visible: boolean, enableSmallFeatureCulling?: boolean, cameraZoom?: number): void;
|
|
99
99
|
/**
|
|
100
100
|
* Sets layer opacity.
|
|
101
101
|
*/
|
|
@@ -64,18 +64,12 @@ export declare class CoordinateUtils {
|
|
|
64
64
|
*/
|
|
65
65
|
static screen2World(vector: THREE.Vector2, camera: THREE.Camera, container: HTMLElement): THREE.Vector3;
|
|
66
66
|
/**
|
|
67
|
-
* Converts screen point to NDC
|
|
68
|
-
* @
|
|
69
|
-
* @description {zh} 标准化屏幕坐标:左下角(-1, -1), 右上角(1, 1)。
|
|
70
|
-
* @description {en} World coordinate to normalized screen coordinate(0-1).
|
|
71
|
-
* @description {zh} 世界坐标转标准化屏幕坐标(0-1)。
|
|
67
|
+
* Converts a screen pixel point to NDC: bottom-left (-1, -1), top-right (1, 1).
|
|
68
|
+
* (Related: {@link world2NormalizedScreen} maps world to 0–1 screen space.)
|
|
72
69
|
*/
|
|
73
70
|
static screen2Ndc(vector: THREE.Vector2, camera: THREE.Camera, container: HTMLElement): THREE.Vector2;
|
|
74
71
|
/**
|
|
75
|
-
*
|
|
76
|
-
* @description {zh} 标准化屏幕坐标:左上角(0, 0), 右下角(1, 1)。
|
|
77
|
-
* @description {en} World coordinate to normalized screen coordinate(0-1).
|
|
78
|
-
* @description {zh} 世界坐标转标准化屏幕坐标(0-1)。
|
|
72
|
+
* Maps a world point to normalized screen coordinates: top-left (0, 0), bottom-right (1, 1).
|
|
79
73
|
*/
|
|
80
74
|
static world2NormalizedScreen(worldCoord: THREE.Vector2 | THREE.Vector3, camera: THREE.Camera, container: HTMLElement): THREE.Vector2;
|
|
81
75
|
}
|
|
@@ -10,9 +10,9 @@ import { CanvasRender } from "../../core/canvas";
|
|
|
10
10
|
import { Container } from "../../core/components/Container";
|
|
11
11
|
import { FontManager } from "../../core/font";
|
|
12
12
|
import { ZoomToRectHelper } from "../../core/helpers";
|
|
13
|
-
import { LoadingHelper } from "../../core/helpers/LoadingHelper";
|
|
14
13
|
import { InputManager } from "../../core/input-manager";
|
|
15
14
|
import { Interaction } from "../../core/interactions/Interaction";
|
|
15
|
+
import { BaseModelLoader, ModelLoaderManager } from "../../core/loaders";
|
|
16
16
|
import { Model } from "../../core/model";
|
|
17
17
|
import { PickManager } from "../../core/pick";
|
|
18
18
|
import { SceneManager } from "../../core/scene/SceneManager";
|
|
@@ -45,7 +45,7 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
45
45
|
protected spinner: Spinner;
|
|
46
46
|
protected progressBar?: ProgressBar;
|
|
47
47
|
protected watermark?: Watermark;
|
|
48
|
-
protected
|
|
48
|
+
protected loaderManager: ModelLoaderManager;
|
|
49
49
|
protected zoomToRectHelper?: ZoomToRectHelper;
|
|
50
50
|
protected interaction?: Interaction;
|
|
51
51
|
/**
|
|
@@ -103,9 +103,7 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
103
103
|
protected animate(timeStamp?: number): void;
|
|
104
104
|
resize(): void;
|
|
105
105
|
/**
|
|
106
|
-
*
|
|
107
|
-
* Draco decoder will be used if a model is draco encoded.
|
|
108
|
-
* @param decoderPath e.g., "libs/draco/gltf/"
|
|
106
|
+
* @deprecated use GltfLoader.setDracoDecoderPath instead
|
|
109
107
|
* @hidden
|
|
110
108
|
*/
|
|
111
109
|
setDracoDecoderPath(path: string): void;
|
|
@@ -127,8 +125,7 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
127
125
|
*/
|
|
128
126
|
getPixelSizeInWorldCoord(): number;
|
|
129
127
|
/**
|
|
130
|
-
*
|
|
131
|
-
* @description {zh} 询问用户选择一个框选区域,然后缩放到该区域。
|
|
128
|
+
* Lets the user box-select a region on screen, then zooms the camera to that region.
|
|
132
129
|
* @example
|
|
133
130
|
* ``` typescript
|
|
134
131
|
* viewer.zoomToRect();
|
|
@@ -243,5 +240,18 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
243
240
|
* Finds a Plugin.
|
|
244
241
|
*/
|
|
245
242
|
findPlugin(id: string): Plugin | undefined;
|
|
243
|
+
/**
|
|
244
|
+
* Adds a model format loader (typically from a plugin).
|
|
245
|
+
* Extension loaders are kept when the viewer refreshes built-in loaders (font / loading manager changes).
|
|
246
|
+
*/
|
|
247
|
+
addModelLoader(loader: BaseModelLoader): void;
|
|
248
|
+
/**
|
|
249
|
+
* Removes a previously added extension loader by id.
|
|
250
|
+
*/
|
|
251
|
+
removeModelLoader(id: string): void;
|
|
252
|
+
/**
|
|
253
|
+
* Extension tokens (e.g. `glb`, `dxf`) supported by the current model loader stack, including plugins.
|
|
254
|
+
*/
|
|
255
|
+
getSupportedModelFormats(): string[];
|
|
246
256
|
}
|
|
247
257
|
export {};
|
|
@@ -166,23 +166,14 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
166
166
|
constructor(viewerCfg: Viewer2dConfig);
|
|
167
167
|
get camera(): THREE.OrthographicCamera;
|
|
168
168
|
/**
|
|
169
|
-
*
|
|
170
|
-
* The first loaded file
|
|
169
|
+
* Loads a DXF/DWG model.
|
|
170
|
+
* The first loaded file becomes the "master" model.
|
|
171
171
|
* Any other files are non-master, we call "overlay" model.
|
|
172
172
|
* We'll load everything of a master model, including model and paper space.
|
|
173
173
|
* For an overlay model, we'll only load its model space. And its model space can only
|
|
174
174
|
* overly to master model's model space.
|
|
175
|
-
* @
|
|
176
|
-
*
|
|
177
|
-
* 任何其他文件都是非主文件,我们称之为“叠加”模型。
|
|
178
|
-
* 我们将加载主模型的所有内容,包括模型和图纸空间。
|
|
179
|
-
* 对于叠加模型,我们只会加载其模型空间。并且它的模型空间只能叠加到主模型的模型空间上。
|
|
180
|
-
* @param modelCfg
|
|
181
|
-
* - {en} The configuration of the model to be loaded.
|
|
182
|
-
* - {zh} 要加载的模型的配置。
|
|
183
|
-
* @param onProgress
|
|
184
|
-
* - {en} A callback function to indicate the loading progress.
|
|
185
|
-
* - {zh} 用于指示加载进度的回调函数。
|
|
175
|
+
* @param modelCfg Configuration of the model to load.
|
|
176
|
+
* @param onProgress Optional callback for loading progress.
|
|
186
177
|
* @example
|
|
187
178
|
* ``` typescript
|
|
188
179
|
* const viewerCfg = {
|
|
@@ -209,6 +200,7 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
209
200
|
*/
|
|
210
201
|
parseFile(modelCfg: Model2dConfig, onProgress?: ((event: ProgressEvent<EventTarget>) => void) | undefined): Promise<DxfData>;
|
|
211
202
|
addModel(model: Model2d): void;
|
|
203
|
+
private createDxfModelLoader;
|
|
212
204
|
setObjectHighlight(object: THREE.Object3D): void;
|
|
213
205
|
setObjectUnHighlight(object: THREE.Object3D): void;
|
|
214
206
|
clearHighlight(): void;
|
|
@@ -227,11 +219,8 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
227
219
|
*/
|
|
228
220
|
getWorldPositionByMousePick(mousePosition: THREE.Vector2): THREE.Vector3 | undefined;
|
|
229
221
|
/**
|
|
230
|
-
*
|
|
231
|
-
* @
|
|
232
|
-
* @param layoutName
|
|
233
|
-
* - {en} The name of the layout to be activated.
|
|
234
|
-
* - {zh} 要激活的布局名称。
|
|
222
|
+
* Activates a layout tab (model or paper space).
|
|
223
|
+
* @param layoutName Layout name to activate.
|
|
235
224
|
* @example
|
|
236
225
|
* ```typescript
|
|
237
226
|
* viewer.activateLayout('Layout1');
|
|
@@ -257,10 +246,8 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
257
246
|
goToHomeView(): void;
|
|
258
247
|
zoomToBBox(bbox: THREE.Box3): void;
|
|
259
248
|
/**
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
* @description {zh} 获取当前视图范围。
|
|
263
|
-
* 用户可使用该接口获取当前视口范围,并在适当的场景下跳转到该视口范围。
|
|
249
|
+
* Returns the current view extent in world XY (from NDC corners).
|
|
250
|
+
* Useful to save as a viewpoint and restore the same framing later.
|
|
264
251
|
* @example
|
|
265
252
|
* ``` typescript
|
|
266
253
|
* const box = viewer.getCurrentViewExtent();
|
|
@@ -290,11 +277,7 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
290
277
|
*/
|
|
291
278
|
getHitResult(event: MouseEvent | PointerEvent | EventInfo): THREE.Vector2 | undefined;
|
|
292
279
|
/**
|
|
293
|
-
*
|
|
294
|
-
* @description {zh} 获取当前布局。
|
|
295
|
-
* @returns
|
|
296
|
-
* - {en} Active layout name or undefined.
|
|
297
|
-
* - {zh} 当前激活的布局名称或undefined。
|
|
280
|
+
* Returns the active layout name, or undefined if none.
|
|
298
281
|
* @example
|
|
299
282
|
* ``` typescript
|
|
300
283
|
* const activeLayout = viewer.getActiveLayoutName();
|
|
@@ -305,11 +288,7 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
305
288
|
zoomIn(step?: number): void;
|
|
306
289
|
zoomOut(step?: number): void;
|
|
307
290
|
/**
|
|
308
|
-
*
|
|
309
|
-
* @description {zh} 获取dxf图层。
|
|
310
|
-
* @returns
|
|
311
|
-
* - {en} Dxf layers.
|
|
312
|
-
* - {zh} dxf图层。
|
|
291
|
+
* Returns layer tables grouped by loaded model (master first, then overlays).
|
|
313
292
|
* @example
|
|
314
293
|
* ``` typescript
|
|
315
294
|
* const dxfLayers = viewer.getLayers();
|
|
@@ -328,20 +307,11 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
328
307
|
*/
|
|
329
308
|
setModelVisibility(modelId: string, visible: boolean): void;
|
|
330
309
|
/**
|
|
331
|
-
*
|
|
332
|
-
* @
|
|
333
|
-
* @param
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
* @param visible
|
|
337
|
-
* - {en} Layer's target visibility.
|
|
338
|
-
* - {zh} 图层的目标可见性。
|
|
339
|
-
* @param modelId
|
|
340
|
-
* - {en} Useful when more than one model is loaded, if not specified, will use the master model.
|
|
341
|
-
* - {zh} 当加载了多个模型时有用,如果未指定,将使用主模型。
|
|
342
|
-
* @throws Error
|
|
343
|
-
* - {en}: Throws exception if given modelId doesn't exist.
|
|
344
|
-
* - {zh} 如果给定的modelId不存在,则抛出异常。
|
|
310
|
+
* Sets visibility of a layer by name.
|
|
311
|
+
* @param layerName Layer to show or hide.
|
|
312
|
+
* @param visible Target visibility.
|
|
313
|
+
* @param modelId When multiple models are loaded, target model; defaults to the master model.
|
|
314
|
+
* @throws If `modelId` does not match any loaded model.
|
|
345
315
|
* @example
|
|
346
316
|
* ``` typescript
|
|
347
317
|
* // Hides layer "0"
|
|
@@ -366,11 +336,11 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
366
336
|
*/
|
|
367
337
|
resetLayerColor(layerName: string, modelId?: string): void;
|
|
368
338
|
/**
|
|
369
|
-
* Enables
|
|
339
|
+
* Enables small feature culling in order to improve performance.
|
|
370
340
|
*/
|
|
371
|
-
|
|
341
|
+
enableSmallFeatureCulling(enable: boolean): void;
|
|
372
342
|
/**
|
|
373
|
-
* If
|
|
343
|
+
* If small feature culling is enabled.
|
|
374
344
|
*/
|
|
375
|
-
|
|
345
|
+
isSmallFeatureCullingEnabled(): boolean;
|
|
376
346
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x-viewer/core",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.9",
|
|
4
4
|
"homepage": "https://dwg.thingraph.site/",
|
|
5
5
|
"description": "WebGL-based 2D/3D viewer engine built on Three.js. View DWG/DXF/PDF files in the browser with no server required. Supports glTF, OBJ, FBX, IFC, STL and BimTiles formats.",
|
|
6
6
|
"author": "thingraph",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"types": "dist/types/index.d.ts",
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build": "pnpm run clean:build && pnpm run data-type && rollup -c --environment BUILD:production",
|
|
59
|
+
"build:dev": "cross-env OBFUSCATE=false pnpm run build",
|
|
59
60
|
"clean:build": "rimraf ./dist",
|
|
60
61
|
"data-type": "tsc --project tsconfig.bundle.json && tsc-alias -p tsconfig.bundle.json",
|
|
61
62
|
"dev": "pnpm run data-type && rollup -c -w",
|