@inweb/viewer-visualize 26.9.1 → 26.9.2
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/dist/viewer-visualize.js +144 -115
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +142 -119
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Components/ResizeCanvasComponent.d.ts +1 -1
- package/lib/Viewer/Loaders/index.d.ts +1 -2
- package/lib/Viewer/Viewer.d.ts +6 -4
- package/package.json +5 -5
- package/src/Viewer/Commands/ApplyModelTransform.ts +1 -1
- package/src/Viewer/Commands/AutoTransformAllModelsToCentralPoint.ts +1 -1
- package/src/Viewer/Commands/SetSelected.ts +1 -1
- package/src/Viewer/Components/ResizeCanvasComponent.ts +6 -2
- package/src/Viewer/Draggers/Actions/OrbitAction.ts +6 -0
- package/src/Viewer/Draggers/Actions/PanAction.ts +3 -0
- package/src/Viewer/Draggers/Actions/ZoomAction.ts +4 -0
- package/src/Viewer/Draggers/OdaWalkDragger.ts +4 -0
- package/src/Viewer/Loaders/VSFCloudLoader.ts +10 -9
- package/src/Viewer/Loaders/VSFFileLoader.ts +12 -7
- package/src/Viewer/Loaders/VSFXCloudLoader.ts +4 -6
- package/src/Viewer/Loaders/VSFXCloudPartialLoader.ts +6 -11
- package/src/Viewer/Loaders/VSFXCloudStreamingLoader.ts +7 -11
- package/src/Viewer/Loaders/VSFXFileLoader.ts +12 -7
- package/src/Viewer/Loaders/index.ts +1 -2
- package/src/Viewer/Markup/Visualize/VisualizeMarkup.ts +2 -2
- package/src/Viewer/Viewer.ts +83 -67
|
@@ -49,10 +49,9 @@ import { ILoadersRegistry } from "@inweb/viewer-core";
|
|
|
49
49
|
*
|
|
50
50
|
* this.viewer.visualizeJs.getViewer().parseVsfx(data);
|
|
51
51
|
*
|
|
52
|
-
* this.viewer.syncOpenCloudVisualStyle(false);
|
|
53
52
|
* this.viewer.syncOptions();
|
|
54
53
|
* this.viewer.syncOverlay();
|
|
55
|
-
* this.viewer.
|
|
54
|
+
* this.viewer.update();
|
|
56
55
|
*
|
|
57
56
|
* this.viewer.emitEvent({ type: "databasechunk", data, file });
|
|
58
57
|
*
|
package/lib/Viewer/Viewer.d.ts
CHANGED
|
@@ -11,13 +11,14 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
11
11
|
private _activeDragger;
|
|
12
12
|
private _components;
|
|
13
13
|
private _enableAutoUpdate;
|
|
14
|
-
private
|
|
15
|
-
private _isRunAsyncUpdate;
|
|
14
|
+
private _renderNeeded;
|
|
16
15
|
private _renderTime;
|
|
16
|
+
private _isRunAsyncUpdate;
|
|
17
17
|
protected _options: Options;
|
|
18
18
|
protected _visualizeJsUrl: string;
|
|
19
19
|
protected _visualizeJs: any;
|
|
20
20
|
protected _visualizeTimestamp: number;
|
|
21
|
+
protected _viewer: any;
|
|
21
22
|
protected _crossOrigin: any;
|
|
22
23
|
private canvaseventlistener;
|
|
23
24
|
canvasEvents: string[];
|
|
@@ -103,7 +104,8 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
103
104
|
* Returns `true` if `VisualizeJS` module has been loaded and initialized.
|
|
104
105
|
*/
|
|
105
106
|
isInitialized(): boolean;
|
|
106
|
-
|
|
107
|
+
setSize(width: number, height: number, updateStyle?: boolean): void;
|
|
108
|
+
render(time?: DOMHighResTimeStamp): void;
|
|
107
109
|
resize(): this;
|
|
108
110
|
/**
|
|
109
111
|
* Updates the viewer.
|
|
@@ -150,7 +152,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
150
152
|
* instance.
|
|
151
153
|
*/
|
|
152
154
|
visViewer(): any;
|
|
153
|
-
syncOpenCloudVisualStyle(
|
|
155
|
+
syncOpenCloudVisualStyle(): this;
|
|
154
156
|
syncOptions(options?: IOptions): this;
|
|
155
157
|
syncHighlightingOptions(options?: IOptions): this;
|
|
156
158
|
get draggers(): string[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inweb/viewer-visualize",
|
|
3
|
-
"version": "26.9.
|
|
3
|
+
"version": "26.9.2",
|
|
4
4
|
"description": "JavaScript library for rendering CAD and BIM files in a browser using VisualizeJS",
|
|
5
5
|
"homepage": "https://cloud.opendesign.com/docs/index.html",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"docs": "typedoc"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@inweb/client": "~26.9.
|
|
33
|
-
"@inweb/eventemitter2": "~26.9.
|
|
34
|
-
"@inweb/markup": "~26.9.
|
|
35
|
-
"@inweb/viewer-core": "~26.9.
|
|
32
|
+
"@inweb/client": "~26.9.2",
|
|
33
|
+
"@inweb/eventemitter2": "~26.9.2",
|
|
34
|
+
"@inweb/markup": "~26.9.2",
|
|
35
|
+
"@inweb/viewer-core": "~26.9.2"
|
|
36
36
|
},
|
|
37
37
|
"visualizeJS": "https://public-fhemb7e3embacwec.z02.azurefd.net/libs/visualizejs/master/Visualize.js"
|
|
38
38
|
}
|
|
@@ -44,7 +44,7 @@ export function applyModelTransform(viewer: Viewer, model: Model | File | Assemb
|
|
|
44
44
|
if (!model.getModelTransformMatrix) return; // Model.getModelTransformMatrix() since 24.3.14
|
|
45
45
|
|
|
46
46
|
const visLib = viewer.visLib();
|
|
47
|
-
const visViewer =
|
|
47
|
+
const visViewer = viewer.visViewer();
|
|
48
48
|
|
|
49
49
|
const modelItr = visViewer.getModelIterator();
|
|
50
50
|
for (; !modelItr.done(); modelItr.step()) {
|
|
@@ -37,7 +37,7 @@ export async function autoTransformAllModelsToCentralPoint(
|
|
|
37
37
|
if (!model.getModelTransformMatrix) return; // Model.getModelTransformMatrix() since 24.3.14
|
|
38
38
|
|
|
39
39
|
const visLib = viewer.visLib();
|
|
40
|
-
const visViewer =
|
|
40
|
+
const visViewer = viewer.visViewer();
|
|
41
41
|
|
|
42
42
|
const viewExt = visViewer.getActiveExtents();
|
|
43
43
|
const centralPoint = viewExt.center();
|
|
@@ -27,7 +27,7 @@ export function setSelected(viewer: Viewer, handles: string[] = []): void {
|
|
|
27
27
|
if (!viewer.visualizeJs) return;
|
|
28
28
|
|
|
29
29
|
const visLib = viewer.visLib();
|
|
30
|
-
const visViewer =
|
|
30
|
+
const visViewer = viewer.visViewer();
|
|
31
31
|
|
|
32
32
|
const selectionSet = new visLib.OdTvSelectionSet();
|
|
33
33
|
handles?.forEach((handle) => {
|
|
@@ -38,7 +38,11 @@ export class ResizeCanvasComponent implements IComponent {
|
|
|
38
38
|
this.resizeObserver.disconnect();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
resizeViewer = () => {
|
|
42
|
-
|
|
41
|
+
resizeViewer = (entries: ResizeObserverEntry[]) => {
|
|
42
|
+
const { width, height } = entries[0].contentRect;
|
|
43
|
+
|
|
44
|
+
if (!width || !height) return; // <- invisible viewer, or viewer with parent removed
|
|
45
|
+
|
|
46
|
+
this.viewer.setSize(width, height);
|
|
43
47
|
};
|
|
44
48
|
}
|
|
@@ -101,6 +101,12 @@ export class OrbitAction {
|
|
|
101
101
|
extView.delete();
|
|
102
102
|
|
|
103
103
|
this._subject.activeDragger()?.updatePreview?.();
|
|
104
|
+
this._subject.emitEvent({
|
|
105
|
+
type: "orbit",
|
|
106
|
+
});
|
|
107
|
+
this._subject.emitEvent({
|
|
108
|
+
type: "changecamera",
|
|
109
|
+
});
|
|
104
110
|
}
|
|
105
111
|
|
|
106
112
|
public endAction() {
|
|
@@ -88,6 +88,9 @@ export class PanAction {
|
|
|
88
88
|
dX: absoluteX - this._deltaScreenPosition.x,
|
|
89
89
|
dY: absoluteY - this._deltaScreenPosition.y,
|
|
90
90
|
});
|
|
91
|
+
this._subject.emitEvent({
|
|
92
|
+
type: "changecamera",
|
|
93
|
+
});
|
|
91
94
|
|
|
92
95
|
this._deltaScreenPosition = { x: absoluteX, y: absoluteY };
|
|
93
96
|
}
|
|
@@ -37,6 +37,7 @@ export class ZoomAction {
|
|
|
37
37
|
viewer.zoomAt(zoomFactor, x, y);
|
|
38
38
|
|
|
39
39
|
this._subject.deviceAutoRegeneration();
|
|
40
|
+
|
|
40
41
|
this._subject.activeDragger()?.updatePreview?.();
|
|
41
42
|
this._subject.emitEvent({
|
|
42
43
|
type: "zoomat",
|
|
@@ -44,5 +45,8 @@ export class ZoomAction {
|
|
|
44
45
|
x: absoluteX,
|
|
45
46
|
y: absoluteY,
|
|
46
47
|
});
|
|
48
|
+
this._subject.emitEvent({
|
|
49
|
+
type: "changecamera",
|
|
50
|
+
});
|
|
47
51
|
}
|
|
48
52
|
}
|
|
@@ -205,7 +205,9 @@ export class OdaWalkDragger extends OdBaseDragger {
|
|
|
205
205
|
break;
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
|
+
|
|
208
209
|
this.subject.update();
|
|
210
|
+
this.subject.emitEvent({ type: "changecamera" });
|
|
209
211
|
}
|
|
210
212
|
|
|
211
213
|
this.lastFrameTS = timestamp;
|
|
@@ -223,7 +225,9 @@ export class OdaWalkDragger extends OdBaseDragger {
|
|
|
223
225
|
|
|
224
226
|
if (dltX !== 0.0) this.turnLeft(-dltX * this.deltaAngle);
|
|
225
227
|
if (dltY !== 0.0) this.cameraWalker.turnDown(dltY * this.deltaAngle);
|
|
228
|
+
|
|
226
229
|
this.subject.update();
|
|
230
|
+
this.subject.emitEvent({ type: "changecamera" });
|
|
227
231
|
}
|
|
228
232
|
}
|
|
229
233
|
|
|
@@ -44,9 +44,7 @@ export class VSFCloudLoader extends Loader {
|
|
|
44
44
|
override async load(model: any, format?: string): Promise<this> {
|
|
45
45
|
if (!this.viewer.visualizeJs) return this;
|
|
46
46
|
|
|
47
|
-
const
|
|
48
|
-
const visViewer = visLib.getViewer();
|
|
49
|
-
|
|
47
|
+
const visViewer = this.viewer.visViewer();
|
|
50
48
|
const filesToDownload = [model.database, ...model.geometry];
|
|
51
49
|
|
|
52
50
|
console.time("File load time");
|
|
@@ -60,18 +58,21 @@ export class VSFCloudLoader extends Loader {
|
|
|
60
58
|
};
|
|
61
59
|
|
|
62
60
|
const arrayBuffer = await model.downloadResource(dataId, progress, this.abortController.signal);
|
|
61
|
+
const data = new Uint8Array(arrayBuffer);
|
|
62
|
+
|
|
63
63
|
if (!this.viewer.visualizeJs) return this;
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
try {
|
|
66
|
+
visViewer.parseStream(data);
|
|
67
|
+
} catch (error: any) {
|
|
68
|
+
console.error("VSF parse error.", error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
67
71
|
|
|
68
72
|
if (i === 0) {
|
|
69
|
-
this.viewer.update(true);
|
|
70
|
-
|
|
71
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
72
73
|
this.viewer.syncOptions();
|
|
73
74
|
this.viewer.syncOverlay();
|
|
74
|
-
this.viewer.
|
|
75
|
+
this.viewer.update(true);
|
|
75
76
|
|
|
76
77
|
this.viewer.emitEvent({ type: "databasechunk", data, file: model.file, model });
|
|
77
78
|
} else {
|
|
@@ -43,6 +43,8 @@ export class VSFFileLoader extends Loader {
|
|
|
43
43
|
override async load(file: any, format?: string, params?: LoadParams): Promise<this> {
|
|
44
44
|
if (!this.viewer.visualizeJs) return this;
|
|
45
45
|
|
|
46
|
+
const visViewer = this.viewer.visViewer();
|
|
47
|
+
|
|
46
48
|
const progress = (event: ProgressEvent) => {
|
|
47
49
|
const { lengthComputable, loaded, total } = event;
|
|
48
50
|
const progress = lengthComputable ? loaded / total : 1;
|
|
@@ -54,18 +56,21 @@ export class VSFFileLoader extends Loader {
|
|
|
54
56
|
loader.setWithCredentials(params.withCredentials);
|
|
55
57
|
loader.setAbortSignal(this.abortController.signal);
|
|
56
58
|
|
|
57
|
-
const
|
|
58
|
-
const data = new Uint8Array(
|
|
59
|
+
const arrayBuffer = await loader.load(file, progress);
|
|
60
|
+
const data = new Uint8Array(arrayBuffer);
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
const visViewer = visLib.getViewer();
|
|
62
|
+
if (!this.viewer.visualizeJs) return this;
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
try {
|
|
65
|
+
visViewer.parseFile(data);
|
|
66
|
+
} catch (error: any) {
|
|
67
|
+
console.error("VSF parse error.", error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
64
70
|
|
|
65
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
66
71
|
this.viewer.syncOptions();
|
|
67
72
|
this.viewer.syncOverlay();
|
|
68
|
-
this.viewer.
|
|
73
|
+
this.viewer.update(true);
|
|
69
74
|
|
|
70
75
|
this.viewer.emitEvent({ type: "databasechunk", data, file });
|
|
71
76
|
|
|
@@ -45,8 +45,7 @@ export class VSFXCloudLoader extends Loader {
|
|
|
45
45
|
override async load(model: any, format?: string, params: any = {}): Promise<this> {
|
|
46
46
|
if (!this.viewer.visualizeJs) return Promise.resolve(this);
|
|
47
47
|
|
|
48
|
-
const
|
|
49
|
-
const visViewer = visLib.getViewer();
|
|
48
|
+
const visViewer = this.viewer.visViewer();
|
|
50
49
|
|
|
51
50
|
const progress = (progress: number) => {
|
|
52
51
|
this.viewer.emitEvent({ type: "geometryprogress", data: progress, file: model.file, model });
|
|
@@ -55,10 +54,10 @@ export class VSFXCloudLoader extends Loader {
|
|
|
55
54
|
console.time("File load time");
|
|
56
55
|
|
|
57
56
|
const arrayBuffer = await model.downloadResource(model.database, progress, this.abortController.signal);
|
|
58
|
-
if (!this.viewer.visualizeJs) return this;
|
|
59
|
-
|
|
60
57
|
const data = new Uint8Array(arrayBuffer);
|
|
61
58
|
|
|
59
|
+
if (!this.viewer.visualizeJs) return this;
|
|
60
|
+
|
|
62
61
|
try {
|
|
63
62
|
visViewer.parseVsfx(data);
|
|
64
63
|
} catch (error: any) {
|
|
@@ -66,10 +65,9 @@ export class VSFXCloudLoader extends Loader {
|
|
|
66
65
|
throw error;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
70
68
|
this.viewer.syncOptions();
|
|
71
69
|
this.viewer.syncOverlay();
|
|
72
|
-
this.viewer.
|
|
70
|
+
this.viewer.update(true);
|
|
73
71
|
|
|
74
72
|
this.viewer.emitEvent({ type: "databasechunk", data, file: model.file, model });
|
|
75
73
|
|
|
@@ -52,8 +52,7 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
52
52
|
override async load(model: any, format?: string): Promise<this> {
|
|
53
53
|
if (!this.viewer.visualizeJs) return this;
|
|
54
54
|
|
|
55
|
-
const
|
|
56
|
-
const visViewer = visLib.getViewer();
|
|
55
|
+
const visViewer = this.viewer.visViewer();
|
|
57
56
|
let servicePartAborted = false;
|
|
58
57
|
|
|
59
58
|
const pendingRequestsMap = new Map();
|
|
@@ -71,28 +70,24 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
71
70
|
const chunkLoadHandler = (progress: number, chunk: Uint8Array, requestId = 0) => {
|
|
72
71
|
if (!this.viewer.visualizeJs) return;
|
|
73
72
|
|
|
74
|
-
let
|
|
73
|
+
let isDatabaseChunk: boolean;
|
|
75
74
|
try {
|
|
76
|
-
|
|
75
|
+
isDatabaseChunk = visViewer.parseVsfxInPartialMode(requestId, chunk);
|
|
77
76
|
} catch (error: any) {
|
|
78
77
|
console.error("VSFX parse error.", error);
|
|
79
78
|
throw error;
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
updateController.update(UpdateType.kDelay);
|
|
83
|
-
|
|
84
81
|
this.viewer.emitEvent({ type: "geometryprogress", data: progress, file: model.file, model });
|
|
85
82
|
|
|
86
|
-
if (
|
|
87
|
-
updateController.update(UpdateType.kForce);
|
|
88
|
-
|
|
89
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
83
|
+
if (isDatabaseChunk) {
|
|
90
84
|
this.viewer.syncOptions();
|
|
91
85
|
this.viewer.syncOverlay();
|
|
92
|
-
this.viewer.resize();
|
|
93
86
|
|
|
87
|
+
updateController.update(UpdateType.kForce);
|
|
94
88
|
this.viewer.emitEvent({ type: "databasechunk", data: chunk, file: model.file, model });
|
|
95
89
|
} else {
|
|
90
|
+
updateController.update(UpdateType.kDelay);
|
|
96
91
|
this.viewer.emitEvent({ type: "geometrychunk", data: chunk, file: model.file, model });
|
|
97
92
|
}
|
|
98
93
|
};
|
|
@@ -49,7 +49,7 @@ export class VSFXCloudStreamingLoader extends Loader {
|
|
|
49
49
|
if (!this.viewer.visualizeJs) return this;
|
|
50
50
|
|
|
51
51
|
const visLib = this.viewer.visLib();
|
|
52
|
-
const visViewer =
|
|
52
|
+
const visViewer = this.viewer.visViewer();
|
|
53
53
|
|
|
54
54
|
const updateController = new UpdateController();
|
|
55
55
|
updateController.initialize(this.viewer);
|
|
@@ -59,7 +59,7 @@ export class VSFXCloudStreamingLoader extends Loader {
|
|
|
59
59
|
const chunkLoadHandler = (progress: number, chunk: Uint8Array) => {
|
|
60
60
|
if (!this.viewer.visualizeJs) return;
|
|
61
61
|
|
|
62
|
-
let status;
|
|
62
|
+
let status: any;
|
|
63
63
|
try {
|
|
64
64
|
status = visViewer.parseVsfx(chunk);
|
|
65
65
|
} catch (error: any) {
|
|
@@ -67,29 +67,25 @@ export class VSFXCloudStreamingLoader extends Loader {
|
|
|
67
67
|
throw error;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
updateController.update(UpdateType.kDelay);
|
|
71
|
-
|
|
72
70
|
this.viewer.emitEvent({ type: "geometryprogress", data: progress, file: model.file, model });
|
|
73
71
|
|
|
74
|
-
let
|
|
72
|
+
let isDatabaseChunk = false;
|
|
75
73
|
if (
|
|
76
74
|
status === visLib.DatabaseStreamStatus.ReadyServiceData ||
|
|
77
75
|
(status === visLib.DatabaseStreamStatus.Complete && !isFireDatabaseChunk)
|
|
78
76
|
) {
|
|
79
77
|
isFireDatabaseChunk = true;
|
|
80
|
-
|
|
78
|
+
isDatabaseChunk = true;
|
|
81
79
|
}
|
|
82
80
|
|
|
83
|
-
if (
|
|
84
|
-
updateController.update(UpdateType.kForce);
|
|
85
|
-
|
|
86
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
81
|
+
if (isDatabaseChunk) {
|
|
87
82
|
this.viewer.syncOptions();
|
|
88
83
|
this.viewer.syncOverlay();
|
|
89
|
-
this.viewer.resize();
|
|
90
84
|
|
|
85
|
+
updateController.update(UpdateType.kForce);
|
|
91
86
|
this.viewer.emitEvent({ type: "databasechunk", data: chunk, file: model.file, model });
|
|
92
87
|
} else {
|
|
88
|
+
updateController.update(UpdateType.kDelay);
|
|
93
89
|
this.viewer.emitEvent({ type: "geometrychunk", data: chunk, file: model.file, model });
|
|
94
90
|
}
|
|
95
91
|
};
|
|
@@ -43,6 +43,8 @@ export class VSFXFileLoader extends Loader {
|
|
|
43
43
|
override async load(file: any, format?: string, params?: LoadParams): Promise<this> {
|
|
44
44
|
if (!this.viewer.visualizeJs) return this;
|
|
45
45
|
|
|
46
|
+
const visViewer = this.viewer.visViewer();
|
|
47
|
+
|
|
46
48
|
const progress = (event: ProgressEvent) => {
|
|
47
49
|
const { lengthComputable, loaded, total } = event;
|
|
48
50
|
const progress = lengthComputable ? loaded / total : 1;
|
|
@@ -54,18 +56,21 @@ export class VSFXFileLoader extends Loader {
|
|
|
54
56
|
loader.setWithCredentials(params.withCredentials);
|
|
55
57
|
loader.setAbortSignal(this.abortController.signal);
|
|
56
58
|
|
|
57
|
-
const
|
|
58
|
-
const data = new Uint8Array(
|
|
59
|
+
const arrayBuffer = await loader.load(file, progress);
|
|
60
|
+
const data = new Uint8Array(arrayBuffer);
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
const visViewer = visLib.getViewer();
|
|
62
|
+
if (!this.viewer.visualizeJs) return this;
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
try {
|
|
65
|
+
visViewer.parseVsfx(data);
|
|
66
|
+
} catch (error: any) {
|
|
67
|
+
console.error("VSFX parse error.", error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
64
70
|
|
|
65
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
66
71
|
this.viewer.syncOptions();
|
|
67
72
|
this.viewer.syncOverlay();
|
|
68
|
-
this.viewer.
|
|
73
|
+
this.viewer.update(true);
|
|
69
74
|
|
|
70
75
|
this.viewer.emitEvent({ type: "databasechunk", data, file });
|
|
71
76
|
|
|
@@ -81,10 +81,9 @@ import { VSFXCloudPartialLoader } from "./VSFXCloudPartialLoader";
|
|
|
81
81
|
*
|
|
82
82
|
* this.viewer.visualizeJs.getViewer().parseVsfx(data);
|
|
83
83
|
*
|
|
84
|
-
* this.viewer.syncOpenCloudVisualStyle(false);
|
|
85
84
|
* this.viewer.syncOptions();
|
|
86
85
|
* this.viewer.syncOverlay();
|
|
87
|
-
* this.viewer.
|
|
86
|
+
* this.viewer.update();
|
|
88
87
|
*
|
|
89
88
|
* this.viewer.emitEvent({ type: "databasechunk", data, file });
|
|
90
89
|
*
|
|
@@ -108,7 +108,7 @@ export class VisualizeMarkup implements IMarkup {
|
|
|
108
108
|
if (!this._viewer.visualizeJs) return;
|
|
109
109
|
|
|
110
110
|
const visLib = this._viewer.visLib();
|
|
111
|
-
const visViewer =
|
|
111
|
+
const visViewer = this._viewer.visViewer();
|
|
112
112
|
const activeView = visViewer.activeView;
|
|
113
113
|
|
|
114
114
|
this._viewer.syncOverlay();
|
|
@@ -165,7 +165,7 @@ export class VisualizeMarkup implements IMarkup {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
const visLib = this._viewer.visLib();
|
|
168
|
-
const visViewer =
|
|
168
|
+
const visViewer = this._viewer.visViewer();
|
|
169
169
|
|
|
170
170
|
if (!viewpoint) viewpoint = {};
|
|
171
171
|
|