@ifc-lite/bcf 5.0.0 → 5.1.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.
- package/dist/reader-components.d.ts.map +1 -1
- package/dist/reader-components.js +5 -2
- package/dist/reader-components.js.map +1 -1
- package/dist/section-plane-conversion.d.ts +21 -0
- package/dist/section-plane-conversion.d.ts.map +1 -0
- package/dist/section-plane-conversion.js +101 -0
- package/dist/section-plane-conversion.js.map +1 -0
- package/dist/viewpoint.d.ts +17 -17
- package/dist/viewpoint.d.ts.map +1 -1
- package/dist/viewpoint.js +16 -104
- package/dist/viewpoint.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-components.d.ts","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAGV,aAAa,EAGd,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"reader-components.d.ts","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAGV,aAAa,EAGd,MAAM,YAAY,CAAC;AAgCpB;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,KAAK,GAAG,KAAK,GACvB,aAAa,GAAG,SAAS,CA+C3B"}
|
|
@@ -18,7 +18,8 @@ import { extractElement, parseXsBoolean, unescapeXml } from './xml-text.js';
|
|
|
18
18
|
* That is why every fixture passed. Uniform lists are the only shape the suite
|
|
19
19
|
* had, and they are the one shape the defect cannot reach.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
// Match the singular name: BCF 3.0 wraps coloring members in <Components>.
|
|
22
|
+
const COMPONENT_ELEMENT = /<Component\b[^>]*?\/>|<Component\b[^>]*>[\s\S]*?<\/Component>/g;
|
|
22
23
|
/** Parse each `<Component>` in `xml`, dropping any that does not parse. */
|
|
23
24
|
function parseComponentElements(xml) {
|
|
24
25
|
const components = [];
|
|
@@ -33,7 +34,9 @@ function parseComponentElements(xml) {
|
|
|
33
34
|
* Parse components (selection/visibility/coloring)
|
|
34
35
|
*/
|
|
35
36
|
export function parseComponents(content, versionId) {
|
|
36
|
-
|
|
37
|
+
// A viewpoint has one outer Components block. Its BCF 3.0 coloring groups
|
|
38
|
+
// contain nested Components blocks, so use the last closer, not the first.
|
|
39
|
+
const componentsMatch = content.match(/<Components>([\s\S]*)<\/Components>/);
|
|
37
40
|
if (!componentsMatch)
|
|
38
41
|
return undefined;
|
|
39
42
|
const componentsContent = componentsMatch[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-components.js","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkB/D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"reader-components.js","sourceRoot":"","sources":["../src/reader-components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewer section plane <-> BCF clipping plane (one plane at a time; `viewpoint.ts` maps a viewpoint's list).
|
|
3
|
+
* Split out of `viewpoint.ts` to keep that module within its size budget.
|
|
4
|
+
*/
|
|
5
|
+
import type { BCFClippingPlane } from './types.js';
|
|
6
|
+
import { type ViewerBounds, type ViewerSectionPlane } from './viewpoint.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert viewer section plane to BCF clipping plane
|
|
9
|
+
*
|
|
10
|
+
* ifc-lite uses percentage position (0-100) along an axis.
|
|
11
|
+
* BCF uses absolute location and direction in world coordinates (Z-up).
|
|
12
|
+
*/
|
|
13
|
+
export declare function sectionPlaneToClippingPlane(sectionPlane: ViewerSectionPlane, bounds: ViewerBounds): BCFClippingPlane | null;
|
|
14
|
+
/**
|
|
15
|
+
* Convert BCF clipping plane to viewer section plane
|
|
16
|
+
*
|
|
17
|
+
* Determines the closest axis and calculates percentage position.
|
|
18
|
+
* Converts from BCF coordinates (Z-up) to viewer coordinates (Y-up).
|
|
19
|
+
*/
|
|
20
|
+
export declare function clippingPlaneToSectionPlane(plane: BCFClippingPlane, bounds: ViewerBounds): ViewerSectionPlane;
|
|
21
|
+
//# sourceMappingURL=section-plane-conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-plane-conversion.d.ts","sourceRoot":"","sources":["../src/section-plane-conversion.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAsD,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMhI;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,YAAY,GACnB,gBAAgB,GAAG,IAAI,CA6CzB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,YAAY,GACnB,kBAAkB,CA2CpB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { bcfToViewerCoords, viewerToBcfCoords } from './viewpoint.js';
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Section Plane Conversion
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Convert viewer section plane to BCF clipping plane
|
|
10
|
+
*
|
|
11
|
+
* ifc-lite uses percentage position (0-100) along an axis.
|
|
12
|
+
* BCF uses absolute location and direction in world coordinates (Z-up).
|
|
13
|
+
*/
|
|
14
|
+
export function sectionPlaneToClippingPlane(sectionPlane, bounds) {
|
|
15
|
+
if (!sectionPlane.enabled) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
// Calculate absolute position from percentage (in viewer coordinates)
|
|
19
|
+
const t = sectionPlane.position / 100;
|
|
20
|
+
let viewerLocation;
|
|
21
|
+
let viewerDirection;
|
|
22
|
+
switch (sectionPlane.axis) {
|
|
23
|
+
case 'down': // Y axis (viewer up/down)
|
|
24
|
+
viewerLocation = {
|
|
25
|
+
x: (bounds.min.x + bounds.max.x) / 2,
|
|
26
|
+
y: bounds.min.y + t * (bounds.max.y - bounds.min.y),
|
|
27
|
+
z: (bounds.min.z + bounds.max.z) / 2,
|
|
28
|
+
};
|
|
29
|
+
viewerDirection = sectionPlane.flipped ? { x: 0, y: 1, z: 0 } : { x: 0, y: -1, z: 0 };
|
|
30
|
+
break;
|
|
31
|
+
case 'front': // Z axis (viewer depth)
|
|
32
|
+
viewerLocation = {
|
|
33
|
+
x: (bounds.min.x + bounds.max.x) / 2,
|
|
34
|
+
y: (bounds.min.y + bounds.max.y) / 2,
|
|
35
|
+
z: bounds.min.z + t * (bounds.max.z - bounds.min.z),
|
|
36
|
+
};
|
|
37
|
+
viewerDirection = sectionPlane.flipped ? { x: 0, y: 0, z: 1 } : { x: 0, y: 0, z: -1 };
|
|
38
|
+
break;
|
|
39
|
+
case 'side': // X axis
|
|
40
|
+
viewerLocation = {
|
|
41
|
+
x: bounds.min.x + t * (bounds.max.x - bounds.min.x),
|
|
42
|
+
y: (bounds.min.y + bounds.max.y) / 2,
|
|
43
|
+
z: (bounds.min.z + bounds.max.z) / 2,
|
|
44
|
+
};
|
|
45
|
+
viewerDirection = sectionPlane.flipped ? { x: 1, y: 0, z: 0 } : { x: -1, y: 0, z: 0 };
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
// Convert to BCF coordinates (Z-up)
|
|
49
|
+
return {
|
|
50
|
+
location: viewerToBcfCoords(viewerLocation),
|
|
51
|
+
direction: viewerToBcfCoords(viewerDirection),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert BCF clipping plane to viewer section plane
|
|
56
|
+
*
|
|
57
|
+
* Determines the closest axis and calculates percentage position.
|
|
58
|
+
* Converts from BCF coordinates (Z-up) to viewer coordinates (Y-up).
|
|
59
|
+
*/
|
|
60
|
+
export function clippingPlaneToSectionPlane(plane, bounds) {
|
|
61
|
+
// Convert from BCF coordinates to viewer coordinates
|
|
62
|
+
const viewerLocation = bcfToViewerCoords(plane.location);
|
|
63
|
+
const viewerDirection = bcfToViewerCoords(plane.direction);
|
|
64
|
+
// Determine primary axis based on direction (in viewer coordinates)
|
|
65
|
+
const absX = Math.abs(viewerDirection.x);
|
|
66
|
+
const absY = Math.abs(viewerDirection.y);
|
|
67
|
+
const absZ = Math.abs(viewerDirection.z);
|
|
68
|
+
let axis;
|
|
69
|
+
let position;
|
|
70
|
+
let flipped;
|
|
71
|
+
if (absY >= absX && absY >= absZ) {
|
|
72
|
+
// Y axis dominant (down) in viewer
|
|
73
|
+
axis = 'down';
|
|
74
|
+
const range = bounds.max.y - bounds.min.y;
|
|
75
|
+
position = range > 0 ? ((viewerLocation.y - bounds.min.y) / range) * 100 : 50;
|
|
76
|
+
flipped = viewerDirection.y > 0;
|
|
77
|
+
}
|
|
78
|
+
else if (absZ >= absX) {
|
|
79
|
+
// Z axis dominant (front) in viewer
|
|
80
|
+
axis = 'front';
|
|
81
|
+
const range = bounds.max.z - bounds.min.z;
|
|
82
|
+
position = range > 0 ? ((viewerLocation.z - bounds.min.z) / range) * 100 : 50;
|
|
83
|
+
flipped = viewerDirection.z > 0;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// X axis dominant (side)
|
|
87
|
+
axis = 'side';
|
|
88
|
+
const range = bounds.max.x - bounds.min.x;
|
|
89
|
+
position = range > 0 ? ((viewerLocation.x - bounds.min.x) / range) * 100 : 50;
|
|
90
|
+
flipped = viewerDirection.x > 0;
|
|
91
|
+
}
|
|
92
|
+
// Clamp position to valid range
|
|
93
|
+
position = Math.max(0, Math.min(100, position));
|
|
94
|
+
return {
|
|
95
|
+
axis,
|
|
96
|
+
position,
|
|
97
|
+
enabled: true,
|
|
98
|
+
flipped,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=section-plane-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-plane-conversion.js","sourceRoot":"","sources":["../src/section-plane-conversion.ts"],"names":[],"mappings":"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"}
|
package/dist/viewpoint.d.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Converts between viewer camera state and BCF viewpoint format.
|
|
5
5
|
* Handles coordinate system transformations and camera parameter mapping.
|
|
6
6
|
*/
|
|
7
|
-
import type { BCFViewpoint, BCFPerspectiveCamera, BCFOrthogonalCamera
|
|
7
|
+
import type { BCFViewpoint, BCFPerspectiveCamera, BCFOrthogonalCamera } from './types.js';
|
|
8
|
+
import { sectionPlaneToClippingPlane, clippingPlaneToSectionPlane } from './section-plane-conversion.js';
|
|
9
|
+
export { sectionPlaneToClippingPlane, clippingPlaneToSectionPlane };
|
|
8
10
|
export interface ViewerCameraState {
|
|
9
11
|
/** Camera position in world coordinates */
|
|
10
12
|
position: {
|
|
@@ -79,11 +81,15 @@ export interface ViewerBounds {
|
|
|
79
81
|
* BCF.y = -Viewer.z (viewer Z towards viewer = negative BCF Y forward)
|
|
80
82
|
* BCF.z = Viewer.y (viewer Y up = BCF Z up)
|
|
81
83
|
*/
|
|
82
|
-
type Point3D = {
|
|
84
|
+
export type Point3D = {
|
|
83
85
|
x: number;
|
|
84
86
|
y: number;
|
|
85
87
|
z: number;
|
|
86
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Convert from viewer coordinates (Y-up) to BCF coordinates (Z-up)
|
|
91
|
+
*/
|
|
92
|
+
export declare function viewerToBcfCoords(p: Point3D): Point3D;
|
|
87
93
|
/**
|
|
88
94
|
* Convert from BCF coordinates (Z-up) to viewer coordinates (Y-up)
|
|
89
95
|
*/
|
|
@@ -121,20 +127,6 @@ export declare function perspectiveToCamera(camera: BCFPerspectiveCamera, target
|
|
|
121
127
|
* Also converts from BCF's Z-up to viewer's Y-up coordinate system.
|
|
122
128
|
*/
|
|
123
129
|
export declare function orthogonalToCamera(camera: BCFOrthogonalCamera, targetDistance?: number): ViewerCameraState;
|
|
124
|
-
/**
|
|
125
|
-
* Convert viewer section plane to BCF clipping plane
|
|
126
|
-
*
|
|
127
|
-
* ifc-lite uses percentage position (0-100) along an axis.
|
|
128
|
-
* BCF uses absolute location and direction in world coordinates (Z-up).
|
|
129
|
-
*/
|
|
130
|
-
export declare function sectionPlaneToClippingPlane(sectionPlane: ViewerSectionPlane, bounds: ViewerBounds): BCFClippingPlane | null;
|
|
131
|
-
/**
|
|
132
|
-
* Convert BCF clipping plane to viewer section plane
|
|
133
|
-
*
|
|
134
|
-
* Determines the closest axis and calculates percentage position.
|
|
135
|
-
* Converts from BCF coordinates (Z-up) to viewer coordinates (Y-up).
|
|
136
|
-
*/
|
|
137
|
-
export declare function clippingPlaneToSectionPlane(plane: BCFClippingPlane, bounds: ViewerBounds): ViewerSectionPlane;
|
|
138
130
|
/**
|
|
139
131
|
* Create a BCF viewpoint from viewer state
|
|
140
132
|
*
|
|
@@ -145,6 +137,12 @@ export declare function clippingPlaneToSectionPlane(plane: BCFClippingPlane, bou
|
|
|
145
137
|
export declare function createViewpoint(options: {
|
|
146
138
|
camera: ViewerCameraState;
|
|
147
139
|
sectionPlane?: ViewerSectionPlane;
|
|
140
|
+
/**
|
|
141
|
+
* Every cutting plane that is on, as the viewer clips with them (several planes keep only what ALL
|
|
142
|
+
* of them keep). Each enabled one becomes an entry of `clippingPlanes`, in this order. When given
|
|
143
|
+
* it takes the place of `sectionPlane`.
|
|
144
|
+
*/
|
|
145
|
+
sectionPlanes?: ViewerSectionPlane[];
|
|
148
146
|
bounds?: ViewerBounds;
|
|
149
147
|
snapshot?: string;
|
|
150
148
|
snapshotData?: Uint8Array;
|
|
@@ -161,7 +159,10 @@ export declare function createViewpoint(options: {
|
|
|
161
159
|
*/
|
|
162
160
|
export declare function extractViewpointState(viewpoint: BCFViewpoint, bounds?: ViewerBounds, targetDistance?: number): {
|
|
163
161
|
camera?: ViewerCameraState;
|
|
162
|
+
/** The first clipping plane (what a single-plane reader wants). */
|
|
164
163
|
sectionPlane?: ViewerSectionPlane;
|
|
164
|
+
/** Every clipping plane of the viewpoint, in order; a viewpoint with none has none. */
|
|
165
|
+
sectionPlanes?: ViewerSectionPlane[];
|
|
165
166
|
selectedGuids: string[];
|
|
166
167
|
hiddenGuids: string[];
|
|
167
168
|
visibleGuids: string[] | null;
|
|
@@ -170,5 +171,4 @@ export declare function extractViewpointState(viewpoint: BCFViewpoint, bounds?:
|
|
|
170
171
|
guids: string[];
|
|
171
172
|
}[];
|
|
172
173
|
};
|
|
173
|
-
export {};
|
|
174
174
|
//# sourceMappingURL=viewpoint.d.ts.map
|
package/dist/viewpoint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewpoint.d.ts","sourceRoot":"","sources":["../src/viewpoint.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"viewpoint.d.ts","sourceRoot":"","sources":["../src/viewpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/viewpoint.js
CHANGED
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { generateUuid } from '@ifc-lite/encoding';
|
|
5
5
|
import { usableTargetDistance } from './numeric.js';
|
|
6
|
+
import { sectionPlaneToClippingPlane, clippingPlaneToSectionPlane } from './section-plane-conversion.js';
|
|
7
|
+
// The one-plane conversion lives beside this file; the public path stays `viewpoint.js`.
|
|
8
|
+
export { sectionPlaneToClippingPlane, clippingPlaneToSectionPlane };
|
|
6
9
|
/**
|
|
7
10
|
* Convert from viewer coordinates (Y-up) to BCF coordinates (Z-up)
|
|
8
11
|
*/
|
|
9
|
-
function viewerToBcfCoords(p) {
|
|
12
|
+
export function viewerToBcfCoords(p) {
|
|
10
13
|
return {
|
|
11
14
|
x: p.x,
|
|
12
15
|
y: -p.z,
|
|
@@ -174,102 +177,6 @@ export function orthogonalToCamera(camera, targetDistance = 10) {
|
|
|
174
177
|
};
|
|
175
178
|
}
|
|
176
179
|
// ============================================================================
|
|
177
|
-
// Section Plane Conversion
|
|
178
|
-
// ============================================================================
|
|
179
|
-
/**
|
|
180
|
-
* Convert viewer section plane to BCF clipping plane
|
|
181
|
-
*
|
|
182
|
-
* ifc-lite uses percentage position (0-100) along an axis.
|
|
183
|
-
* BCF uses absolute location and direction in world coordinates (Z-up).
|
|
184
|
-
*/
|
|
185
|
-
export function sectionPlaneToClippingPlane(sectionPlane, bounds) {
|
|
186
|
-
if (!sectionPlane.enabled) {
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
// Calculate absolute position from percentage (in viewer coordinates)
|
|
190
|
-
const t = sectionPlane.position / 100;
|
|
191
|
-
let viewerLocation;
|
|
192
|
-
let viewerDirection;
|
|
193
|
-
switch (sectionPlane.axis) {
|
|
194
|
-
case 'down': // Y axis (viewer up/down)
|
|
195
|
-
viewerLocation = {
|
|
196
|
-
x: (bounds.min.x + bounds.max.x) / 2,
|
|
197
|
-
y: bounds.min.y + t * (bounds.max.y - bounds.min.y),
|
|
198
|
-
z: (bounds.min.z + bounds.max.z) / 2,
|
|
199
|
-
};
|
|
200
|
-
viewerDirection = sectionPlane.flipped ? { x: 0, y: 1, z: 0 } : { x: 0, y: -1, z: 0 };
|
|
201
|
-
break;
|
|
202
|
-
case 'front': // Z axis (viewer depth)
|
|
203
|
-
viewerLocation = {
|
|
204
|
-
x: (bounds.min.x + bounds.max.x) / 2,
|
|
205
|
-
y: (bounds.min.y + bounds.max.y) / 2,
|
|
206
|
-
z: bounds.min.z + t * (bounds.max.z - bounds.min.z),
|
|
207
|
-
};
|
|
208
|
-
viewerDirection = sectionPlane.flipped ? { x: 0, y: 0, z: 1 } : { x: 0, y: 0, z: -1 };
|
|
209
|
-
break;
|
|
210
|
-
case 'side': // X axis
|
|
211
|
-
viewerLocation = {
|
|
212
|
-
x: bounds.min.x + t * (bounds.max.x - bounds.min.x),
|
|
213
|
-
y: (bounds.min.y + bounds.max.y) / 2,
|
|
214
|
-
z: (bounds.min.z + bounds.max.z) / 2,
|
|
215
|
-
};
|
|
216
|
-
viewerDirection = sectionPlane.flipped ? { x: 1, y: 0, z: 0 } : { x: -1, y: 0, z: 0 };
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
// Convert to BCF coordinates (Z-up)
|
|
220
|
-
return {
|
|
221
|
-
location: viewerToBcfCoords(viewerLocation),
|
|
222
|
-
direction: viewerToBcfCoords(viewerDirection),
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Convert BCF clipping plane to viewer section plane
|
|
227
|
-
*
|
|
228
|
-
* Determines the closest axis and calculates percentage position.
|
|
229
|
-
* Converts from BCF coordinates (Z-up) to viewer coordinates (Y-up).
|
|
230
|
-
*/
|
|
231
|
-
export function clippingPlaneToSectionPlane(plane, bounds) {
|
|
232
|
-
// Convert from BCF coordinates to viewer coordinates
|
|
233
|
-
const viewerLocation = bcfToViewerCoords(plane.location);
|
|
234
|
-
const viewerDirection = bcfToViewerCoords(plane.direction);
|
|
235
|
-
// Determine primary axis based on direction (in viewer coordinates)
|
|
236
|
-
const absX = Math.abs(viewerDirection.x);
|
|
237
|
-
const absY = Math.abs(viewerDirection.y);
|
|
238
|
-
const absZ = Math.abs(viewerDirection.z);
|
|
239
|
-
let axis;
|
|
240
|
-
let position;
|
|
241
|
-
let flipped;
|
|
242
|
-
if (absY >= absX && absY >= absZ) {
|
|
243
|
-
// Y axis dominant (down) in viewer
|
|
244
|
-
axis = 'down';
|
|
245
|
-
const range = bounds.max.y - bounds.min.y;
|
|
246
|
-
position = range > 0 ? ((viewerLocation.y - bounds.min.y) / range) * 100 : 50;
|
|
247
|
-
flipped = viewerDirection.y > 0;
|
|
248
|
-
}
|
|
249
|
-
else if (absZ >= absX) {
|
|
250
|
-
// Z axis dominant (front) in viewer
|
|
251
|
-
axis = 'front';
|
|
252
|
-
const range = bounds.max.z - bounds.min.z;
|
|
253
|
-
position = range > 0 ? ((viewerLocation.z - bounds.min.z) / range) * 100 : 50;
|
|
254
|
-
flipped = viewerDirection.z > 0;
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
// X axis dominant (side)
|
|
258
|
-
axis = 'side';
|
|
259
|
-
const range = bounds.max.x - bounds.min.x;
|
|
260
|
-
position = range > 0 ? ((viewerLocation.x - bounds.min.x) / range) * 100 : 50;
|
|
261
|
-
flipped = viewerDirection.x > 0;
|
|
262
|
-
}
|
|
263
|
-
// Clamp position to valid range
|
|
264
|
-
position = Math.max(0, Math.min(100, position));
|
|
265
|
-
return {
|
|
266
|
-
axis,
|
|
267
|
-
position,
|
|
268
|
-
enabled: true,
|
|
269
|
-
flipped,
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
// ============================================================================
|
|
273
180
|
// Viewpoint Factory
|
|
274
181
|
// ============================================================================
|
|
275
182
|
/**
|
|
@@ -280,7 +187,7 @@ export function clippingPlaneToSectionPlane(plane, bounds) {
|
|
|
280
187
|
* - Use `visibleGuids` when most entities are hidden/isolated (defaultVisibility=false, exceptions=visible)
|
|
281
188
|
*/
|
|
282
189
|
export function createViewpoint(options) {
|
|
283
|
-
const { camera, sectionPlane, bounds, snapshot, snapshotData, selectedGuids, hiddenGuids, visibleGuids, coloredGuids, } = options;
|
|
190
|
+
const { camera, sectionPlane, sectionPlanes, bounds, snapshot, snapshotData, selectedGuids, hiddenGuids, visibleGuids, coloredGuids, } = options;
|
|
284
191
|
const viewpoint = {
|
|
285
192
|
guid: generateUuid(),
|
|
286
193
|
};
|
|
@@ -291,11 +198,13 @@ export function createViewpoint(options) {
|
|
|
291
198
|
else {
|
|
292
199
|
viewpoint.perspectiveCamera = cameraToPerspective(camera);
|
|
293
200
|
}
|
|
294
|
-
// Add clipping plane
|
|
295
|
-
if (
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
201
|
+
// Add clipping planes: one entry per enabled plane
|
|
202
|
+
if (bounds) {
|
|
203
|
+
const clippingPlanes = (sectionPlanes ?? (sectionPlane ? [sectionPlane] : []))
|
|
204
|
+
.map((plane) => sectionPlaneToClippingPlane(plane, bounds))
|
|
205
|
+
.filter((plane) => plane !== null);
|
|
206
|
+
if (clippingPlanes.length > 0) {
|
|
207
|
+
viewpoint.clippingPlanes = clippingPlanes;
|
|
299
208
|
}
|
|
300
209
|
}
|
|
301
210
|
// Add snapshot
|
|
@@ -362,6 +271,7 @@ export function createViewpoint(options) {
|
|
|
362
271
|
export function extractViewpointState(viewpoint, bounds, targetDistance = 10) {
|
|
363
272
|
let camera;
|
|
364
273
|
let sectionPlane;
|
|
274
|
+
let sectionPlanes;
|
|
365
275
|
// Extract camera
|
|
366
276
|
if (viewpoint.perspectiveCamera) {
|
|
367
277
|
camera = perspectiveToCamera(viewpoint.perspectiveCamera, targetDistance);
|
|
@@ -371,7 +281,8 @@ export function extractViewpointState(viewpoint, bounds, targetDistance = 10) {
|
|
|
371
281
|
}
|
|
372
282
|
// Extract section plane
|
|
373
283
|
if (viewpoint.clippingPlanes && viewpoint.clippingPlanes.length > 0 && bounds) {
|
|
374
|
-
|
|
284
|
+
sectionPlanes = viewpoint.clippingPlanes.map((plane) => clippingPlaneToSectionPlane(plane, bounds));
|
|
285
|
+
sectionPlane = sectionPlanes[0];
|
|
375
286
|
}
|
|
376
287
|
// Extract selected GUIDs
|
|
377
288
|
const selectedGuids = [];
|
|
@@ -427,6 +338,7 @@ export function extractViewpointState(viewpoint, bounds, targetDistance = 10) {
|
|
|
427
338
|
return {
|
|
428
339
|
camera,
|
|
429
340
|
sectionPlane,
|
|
341
|
+
sectionPlanes,
|
|
430
342
|
selectedGuids,
|
|
431
343
|
hiddenGuids,
|
|
432
344
|
visibleGuids,
|
package/dist/viewpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewpoint.js","sourceRoot":"","sources":["../src/viewpoint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewpoint.js","sourceRoot":"","sources":["../src/viewpoint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/bcf",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "BIM Collaboration Format (BCF) support for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"fflate": "^0.8.3",
|
|
17
17
|
"jszip": "^3.10.2",
|
|
18
|
-
"@ifc-lite/encoding": "^2.
|
|
18
|
+
"@ifc-lite/encoding": "^2.4.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"happy-dom": "^
|
|
21
|
+
"happy-dom": "^21.0.3",
|
|
22
22
|
"typescript": "^6.0.3",
|
|
23
|
-
"vitest": "^5.0.
|
|
23
|
+
"vitest": "^5.0.3",
|
|
24
24
|
"xmllint-wasm": "5.3.0"
|
|
25
25
|
},
|
|
26
26
|
"license": "MPL-2.0",
|