@xtctwins/tctwins-core 1.0.28 → 1.0.29

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.
@@ -9131,229 +9131,231 @@ class MarqueePickerMouseControl extends Component {
9131
9131
  @desc Base class for {@link Viewer} plugin classes.
9132
9132
  */
9133
9133
  class Plugin {
9134
+ /**
9135
+ * Creates this Plugin and installs it into the given {@link Viewer}.
9136
+ *
9137
+ * @param {string} id ID for this plugin, unique among all plugins in the viewer.
9138
+ * @param {Viewer} viewer The viewer.
9139
+ * @param {Object} [cfg] Options
9140
+ */
9141
+ constructor(id, viewer, cfg) {
9142
+ /**
9143
+ * ID for this Plugin, unique within its {@link Viewer}.
9144
+ *
9145
+ * @type {string}
9146
+ */
9147
+ this.id = cfg && cfg.id ? cfg.id : id;
9134
9148
 
9135
- /**
9136
- * Creates this Plugin and installs it into the given {@link Viewer}.
9137
- *
9138
- * @param {string} id ID for this plugin, unique among all plugins in the viewer.
9139
- * @param {Viewer} viewer The viewer.
9140
- * @param {Object} [cfg] Options
9141
- */
9142
- constructor(id, viewer, cfg) {
9143
-
9144
- /**
9145
- * ID for this Plugin, unique within its {@link Viewer}.
9146
- *
9147
- * @type {string}
9148
- */
9149
- this.id = (cfg && cfg.id) ? cfg.id : id;
9150
-
9151
- /**
9152
- * The Viewer that contains this Plugin.
9153
- *
9154
- * @type {Viewer}
9155
- */
9156
- this.viewer = viewer;
9149
+ /**
9150
+ * The Viewer that contains this Plugin.
9151
+ *
9152
+ * @type {Viewer}
9153
+ */
9154
+ this.viewer = viewer;
9157
9155
 
9158
- this._subIdMap = null; // Subscription subId pool
9159
- this._subIdEvents = null; // Subscription subIds mapped to event names
9160
- this._eventSubs = null; // Event names mapped to subscribers
9161
- this._eventSubsNum = null;
9162
- this._events = null; // Maps names to events
9163
- this._eventCallDepth = 0; // Helps us catch stack overflows from recursive events
9156
+ this._subIdMap = null; // Subscription subId pool
9157
+ this._subIdEvents = null; // Subscription subIds mapped to event names
9158
+ this._eventSubs = null; // Event names mapped to subscribers
9159
+ this._eventSubsNum = null;
9160
+ this._events = null; // Maps names to events
9161
+ this._eventCallDepth = 0; // Helps us catch stack overflows from recursive events
9164
9162
 
9165
- viewer.addPlugin(this);
9166
- }
9163
+ viewer.addPlugin(this);
9164
+ }
9167
9165
 
9168
- /**
9169
- * Schedule a task to perform on the next browser interval
9170
- * @param task
9171
- */
9172
- scheduleTask(task) {
9173
- core.scheduleTask(task, null);
9174
- }
9166
+ /**
9167
+ * Schedule a task to perform on the next browser interval
9168
+ * @param task
9169
+ */
9170
+ scheduleTask(task) {
9171
+ core.scheduleTask(task, null);
9172
+ }
9175
9173
 
9176
- /**
9177
- * Fires an event on this Plugin.
9178
- *
9179
- * Notifies existing subscribers to the event, optionally retains the event to give to
9180
- * any subsequent notifications on the event as they are made.
9181
- *
9182
- * @param {String} event The event type name
9183
- * @param {Object} value The event parameters
9184
- * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers
9185
- */
9186
- fire(event, value, forget) {
9187
- if (!this._events) {
9188
- this._events = {};
9189
- }
9190
- if (!this._eventSubs) {
9191
- this._eventSubs = {};
9192
- this._eventSubsNum = {};
9193
- }
9194
- if (forget !== true) {
9195
- this._events[event] = value || true; // Save notification
9196
- }
9197
- const subs = this._eventSubs[event];
9198
- let sub;
9199
- if (subs) { // Notify subscriptions
9200
- for (const subId in subs) {
9201
- if (subs.hasOwnProperty(subId)) {
9202
- sub = subs[subId];
9203
- this._eventCallDepth++;
9204
- if (this._eventCallDepth < 300) {
9205
- sub.callback.call(sub.scope, value);
9206
- } else {
9207
- this.error("fire: potential stack overflow from recursive event '" + event + "' - dropping this event");
9208
- }
9209
- this._eventCallDepth--;
9210
- }
9211
- }
9212
- }
9213
- }
9174
+ /**
9175
+ * Fires an event on this Plugin.
9176
+ *
9177
+ * Notifies existing subscribers to the event, optionally retains the event to give to
9178
+ * any subsequent notifications on the event as they are made.
9179
+ *
9180
+ * @param {String} event The event type name
9181
+ * @param {Object} value The event parameters
9182
+ * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers
9183
+ */
9184
+ fire(event, value, forget) {
9185
+ if (!this._events) {
9186
+ this._events = {};
9187
+ }
9188
+ if (!this._eventSubs) {
9189
+ this._eventSubs = {};
9190
+ this._eventSubsNum = {};
9191
+ }
9192
+ if (forget !== true) {
9193
+ this._events[event] = value || true; // Save notification
9194
+ }
9195
+ const subs = this._eventSubs[event];
9196
+ let sub;
9197
+ if (subs) {
9198
+ // Notify subscriptions
9199
+ for (const subId in subs) {
9200
+ if (subs.hasOwnProperty(subId)) {
9201
+ sub = subs[subId];
9202
+ this._eventCallDepth++;
9203
+ if (this._eventCallDepth < 300) {
9204
+ sub.callback.call(sub.scope, value);
9205
+ } else {
9206
+ this.error("fire: potential stack overflow from recursive event '" + event + "' - dropping this event");
9207
+ }
9208
+ this._eventCallDepth--;
9209
+ }
9210
+ }
9211
+ }
9212
+ }
9214
9213
 
9215
- /**
9216
- * Subscribes to an event on this Plugin.
9217
- *
9218
- * The callback is be called with this Plugin as scope.
9219
- *
9220
- * @param {String} event The event
9221
- * @param {Function} callback Called fired on the event
9222
- * @param {Object} [scope=this] Scope for the callback
9223
- * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.
9224
- */
9225
- on(event, callback, scope) {
9226
- if (!this._events) {
9227
- this._events = {};
9228
- }
9229
- if (!this._subIdMap) {
9230
- this._subIdMap = new Map$1(); // Subscription subId pool
9231
- }
9232
- if (!this._subIdEvents) {
9233
- this._subIdEvents = {};
9234
- }
9235
- if (!this._eventSubs) {
9236
- this._eventSubs = {};
9237
- }
9238
- if (!this._eventSubsNum) {
9239
- this._eventSubsNum = {};
9240
- }
9241
- let subs = this._eventSubs[event];
9242
- if (!subs) {
9243
- subs = {};
9244
- this._eventSubs[event] = subs;
9245
- this._eventSubsNum[event] = 1;
9246
- } else {
9247
- this._eventSubsNum[event]++;
9248
- }
9249
- const subId = this._subIdMap.addItem(); // Create unique subId
9250
- subs[subId] = {
9251
- callback: callback,
9252
- scope: scope || this
9253
- };
9254
- this._subIdEvents[subId] = event;
9255
- const value = this._events[event];
9256
- if (value !== undefined) { // A publication exists, notify callback immediately
9257
- callback.call(scope || this, value);
9258
- }
9259
- return subId;
9260
- }
9214
+ /**
9215
+ * Subscribes to an event on this Plugin.
9216
+ *
9217
+ * The callback is be called with this Plugin as scope.
9218
+ *
9219
+ * @param {String} event The event
9220
+ * @param {Function} callback Called fired on the event
9221
+ * @param {Object} [scope=this] Scope for the callback
9222
+ * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.
9223
+ */
9224
+ on(event, callback, scope) {
9225
+ if (!this._events) {
9226
+ this._events = {};
9227
+ }
9228
+ if (!this._subIdMap) {
9229
+ this._subIdMap = new Map$1(); // Subscription subId pool
9230
+ }
9231
+ if (!this._subIdEvents) {
9232
+ this._subIdEvents = {};
9233
+ }
9234
+ if (!this._eventSubs) {
9235
+ this._eventSubs = {};
9236
+ }
9237
+ if (!this._eventSubsNum) {
9238
+ this._eventSubsNum = {};
9239
+ }
9240
+ let subs = this._eventSubs[event];
9241
+ if (!subs) {
9242
+ subs = {};
9243
+ this._eventSubs[event] = subs;
9244
+ this._eventSubsNum[event] = 1;
9245
+ } else {
9246
+ this._eventSubsNum[event]++;
9247
+ }
9248
+ const subId = this._subIdMap.addItem(); // Create unique subId
9249
+ subs[subId] = {
9250
+ callback: callback,
9251
+ scope: scope || this
9252
+ };
9253
+ this._subIdEvents[subId] = event;
9254
+ const value = this._events[event];
9255
+ if (value !== undefined) {
9256
+ // A publication exists, notify callback immediately
9257
+ callback.call(scope || this, value);
9258
+ }
9259
+ return subId;
9260
+ }
9261
9261
 
9262
- /**
9263
- * Cancels an event subscription that was previously made with {@link Plugin#on} or {@link Plugin#once}.
9264
- *
9265
- * @param {String} subId Subscription ID
9266
- */
9267
- off(subId) {
9268
- if (subId === undefined || subId === null) {
9269
- return;
9270
- }
9271
- if (!this._subIdEvents) {
9272
- return;
9273
- }
9274
- const event = this._subIdEvents[subId];
9275
- if (event) {
9276
- delete this._subIdEvents[subId];
9277
- const subs = this._eventSubs[event];
9278
- if (subs) {
9279
- delete subs[subId];
9280
- this._eventSubsNum[event]--;
9281
- }
9282
- this._subIdMap.removeItem(subId); // Release subId
9283
- }
9284
- }
9262
+ /**
9263
+ * Cancels an event subscription that was previously made with {@link Plugin#on} or {@link Plugin#once}.
9264
+ *
9265
+ * @param {String} subId Subscription ID
9266
+ */
9267
+ off(subId) {
9268
+ if (subId === undefined || subId === null) {
9269
+ return;
9270
+ }
9271
+ if (!this._subIdEvents) {
9272
+ return;
9273
+ }
9274
+ const event = this._subIdEvents[subId];
9275
+ if (event) {
9276
+ delete this._subIdEvents[subId];
9277
+ const subs = this._eventSubs[event];
9278
+ if (subs) {
9279
+ delete subs[subId];
9280
+ this._eventSubsNum[event]--;
9281
+ }
9282
+ this._subIdMap.removeItem(subId); // Release subId
9283
+ }
9284
+ }
9285
9285
 
9286
- /**
9287
- * Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is subIdd.
9288
- *
9289
- * This is equivalent to calling {@link Plugin#on}, and then calling {@link Plugin#off} inside the callback function.
9290
- *
9291
- * @param {String} event Data event to listen to
9292
- * @param {Function} callback Called when fresh data is available at the event
9293
- * @param {Object} [scope=this] Scope for the callback
9294
- */
9295
- once(event, callback, scope) {
9296
- const self = this;
9297
- const subId = this.on(event,
9298
- function (value) {
9299
- self.off(subId);
9300
- callback.call(scope || this, value);
9301
- },
9302
- scope);
9303
- }
9286
+ /**
9287
+ * Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is subIdd.
9288
+ *
9289
+ * This is equivalent to calling {@link Plugin#on}, and then calling {@link Plugin#off} inside the callback function.
9290
+ *
9291
+ * @param {String} event Data event to listen to
9292
+ * @param {Function} callback Called when fresh data is available at the event
9293
+ * @param {Object} [scope=this] Scope for the callback
9294
+ */
9295
+ once(event, callback, scope) {
9296
+ const self = this;
9297
+ const subId = this.on(
9298
+ event,
9299
+ function (value) {
9300
+ self.off(subId);
9301
+ callback.call(scope || this, value);
9302
+ },
9303
+ scope
9304
+ );
9305
+ }
9304
9306
 
9305
- /**
9306
- * Returns true if there are any subscribers to the given event on this Plugin.
9307
- *
9308
- * @param {String} event The event
9309
- * @return {Boolean} True if there are any subscribers to the given event on this Plugin.
9310
- */
9311
- hasSubs(event) {
9312
- return (this._eventSubsNum && (this._eventSubsNum[event] > 0));
9313
- }
9307
+ /**
9308
+ * Returns true if there are any subscribers to the given event on this Plugin.
9309
+ *
9310
+ * @param {String} event The event
9311
+ * @return {Boolean} True if there are any subscribers to the given event on this Plugin.
9312
+ */
9313
+ hasSubs(event) {
9314
+ return this._eventSubsNum && this._eventSubsNum[event] > 0;
9315
+ }
9314
9316
 
9315
- /**
9316
- * Logs a message to the JavaScript developer console, prefixed with the ID of this Plugin.
9317
- *
9318
- * @param {String} msg The error message
9319
- */
9320
- log(msg) {
9321
- console.log(`[xeokit plugin ${this.id}]: ${msg}`);
9322
- }
9317
+ /**
9318
+ * Logs a message to the JavaScript developer console, prefixed with the ID of this Plugin.
9319
+ *
9320
+ * @param {String} msg The error message
9321
+ */
9322
+ log(msg) {
9323
+ console.log(`[xtctwins plugin ${this.id}]: ${msg}`);
9324
+ }
9323
9325
 
9324
- /**
9325
- * Logs a warning message to the JavaScript developer console, prefixed with the ID of this Plugin.
9326
- *
9327
- * @param {String} msg The error message
9328
- */
9329
- warn(msg) {
9330
- console.warn(`[xeokit plugin ${this.id}]: ${msg}`);
9331
- }
9326
+ /**
9327
+ * Logs a warning message to the JavaScript developer console, prefixed with the ID of this Plugin.
9328
+ *
9329
+ * @param {String} msg The error message
9330
+ */
9331
+ warn(msg) {
9332
+ console.warn(`[xtctwins plugin ${this.id}]: ${msg}`);
9333
+ }
9332
9334
 
9333
- /**
9334
- * Logs an error message to the JavaScript developer console, prefixed with the ID of this Plugin.
9335
- *
9336
- * @param {String} msg The error message
9337
- */
9338
- error(msg) {
9339
- console.error(`[xeokit plugin ${this.id}]: ${msg}`);
9340
- }
9335
+ /**
9336
+ * Logs an error message to the JavaScript developer console, prefixed with the ID of this Plugin.
9337
+ *
9338
+ * @param {String} msg The error message
9339
+ */
9340
+ error(msg) {
9341
+ console.error(`[xtctwins plugin ${this.id}]: ${msg}`);
9342
+ }
9341
9343
 
9342
- /**
9343
- * Sends a message to this Plugin.
9344
- *
9345
- * @private
9346
- */
9347
- send(name, value) {
9348
- //...
9349
- }
9344
+ /**
9345
+ * Sends a message to this Plugin.
9346
+ *
9347
+ * @private
9348
+ */
9349
+ send(name, value) {
9350
+ //...
9351
+ }
9350
9352
 
9351
- /**
9352
- * Destroys this Plugin and removes it from its {@link Viewer}.
9353
- */
9354
- destroy() {
9355
- this.viewer.removePlugin(this);
9356
- }
9353
+ /**
9354
+ * Destroys this Plugin and removes it from its {@link Viewer}.
9355
+ */
9356
+ destroy() {
9357
+ this.viewer.removePlugin(this);
9358
+ }
9357
9359
  }
9358
9360
 
9359
9361
  const tempVec3a$L = math.vec3();
@@ -12485,9 +12487,6 @@ s * @param {function} [cfg.canvasToPagePos] Optional function to map canvas-spa
12485
12487
  return;
12486
12488
  }
12487
12489
 
12488
- // this._destroyMarkerDiv();
12489
- this._initMarkerDiv();
12490
-
12491
12490
  if (this._currentAngleMeasurement) {
12492
12491
  this.angleMeasurementsPlugin.fire("measurementCancel", this._currentAngleMeasurement);
12493
12492
  this._currentAngleMeasurement.destroy();
@@ -23398,701 +23397,699 @@ const offsetEye = math.vec3();
23398
23397
  * See: <a href="https://en.wikipedia.org/wiki/Gimbal_lock">https://en.wikipedia.org/wiki/Gimbal_lock</a>
23399
23398
  */
23400
23399
  class Camera extends Component {
23401
-
23402
- /**
23400
+ /**
23403
23401
  @private
23404
23402
  */
23405
- get type() {
23406
- return "Camera";
23407
- }
23408
-
23409
- /**
23410
- * @constructor
23411
- * @private
23412
- */
23413
- constructor(owner, cfg = {}) {
23403
+ get type() {
23404
+ return "Camera";
23405
+ }
23414
23406
 
23415
- super(owner, cfg);
23407
+ /**
23408
+ * @constructor
23409
+ * @private
23410
+ */
23411
+ constructor(owner, cfg = {}) {
23412
+ super(owner, cfg);
23416
23413
 
23417
- this._state = new RenderState({
23418
- deviceMatrix: math.mat4(),
23419
- hasDeviceMatrix: false, // True when deviceMatrix set to other than identity
23420
- matrix: math.mat4(),
23421
- normalMatrix: math.mat4(),
23422
- inverseMatrix: math.mat4()
23423
- });
23414
+ this._state = new RenderState({
23415
+ deviceMatrix: math.mat4(),
23416
+ hasDeviceMatrix: false, // True when deviceMatrix set to other than identity
23417
+ matrix: math.mat4(),
23418
+ normalMatrix: math.mat4(),
23419
+ inverseMatrix: math.mat4()
23420
+ });
23424
23421
 
23425
- this._perspective = new Perspective(this);
23426
- this._ortho = new Ortho(this);
23427
- this._frustum = new Frustum(this);
23428
- this._customProjection = new CustomProjection(this);
23429
- this._project = this._perspective;
23422
+ this._perspective = new Perspective(this);
23423
+ this._ortho = new Ortho(this);
23424
+ this._frustum = new Frustum(this);
23425
+ this._customProjection = new CustomProjection(this);
23426
+ this._project = this._perspective;
23430
23427
 
23431
- this._eye = math.vec3([0, 0, 10.0]);
23432
- this._look = math.vec3([0, 0, 0]);
23433
- this._up = math.vec3([0, 1, 0]);
23428
+ this._eye = math.vec3([0, 0, 10.0]);
23429
+ this._look = math.vec3([0, 0, 0]);
23430
+ this._up = math.vec3([0, 1, 0]);
23434
23431
 
23435
- this._worldUp = math.vec3([0, 1, 0]);
23436
- this._worldRight = math.vec3([1, 0, 0]);
23437
- this._worldForward = math.vec3([0, 0, -1]);
23432
+ this._worldUp = math.vec3([0, 1, 0]);
23433
+ this._worldRight = math.vec3([1, 0, 0]);
23434
+ this._worldForward = math.vec3([0, 0, -1]);
23438
23435
 
23439
- this.deviceMatrix = cfg.deviceMatrix;
23440
- this.eye = cfg.eye;
23441
- this.look = cfg.look;
23442
- this.up = cfg.up;
23443
- this.worldAxis = cfg.worldAxis;
23444
- this.gimbalLock = cfg.gimbalLock;
23445
- this.constrainPitch = cfg.constrainPitch;
23436
+ this.deviceMatrix = cfg.deviceMatrix;
23437
+ this.eye = cfg.eye;
23438
+ this.look = cfg.look;
23439
+ this.up = cfg.up;
23440
+ this.worldAxis = cfg.worldAxis;
23441
+ this.gimbalLock = cfg.gimbalLock;
23442
+ this.constrainPitch = cfg.constrainPitch;
23446
23443
 
23447
- this.projection = cfg.projection;
23444
+ this.projection = cfg.projection;
23448
23445
 
23449
- this._perspective.on("matrix", () => {
23450
- if (this._projectionType === "perspective") {
23451
- this.fire("projMatrix", this._perspective.matrix);
23452
- }
23453
- });
23454
- this._ortho.on("matrix", () => {
23455
- if (this._projectionType === "ortho") {
23456
- this.fire("projMatrix", this._ortho.matrix);
23457
- }
23458
- });
23459
- this._frustum.on("matrix", () => {
23460
- if (this._projectionType === "frustum") {
23461
- this.fire("projMatrix", this._frustum.matrix);
23462
- }
23463
- });
23464
- this._customProjection.on("matrix", () => {
23465
- if (this._projectionType === "customProjection") {
23466
- this.fire("projMatrix", this._customProjection.matrix);
23467
- }
23468
- });
23469
- }
23446
+ this._perspective.on("matrix", () => {
23447
+ if (this._projectionType === "perspective") {
23448
+ this.fire("projMatrix", this._perspective.matrix);
23449
+ }
23450
+ });
23451
+ this._ortho.on("matrix", () => {
23452
+ if (this._projectionType === "ortho") {
23453
+ this.fire("projMatrix", this._ortho.matrix);
23454
+ }
23455
+ });
23456
+ this._frustum.on("matrix", () => {
23457
+ if (this._projectionType === "frustum") {
23458
+ this.fire("projMatrix", this._frustum.matrix);
23459
+ }
23460
+ });
23461
+ this._customProjection.on("matrix", () => {
23462
+ if (this._projectionType === "customProjection") {
23463
+ this.fire("projMatrix", this._customProjection.matrix);
23464
+ }
23465
+ });
23466
+ }
23470
23467
 
23471
- _update() {
23472
- const state = this._state;
23473
- // In ortho mode, build the view matrix with an eye position that's translated
23474
- // well back from look, so that the front sectionPlane plane doesn't unexpectedly cut
23475
- // the front off the view (not a problem with perspective, since objects close enough
23476
- // to be clipped by the front plane are usually too big to see anything of their cross-sections).
23477
- let eye;
23478
- if (this.projection === "ortho") {
23479
- math.subVec3(this._eye, this._look, eyeLookVec);
23480
- math.normalizeVec3(eyeLookVec, eyeLookVecNorm);
23481
- math.mulVec3Scalar(eyeLookVecNorm, 1000.0, eyeLookOffset);
23482
- math.addVec3(this._look, eyeLookOffset, offsetEye);
23483
- eye = offsetEye;
23484
- } else {
23485
- eye = this._eye;
23486
- }
23487
- if (state.hasDeviceMatrix) {
23488
- math.lookAtMat4v(eye, this._look, this._up, tempMatb);
23489
- math.mulMat4(state.deviceMatrix, tempMatb, state.matrix);
23490
- //state.matrix.set(state.deviceMatrix);
23491
- } else {
23492
- math.lookAtMat4v(eye, this._look, this._up, state.matrix);
23493
- }
23494
- math.inverseMat4(this._state.matrix, this._state.inverseMatrix);
23495
- math.transposeMat4(this._state.inverseMatrix, this._state.normalMatrix);
23496
- this.glRedraw();
23497
- this.fire("matrix", this._state.matrix);
23498
- this.fire("viewMatrix", this._state.matrix);
23499
- }
23468
+ _update() {
23469
+ const state = this._state;
23470
+ // In ortho mode, build the view matrix with an eye position that's translated
23471
+ // well back from look, so that the front sectionPlane plane doesn't unexpectedly cut
23472
+ // the front off the view (not a problem with perspective, since objects close enough
23473
+ // to be clipped by the front plane are usually too big to see anything of their cross-sections).
23474
+ let eye;
23475
+ if (this.projection === "ortho") {
23476
+ math.subVec3(this._eye, this._look, eyeLookVec);
23477
+ math.normalizeVec3(eyeLookVec, eyeLookVecNorm);
23478
+ math.mulVec3Scalar(eyeLookVecNorm, 1000.0, eyeLookOffset);
23479
+ math.addVec3(this._look, eyeLookOffset, offsetEye);
23480
+ eye = offsetEye;
23481
+ } else {
23482
+ eye = this._eye;
23483
+ }
23484
+ if (state.hasDeviceMatrix) {
23485
+ math.lookAtMat4v(eye, this._look, this._up, tempMatb);
23486
+ math.mulMat4(state.deviceMatrix, tempMatb, state.matrix);
23487
+ //state.matrix.set(state.deviceMatrix);
23488
+ } else {
23489
+ math.lookAtMat4v(eye, this._look, this._up, state.matrix);
23490
+ }
23491
+ math.inverseMat4(this._state.matrix, this._state.inverseMatrix);
23492
+ math.transposeMat4(this._state.inverseMatrix, this._state.normalMatrix);
23493
+ this.glRedraw();
23494
+ this.fire("matrix", this._state.matrix);
23495
+ this.fire("viewMatrix", this._state.matrix);
23496
+ }
23500
23497
 
23501
- /**
23502
- * Rotates {@link Camera#eye} about {@link Camera#look}, around the {@link Camera#up} vector
23503
- *
23504
- * @param {Number} angleInc Angle of rotation in degrees
23505
- */
23506
- orbitYaw(angleInc) {
23507
- let lookEyeVec = math.subVec3(this._eye, this._look, tempVec3$6);
23508
- math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);
23509
- lookEyeVec = math.transformPoint3(tempMat, lookEyeVec, tempVec3b$y);
23510
- this.eye = math.addVec3(this._look, lookEyeVec, tempVec3c$u); // Set eye position as 'look' plus 'eye' vector
23511
- this.up = math.transformPoint3(tempMat, this._up, tempVec3d$d); // Rotate 'up' vector
23512
- }
23498
+ /**
23499
+ * Rotates {@link Camera#eye} about {@link Camera#look}, around the {@link Camera#up} vector
23500
+ *
23501
+ * @param {Number} angleInc Angle of rotation in degrees
23502
+ */
23503
+ orbitYaw(angleInc) {
23504
+ let lookEyeVec = math.subVec3(this._eye, this._look, tempVec3$6);
23505
+ math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);
23506
+ lookEyeVec = math.transformPoint3(tempMat, lookEyeVec, tempVec3b$y);
23507
+ this.eye = math.addVec3(this._look, lookEyeVec, tempVec3c$u); // Set eye position as 'look' plus 'eye' vector
23508
+ this.up = math.transformPoint3(tempMat, this._up, tempVec3d$d); // Rotate 'up' vector
23509
+ }
23513
23510
 
23514
- /**
23515
- * Rotates {@link Camera#eye} about {@link Camera#look} around the right axis (orthogonal to {@link Camera#up} and "look").
23516
- *
23517
- * @param {Number} angleInc Angle of rotation in degrees
23518
- */
23519
- orbitPitch(angleInc) {
23520
- if (this._constrainPitch) {
23521
- angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;
23522
- if (angleInc < 1) {
23523
- return;
23524
- }
23525
- }
23526
- let eye2 = math.subVec3(this._eye, this._look, tempVec3$6);
23527
- const left = math.cross3Vec3(math.normalizeVec3(eye2, tempVec3b$y), math.normalizeVec3(this._up, tempVec3c$u));
23528
- math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);
23529
- eye2 = math.transformPoint3(tempMat, eye2, tempVec3d$d);
23530
- this.up = math.transformPoint3(tempMat, this._up, tempVec3e$2);
23531
- this.eye = math.addVec3(eye2, this._look, tempVec3f$2);
23532
- }
23511
+ /**
23512
+ * Rotates {@link Camera#eye} about {@link Camera#look} around the right axis (orthogonal to {@link Camera#up} and "look").
23513
+ *
23514
+ * @param {Number} angleInc Angle of rotation in degrees
23515
+ */
23516
+ orbitPitch(angleInc) {
23517
+ if (this._constrainPitch) {
23518
+ angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;
23519
+ if (angleInc < 1) {
23520
+ return;
23521
+ }
23522
+ }
23523
+ let eye2 = math.subVec3(this._eye, this._look, tempVec3$6);
23524
+ const left = math.cross3Vec3(math.normalizeVec3(eye2, tempVec3b$y), math.normalizeVec3(this._up, tempVec3c$u));
23525
+ math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);
23526
+ eye2 = math.transformPoint3(tempMat, eye2, tempVec3d$d);
23527
+ this.up = math.transformPoint3(tempMat, this._up, tempVec3e$2);
23528
+ this.eye = math.addVec3(eye2, this._look, tempVec3f$2);
23529
+ }
23533
23530
 
23534
- /**
23535
- * Rotates {@link Camera#look} about {@link Camera#eye}, around the {@link Camera#up} vector.
23536
- *
23537
- * @param {Number} angleInc Angle of rotation in degrees
23538
- */
23539
- yaw(angleInc) {
23540
- let look2 = math.subVec3(this._look, this._eye, tempVec3$6);
23541
- math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);
23542
- look2 = math.transformPoint3(tempMat, look2, tempVec3b$y);
23543
- this.look = math.addVec3(look2, this._eye, tempVec3c$u);
23544
- if (this._gimbalLock) {
23545
- this.up = math.transformPoint3(tempMat, this._up, tempVec3d$d);
23546
- }
23547
- }
23531
+ /**
23532
+ * Rotates {@link Camera#look} about {@link Camera#eye}, around the {@link Camera#up} vector.
23533
+ *
23534
+ * @param {Number} angleInc Angle of rotation in degrees
23535
+ */
23536
+ yaw(angleInc) {
23537
+ let look2 = math.subVec3(this._look, this._eye, tempVec3$6);
23538
+ math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);
23539
+ look2 = math.transformPoint3(tempMat, look2, tempVec3b$y);
23540
+ this.look = math.addVec3(look2, this._eye, tempVec3c$u);
23541
+ if (this._gimbalLock) {
23542
+ this.up = math.transformPoint3(tempMat, this._up, tempVec3d$d);
23543
+ }
23544
+ }
23548
23545
 
23549
- /**
23546
+ /**
23550
23547
  * Rotates {@link Camera#look} about {@link Camera#eye}, around the right axis (orthogonal to {@link Camera#up} and "look").
23551
23548
 
23552
23549
  * @param {Number} angleInc Angle of rotation in degrees
23553
23550
  */
23554
- pitch(angleInc) {
23555
- if (this._constrainPitch) {
23556
- angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;
23557
- if (angleInc < 1) {
23558
- return;
23559
- }
23560
- }
23561
- let look2 = math.subVec3(this._look, this._eye, tempVec3$6);
23562
- const left = math.cross3Vec3(math.normalizeVec3(look2, tempVec3b$y), math.normalizeVec3(this._up, tempVec3c$u));
23563
- math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);
23564
- this.up = math.transformPoint3(tempMat, this._up, tempVec3f$2);
23565
- look2 = math.transformPoint3(tempMat, look2, tempVec3d$d);
23566
- this.look = math.addVec3(look2, this._eye, tempVec3e$2);
23567
- }
23551
+ pitch(angleInc) {
23552
+ if (this._constrainPitch) {
23553
+ angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;
23554
+ if (angleInc < 1) {
23555
+ return;
23556
+ }
23557
+ }
23558
+ let look2 = math.subVec3(this._look, this._eye, tempVec3$6);
23559
+ const left = math.cross3Vec3(math.normalizeVec3(look2, tempVec3b$y), math.normalizeVec3(this._up, tempVec3c$u));
23560
+ math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);
23561
+ this.up = math.transformPoint3(tempMat, this._up, tempVec3f$2);
23562
+ look2 = math.transformPoint3(tempMat, look2, tempVec3d$d);
23563
+ this.look = math.addVec3(look2, this._eye, tempVec3e$2);
23564
+ }
23568
23565
 
23569
- /**
23570
- * Pans the Camera along its local X, Y and Z axis.
23571
- *
23572
- * @param pan The pan vector
23573
- */
23574
- pan(pan) {
23575
- const eye2 = math.subVec3(this._eye, this._look, tempVec3$6);
23576
- const vec = [0, 0, 0];
23577
- let v;
23578
- if (pan[0] !== 0) {
23579
- const left = math.cross3Vec3(math.normalizeVec3(eye2, []), math.normalizeVec3(this._up, tempVec3b$y));
23580
- v = math.mulVec3Scalar(left, pan[0]);
23581
- vec[0] += v[0];
23582
- vec[1] += v[1];
23583
- vec[2] += v[2];
23584
- }
23585
- if (pan[1] !== 0) {
23586
- v = math.mulVec3Scalar(math.normalizeVec3(this._up, tempVec3c$u), pan[1]);
23587
- vec[0] += v[0];
23588
- vec[1] += v[1];
23589
- vec[2] += v[2];
23590
- }
23591
- if (pan[2] !== 0) {
23592
- v = math.mulVec3Scalar(math.normalizeVec3(eye2, tempVec3d$d), pan[2]);
23593
- vec[0] += v[0];
23594
- vec[1] += v[1];
23595
- vec[2] += v[2];
23596
- }
23597
- this.eye = math.addVec3(this._eye, vec, tempVec3e$2);
23598
- this.look = math.addVec3(this._look, vec, tempVec3f$2);
23599
- }
23566
+ /**
23567
+ * Pans the Camera along its local X, Y and Z axis.
23568
+ *
23569
+ * @param pan The pan vector
23570
+ */
23571
+ pan(pan) {
23572
+ const eye2 = math.subVec3(this._eye, this._look, tempVec3$6);
23573
+ const vec = [0, 0, 0];
23574
+ let v;
23575
+ if (pan[0] !== 0) {
23576
+ const left = math.cross3Vec3(math.normalizeVec3(eye2, []), math.normalizeVec3(this._up, tempVec3b$y));
23577
+ v = math.mulVec3Scalar(left, pan[0]);
23578
+ vec[0] += v[0];
23579
+ vec[1] += v[1];
23580
+ vec[2] += v[2];
23581
+ }
23582
+ if (pan[1] !== 0) {
23583
+ v = math.mulVec3Scalar(math.normalizeVec3(this._up, tempVec3c$u), pan[1]);
23584
+ vec[0] += v[0];
23585
+ vec[1] += v[1];
23586
+ vec[2] += v[2];
23587
+ }
23588
+ if (pan[2] !== 0) {
23589
+ v = math.mulVec3Scalar(math.normalizeVec3(eye2, tempVec3d$d), pan[2]);
23590
+ vec[0] += v[0];
23591
+ vec[1] += v[1];
23592
+ vec[2] += v[2];
23593
+ }
23594
+ this.eye = math.addVec3(this._eye, vec, tempVec3e$2);
23595
+ this.look = math.addVec3(this._look, vec, tempVec3f$2);
23596
+ }
23600
23597
 
23601
- /**
23602
- * Increments/decrements the Camera's zoom factor, which is the distance between {@link Camera#eye} and {@link Camera#look}.
23603
- *
23604
- * @param {Number} delta Zoom factor increment.
23605
- */
23606
- zoom(delta) {
23607
- const vec = math.subVec3(this._eye, this._look, tempVec3$6);
23608
- const lenLook = Math.abs(math.lenVec3(vec, tempVec3b$y));
23609
- const newLenLook = Math.abs(lenLook + delta);
23610
- if (newLenLook < 0.5) {
23611
- return;
23612
- }
23613
- const dir = math.normalizeVec3(vec, tempVec3c$u);
23614
- this.eye = math.addVec3(this._look, math.mulVec3Scalar(dir, newLenLook), tempVec3d$d);
23615
- }
23598
+ /**
23599
+ * Increments/decrements the Camera's zoom factor, which is the distance between {@link Camera#eye} and {@link Camera#look}.
23600
+ *
23601
+ * @param {Number} delta Zoom factor increment.
23602
+ */
23603
+ zoom(delta) {
23604
+ const vec = math.subVec3(this._eye, this._look, tempVec3$6);
23605
+ const lenLook = Math.abs(math.lenVec3(vec, tempVec3b$y));
23606
+ const newLenLook = Math.abs(lenLook + delta);
23607
+ if (newLenLook < 0.5) {
23608
+ return;
23609
+ }
23610
+ const dir = math.normalizeVec3(vec, tempVec3c$u);
23611
+ this.eye = math.addVec3(this._look, math.mulVec3Scalar(dir, newLenLook), tempVec3d$d);
23612
+ }
23616
23613
 
23617
- /**
23618
- * Sets the position of the Camera's eye.
23619
- *
23620
- * Default value is ````[0,0,10]````.
23621
- *
23622
- * @emits "eye" event on change, with the value of this property.
23623
- * @type {Number[]} New eye position.
23624
- */
23625
- set eye(eye) {
23626
- this._eye.set(eye || [0, 0, 10]);
23627
- this._needUpdate(0); // Ensure matrix built on next "tick"
23628
- this.fire("eye", this._eye);
23629
- }
23614
+ /**
23615
+ * Sets the position of the Camera's eye.
23616
+ *
23617
+ * Default value is ````[0,0,10]````.
23618
+ *
23619
+ * @emits "eye" event on change, with the value of this property.
23620
+ * @type {Number[]} New eye position.
23621
+ */
23622
+ set eye(eye) {
23623
+ this._eye.set(eye || [0, 0, 10]);
23624
+ this._needUpdate(0); // Ensure matrix built on next "tick"
23625
+ this.fire("eye", this._eye);
23626
+ }
23630
23627
 
23631
- /**
23632
- * Gets the position of the Camera's eye.
23633
- *
23634
- * Default vale is ````[0,0,10]````.
23635
- *
23636
- * @type {Number[]} New eye position.
23637
- */
23638
- get eye() {
23639
- return this._eye;
23640
- }
23628
+ /**
23629
+ * Gets the position of the Camera's eye.
23630
+ *
23631
+ * Default vale is ````[0,0,10]````.
23632
+ *
23633
+ * @type {Number[]} New eye position.
23634
+ */
23635
+ get eye() {
23636
+ return this._eye;
23637
+ }
23641
23638
 
23642
- /**
23643
- * Sets the position of this Camera's point-of-interest.
23644
- *
23645
- * Default value is ````[0,0,0]````.
23646
- *
23647
- * @emits "look" event on change, with the value of this property.
23648
- *
23649
- * @param {Number[]} look Camera look position.
23650
- */
23651
- set look(look) {
23652
- this._look.set(look || [0, 0, 0]);
23653
- this._needUpdate(0); // Ensure matrix built on next "tick"
23654
- this.fire("look", this._look);
23655
- }
23639
+ /**
23640
+ * Sets the position of this Camera's point-of-interest.
23641
+ *
23642
+ * Default value is ````[0,0,0]````.
23643
+ *
23644
+ * @emits "look" event on change, with the value of this property.
23645
+ *
23646
+ * @param {Number[]} look Camera look position.
23647
+ */
23648
+ set look(look) {
23649
+ this._look.set(look || [0, 0, 0]);
23650
+ this._needUpdate(0); // Ensure matrix built on next "tick"
23651
+ this.fire("look", this._look);
23652
+ }
23656
23653
 
23657
- /**
23658
- * Gets the position of this Camera's point-of-interest.
23659
- *
23660
- * Default value is ````[0,0,0]````.
23661
- *
23662
- * @returns {Number[]} Camera look position.
23663
- */
23664
- get look() {
23665
- return this._look;
23666
- }
23654
+ /**
23655
+ * Gets the position of this Camera's point-of-interest.
23656
+ *
23657
+ * Default value is ````[0,0,0]````.
23658
+ *
23659
+ * @returns {Number[]} Camera look position.
23660
+ */
23661
+ get look() {
23662
+ return this._look;
23663
+ }
23667
23664
 
23668
- /**
23669
- * Sets the direction of this Camera's {@link Camera#up} vector.
23670
- *
23671
- * @emits "up" event on change, with the value of this property.
23672
- *
23673
- * @param {Number[]} up Direction of "up".
23674
- */
23675
- set up(up) {
23676
- this._up.set(up || [0, 1, 0]);
23677
- this._needUpdate(0);
23678
- this.fire("up", this._up);
23679
- }
23665
+ /**
23666
+ * Sets the direction of this Camera's {@link Camera#up} vector.
23667
+ *
23668
+ * @emits "up" event on change, with the value of this property.
23669
+ *
23670
+ * @param {Number[]} up Direction of "up".
23671
+ */
23672
+ set up(up) {
23673
+ this._up.set(up || [0, 1, 0]);
23674
+ this._needUpdate(0);
23675
+ this.fire("up", this._up);
23676
+ }
23680
23677
 
23681
- /**
23682
- * Gets the direction of this Camera's {@link Camera#up} vector.
23683
- *
23684
- * @returns {Number[]} Direction of "up".
23685
- */
23686
- get up() {
23687
- return this._up;
23688
- }
23678
+ /**
23679
+ * Gets the direction of this Camera's {@link Camera#up} vector.
23680
+ *
23681
+ * @returns {Number[]} Direction of "up".
23682
+ */
23683
+ get up() {
23684
+ return this._up;
23685
+ }
23689
23686
 
23690
- /**
23691
- * Sets an optional matrix to premultiply into {@link Camera#matrix} matrix.
23692
- *
23693
- * This is intended to be used for stereo rendering with WebVR etc.
23694
- *
23695
- * @param {Number[]} matrix The matrix.
23696
- */
23697
- set deviceMatrix(matrix) {
23698
- this._state.deviceMatrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
23699
- this._state.hasDeviceMatrix = !!matrix;
23700
- this._needUpdate(0);
23701
- this.fire("deviceMatrix", this._state.deviceMatrix);
23702
- }
23687
+ /**
23688
+ * Sets an optional matrix to premultiply into {@link Camera#matrix} matrix.
23689
+ *
23690
+ * This is intended to be used for stereo rendering with WebVR etc.
23691
+ *
23692
+ * @param {Number[]} matrix The matrix.
23693
+ */
23694
+ set deviceMatrix(matrix) {
23695
+ this._state.deviceMatrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
23696
+ this._state.hasDeviceMatrix = !!matrix;
23697
+ this._needUpdate(0);
23698
+ this.fire("deviceMatrix", this._state.deviceMatrix);
23699
+ }
23703
23700
 
23704
- /**
23705
- * Gets an optional matrix to premultiply into {@link Camera#matrix} matrix.
23706
- *
23707
- * @returns {Number[]} The matrix.
23708
- */
23709
- get deviceMatrix() {
23710
- return this._state.deviceMatrix;
23711
- }
23701
+ /**
23702
+ * Gets an optional matrix to premultiply into {@link Camera#matrix} matrix.
23703
+ *
23704
+ * @returns {Number[]} The matrix.
23705
+ */
23706
+ get deviceMatrix() {
23707
+ return this._state.deviceMatrix;
23708
+ }
23712
23709
 
23713
- /**
23714
- * Sets the up, right and forward axis of the World coordinate system.
23715
- *
23716
- * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````
23717
- *
23718
- * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````
23719
- *
23720
- * @param {Number[]} axis The new Wworld coordinate axis.
23721
- */
23722
- set worldAxis(axis) {
23723
- axis = axis || [1, 0, 0, 0, 1, 0, 0, 0, 1];
23724
- if (!this._worldAxis) {
23725
- this._worldAxis = math.vec3(axis);
23726
- } else {
23727
- this._worldAxis.set(axis);
23728
- }
23729
- this._worldRight[0] = this._worldAxis[0];
23730
- this._worldRight[1] = this._worldAxis[1];
23731
- this._worldRight[2] = this._worldAxis[2];
23732
- this._worldUp[0] = this._worldAxis[3];
23733
- this._worldUp[1] = this._worldAxis[4];
23734
- this._worldUp[2] = this._worldAxis[5];
23735
- this._worldForward[0] = this._worldAxis[6];
23736
- this._worldForward[1] = this._worldAxis[7];
23737
- this._worldForward[2] = this._worldAxis[8];
23738
- this.fire("worldAxis", this._worldAxis);
23739
- }
23710
+ /**
23711
+ * Sets the up, right and forward axis of the World coordinate system.
23712
+ *
23713
+ * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````
23714
+ *
23715
+ * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````
23716
+ *
23717
+ * @param {Number[]} axis The new Wworld coordinate axis.
23718
+ */
23719
+ set worldAxis(axis) {
23720
+ axis = axis || [1, 0, 0, 0, 1, 0, 0, 0, 1];
23721
+ if (!this._worldAxis) {
23722
+ this._worldAxis = math.vec3(axis);
23723
+ } else {
23724
+ this._worldAxis.set(axis);
23725
+ }
23726
+ this._worldRight[0] = this._worldAxis[0];
23727
+ this._worldRight[1] = this._worldAxis[1];
23728
+ this._worldRight[2] = this._worldAxis[2];
23729
+ this._worldUp[0] = this._worldAxis[3];
23730
+ this._worldUp[1] = this._worldAxis[4];
23731
+ this._worldUp[2] = this._worldAxis[5];
23732
+ this._worldForward[0] = this._worldAxis[6];
23733
+ this._worldForward[1] = this._worldAxis[7];
23734
+ this._worldForward[2] = this._worldAxis[8];
23735
+ this.fire("worldAxis", this._worldAxis);
23736
+ }
23740
23737
 
23741
- /**
23742
- * Gets the up, right and forward axis of the World coordinate system.
23743
- *
23744
- * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````
23745
- *
23746
- * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````
23747
- *
23748
- * @returns {Number[]} The current World coordinate axis.
23749
- */
23750
- get worldAxis() {
23751
- return this._worldAxis;
23752
- }
23738
+ /**
23739
+ * Gets the up, right and forward axis of the World coordinate system.
23740
+ *
23741
+ * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````
23742
+ *
23743
+ * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````
23744
+ *
23745
+ * @returns {Number[]} The current World coordinate axis.
23746
+ */
23747
+ get worldAxis() {
23748
+ return this._worldAxis;
23749
+ }
23753
23750
 
23754
- /**
23755
- * Gets the direction of World-space "up".
23756
- *
23757
- * This is set by {@link Camera#worldAxis}.
23758
- *
23759
- * Default value is ````[0,1,0]````.
23760
- *
23761
- * @returns {Number[]} The "up" vector.
23762
- */
23763
- get worldUp() {
23764
- return this._worldUp;
23765
- }
23751
+ /**
23752
+ * Gets the direction of World-space "up".
23753
+ *
23754
+ * This is set by {@link Camera#worldAxis}.
23755
+ *
23756
+ * Default value is ````[0,1,0]````.
23757
+ *
23758
+ * @returns {Number[]} The "up" vector.
23759
+ */
23760
+ get worldUp() {
23761
+ return this._worldUp;
23762
+ }
23766
23763
 
23767
- /**
23768
- * Gets if the World-space X-axis is "up".
23769
- * @returns {Boolean}
23770
- */
23771
- get xUp() {
23772
- return this._worldUp[0] > this._worldUp[1] && this._worldUp[0] > this._worldUp[2];
23773
- }
23764
+ /**
23765
+ * Gets if the World-space X-axis is "up".
23766
+ * @returns {Boolean}
23767
+ */
23768
+ get xUp() {
23769
+ return this._worldUp[0] > this._worldUp[1] && this._worldUp[0] > this._worldUp[2];
23770
+ }
23774
23771
 
23775
- /**
23776
- * Gets if the World-space Y-axis is "up".
23777
- * @returns {Boolean}
23778
- */
23779
- get yUp() {
23780
- return this._worldUp[1] > this._worldUp[0] && this._worldUp[1] > this._worldUp[2];
23781
- }
23772
+ /**
23773
+ * Gets if the World-space Y-axis is "up".
23774
+ * @returns {Boolean}
23775
+ */
23776
+ get yUp() {
23777
+ return this._worldUp[1] > this._worldUp[0] && this._worldUp[1] > this._worldUp[2];
23778
+ }
23782
23779
 
23783
- /**
23784
- * Gets if the World-space Z-axis is "up".
23785
- * @returns {Boolean}
23786
- */
23787
- get zUp() {
23788
- return this._worldUp[2] > this._worldUp[0] && this._worldUp[2] > this._worldUp[1];
23789
- }
23780
+ /**
23781
+ * Gets if the World-space Z-axis is "up".
23782
+ * @returns {Boolean}
23783
+ */
23784
+ get zUp() {
23785
+ return this._worldUp[2] > this._worldUp[0] && this._worldUp[2] > this._worldUp[1];
23786
+ }
23790
23787
 
23791
- /**
23792
- * Gets the direction of World-space "right".
23793
- *
23794
- * This is set by {@link Camera#worldAxis}.
23795
- *
23796
- * Default value is ````[1,0,0]````.
23797
- *
23798
- * @returns {Number[]} The "up" vector.
23799
- */
23800
- get worldRight() {
23801
- return this._worldRight;
23802
- }
23788
+ /**
23789
+ * Gets the direction of World-space "right".
23790
+ *
23791
+ * This is set by {@link Camera#worldAxis}.
23792
+ *
23793
+ * Default value is ````[1,0,0]````.
23794
+ *
23795
+ * @returns {Number[]} The "up" vector.
23796
+ */
23797
+ get worldRight() {
23798
+ return this._worldRight;
23799
+ }
23803
23800
 
23804
- /**
23805
- * Gets the direction of World-space "forwards".
23806
- *
23807
- * This is set by {@link Camera#worldAxis}.
23808
- *
23809
- * Default value is ````[0,0,1]````.
23810
- *
23811
- * @returns {Number[]} The "up" vector.
23812
- */
23813
- get worldForward() {
23814
- return this._worldForward;
23815
- }
23801
+ /**
23802
+ * Gets the direction of World-space "forwards".
23803
+ *
23804
+ * This is set by {@link Camera#worldAxis}.
23805
+ *
23806
+ * Default value is ````[0,0,1]````.
23807
+ *
23808
+ * @returns {Number[]} The "up" vector.
23809
+ */
23810
+ get worldForward() {
23811
+ return this._worldForward;
23812
+ }
23816
23813
 
23817
- /**
23818
- * Sets whether to lock yaw rotation to pivot about the World-space "up" axis.
23819
- *
23820
- * Fires a {@link Camera#gimbalLock:event} event on change.
23821
- *
23822
- * @params {Boolean} gimbalLock Set true to lock gimbal.
23823
- */
23824
- set gimbalLock(value) {
23825
- this._gimbalLock = value !== false;
23826
- this.fire("gimbalLock", this._gimbalLock);
23827
- }
23814
+ /**
23815
+ * Sets whether to lock yaw rotation to pivot about the World-space "up" axis.
23816
+ *
23817
+ * Fires a {@link Camera#gimbalLock:event} event on change.
23818
+ *
23819
+ * @params {Boolean} gimbalLock Set true to lock gimbal.
23820
+ */
23821
+ set gimbalLock(value) {
23822
+ this._gimbalLock = value !== false;
23823
+ this.fire("gimbalLock", this._gimbalLock);
23824
+ }
23828
23825
 
23829
- /**
23830
- * Gets whether to lock yaw rotation to pivot about the World-space "up" axis.
23831
- *
23832
- * @returns {Boolean} Returns ````true```` if gimbal is locked.
23833
- */
23834
- get gimbalLock() {
23835
- return this._gimbalLock;
23836
- }
23826
+ /**
23827
+ * Gets whether to lock yaw rotation to pivot about the World-space "up" axis.
23828
+ *
23829
+ * @returns {Boolean} Returns ````true```` if gimbal is locked.
23830
+ */
23831
+ get gimbalLock() {
23832
+ return this._gimbalLock;
23833
+ }
23837
23834
 
23838
- /**
23839
- * Sets whether to prevent camera from being pitched upside down.
23840
- *
23841
- * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.
23842
- *
23843
- * Fires a {@link Camera#constrainPitch:event} event on change.
23844
- *
23845
- * Default value is ````false````.
23846
- *
23847
- * @param {Boolean} value Set ````true```` to contrain pitch rotation.
23848
- */
23849
- set constrainPitch(value) {
23850
- this._constrainPitch = !!value;
23851
- this.fire("constrainPitch", this._constrainPitch);
23852
- }
23835
+ /**
23836
+ * Sets whether to prevent camera from being pitched upside down.
23837
+ *
23838
+ * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.
23839
+ *
23840
+ * Fires a {@link Camera#constrainPitch:event} event on change.
23841
+ *
23842
+ * Default value is ````false````.
23843
+ *
23844
+ * @param {Boolean} value Set ````true```` to contrain pitch rotation.
23845
+ */
23846
+ set constrainPitch(value) {
23847
+ this._constrainPitch = !!value;
23848
+ this.fire("constrainPitch", this._constrainPitch);
23849
+ }
23853
23850
 
23854
- /**
23855
- * Gets whether to prevent camera from being pitched upside down.
23856
- *
23857
- * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.
23858
- *
23859
- * Default value is ````false````.
23860
- *
23861
- * @returns {Boolean} ````true```` if pitch rotation is currently constrained.
23862
- get constrainPitch() {
23863
- return this._constrainPitch;
23864
- }
23851
+ /**
23852
+ * Gets whether to prevent camera from being pitched upside down.
23853
+ *
23854
+ * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.
23855
+ *
23856
+ * Default value is ````false````.
23857
+ *
23858
+ * @returns {Boolean} ````true```` if pitch rotation is currently constrained.*/
23859
+ get constrainPitch() {
23860
+ return this._constrainPitch;
23861
+ }
23865
23862
 
23866
- /**
23867
- * Gets distance from {@link Camera#look} to {@link Camera#eye}.
23868
- *
23869
- * @returns {Number} The distance.
23870
- */
23871
- get eyeLookDist() {
23872
- return math.lenVec3(math.subVec3(this._look, this._eye, tempVec3$6));
23873
- }
23863
+ /**
23864
+ * Gets distance from {@link Camera#look} to {@link Camera#eye}.
23865
+ *
23866
+ * @returns {Number} The distance.
23867
+ */
23868
+ get eyeLookDist() {
23869
+ return math.lenVec3(math.subVec3(this._look, this._eye, tempVec3$6));
23870
+ }
23874
23871
 
23875
- /**
23876
- * Gets the Camera's viewing transformation matrix.
23877
- *
23878
- * Fires a {@link Camera#matrix:event} event on change.
23879
- *
23880
- * @returns {Number[]} The viewing transform matrix.
23881
- */
23882
- get matrix() {
23883
- if (this._updateScheduled) {
23884
- this._doUpdate();
23885
- }
23886
- return this._state.matrix;
23887
- }
23872
+ /**
23873
+ * Gets the Camera's viewing transformation matrix.
23874
+ *
23875
+ * Fires a {@link Camera#matrix:event} event on change.
23876
+ *
23877
+ * @returns {Number[]} The viewing transform matrix.
23878
+ */
23879
+ get matrix() {
23880
+ if (this._updateScheduled) {
23881
+ this._doUpdate();
23882
+ }
23883
+ return this._state.matrix;
23884
+ }
23888
23885
 
23889
- /**
23890
- * Gets the Camera's viewing transformation matrix.
23891
- *
23892
- * Fires a {@link Camera#matrix:event} event on change.
23893
- *
23894
- * @returns {Number[]} The viewing transform matrix.
23895
- */
23896
- get viewMatrix() {
23897
- if (this._updateScheduled) {
23898
- this._doUpdate();
23899
- }
23900
- return this._state.matrix;
23901
- }
23886
+ /**
23887
+ * Gets the Camera's viewing transformation matrix.
23888
+ *
23889
+ * Fires a {@link Camera#matrix:event} event on change.
23890
+ *
23891
+ * @returns {Number[]} The viewing transform matrix.
23892
+ */
23893
+ get viewMatrix() {
23894
+ if (this._updateScheduled) {
23895
+ this._doUpdate();
23896
+ }
23897
+ return this._state.matrix;
23898
+ }
23902
23899
 
23903
- /**
23904
- * The Camera's viewing normal transformation matrix.
23905
- *
23906
- * Fires a {@link Camera#matrix:event} event on change.
23907
- *
23908
- * @returns {Number[]} The viewing normal transform matrix.
23909
- */
23910
- get normalMatrix() {
23911
- if (this._updateScheduled) {
23912
- this._doUpdate();
23913
- }
23914
- return this._state.normalMatrix;
23915
- }
23900
+ /**
23901
+ * The Camera's viewing normal transformation matrix.
23902
+ *
23903
+ * Fires a {@link Camera#matrix:event} event on change.
23904
+ *
23905
+ * @returns {Number[]} The viewing normal transform matrix.
23906
+ */
23907
+ get normalMatrix() {
23908
+ if (this._updateScheduled) {
23909
+ this._doUpdate();
23910
+ }
23911
+ return this._state.normalMatrix;
23912
+ }
23916
23913
 
23917
- /**
23918
- * The Camera's viewing normal transformation matrix.
23919
- *
23920
- * Fires a {@link Camera#matrix:event} event on change.
23921
- *
23922
- * @returns {Number[]} The viewing normal transform matrix.
23923
- */
23924
- get viewNormalMatrix() {
23925
- if (this._updateScheduled) {
23926
- this._doUpdate();
23927
- }
23928
- return this._state.normalMatrix;
23929
- }
23914
+ /**
23915
+ * The Camera's viewing normal transformation matrix.
23916
+ *
23917
+ * Fires a {@link Camera#matrix:event} event on change.
23918
+ *
23919
+ * @returns {Number[]} The viewing normal transform matrix.
23920
+ */
23921
+ get viewNormalMatrix() {
23922
+ if (this._updateScheduled) {
23923
+ this._doUpdate();
23924
+ }
23925
+ return this._state.normalMatrix;
23926
+ }
23930
23927
 
23931
- /**
23932
- * Gets the inverse of the Camera's viewing transform matrix.
23933
- *
23934
- * This has the same value as {@link Camera#normalMatrix}.
23935
- *
23936
- * @returns {Number[]} The inverse viewing transform matrix.
23937
- */
23938
- get inverseViewMatrix() {
23939
- if (this._updateScheduled) {
23940
- this._doUpdate();
23941
- }
23942
- return this._state.inverseMatrix;
23943
- }
23928
+ /**
23929
+ * Gets the inverse of the Camera's viewing transform matrix.
23930
+ *
23931
+ * This has the same value as {@link Camera#normalMatrix}.
23932
+ *
23933
+ * @returns {Number[]} The inverse viewing transform matrix.
23934
+ */
23935
+ get inverseViewMatrix() {
23936
+ if (this._updateScheduled) {
23937
+ this._doUpdate();
23938
+ }
23939
+ return this._state.inverseMatrix;
23940
+ }
23944
23941
 
23945
- /**
23946
- * Gets the Camera's projection transformation projMatrix.
23947
- *
23948
- * Fires a {@link Camera#projMatrix:event} event on change.
23949
- *
23950
- * @returns {Number[]} The projection matrix.
23951
- */
23952
- get projMatrix() {
23953
- return this[this.projection].matrix;
23954
- }
23942
+ /**
23943
+ * Gets the Camera's projection transformation projMatrix.
23944
+ *
23945
+ * Fires a {@link Camera#projMatrix:event} event on change.
23946
+ *
23947
+ * @returns {Number[]} The projection matrix.
23948
+ */
23949
+ get projMatrix() {
23950
+ return this[this.projection].matrix;
23951
+ }
23955
23952
 
23956
- /**
23957
- * Gets the Camera's perspective projection.
23958
- *
23959
- * The Camera uses this while {@link Camera#projection} equals ````perspective````.
23960
- *
23961
- * @returns {Perspective} The Perspective component.
23962
- */
23963
- get perspective() {
23964
- return this._perspective;
23965
- }
23953
+ /**
23954
+ * Gets the Camera's perspective projection.
23955
+ *
23956
+ * The Camera uses this while {@link Camera#projection} equals ````perspective````.
23957
+ *
23958
+ * @returns {Perspective} The Perspective component.
23959
+ */
23960
+ get perspective() {
23961
+ return this._perspective;
23962
+ }
23966
23963
 
23967
- /**
23968
- * Gets the Camera's orthographic projection.
23969
- *
23970
- * The Camera uses this while {@link Camera#projection} equals ````ortho````.
23971
- *
23972
- * @returns {Ortho} The Ortho component.
23973
- */
23974
- get ortho() {
23975
- return this._ortho;
23976
- }
23964
+ /**
23965
+ * Gets the Camera's orthographic projection.
23966
+ *
23967
+ * The Camera uses this while {@link Camera#projection} equals ````ortho````.
23968
+ *
23969
+ * @returns {Ortho} The Ortho component.
23970
+ */
23971
+ get ortho() {
23972
+ return this._ortho;
23973
+ }
23977
23974
 
23978
- /**
23979
- * Gets the Camera's frustum projection.
23980
- *
23981
- * The Camera uses this while {@link Camera#projection} equals ````frustum````.
23982
- *
23983
- * @returns {Frustum} The Ortho component.
23984
- */
23985
- get frustum() {
23986
- return this._frustum;
23987
- }
23975
+ /**
23976
+ * Gets the Camera's frustum projection.
23977
+ *
23978
+ * The Camera uses this while {@link Camera#projection} equals ````frustum````.
23979
+ *
23980
+ * @returns {Frustum} The Ortho component.
23981
+ */
23982
+ get frustum() {
23983
+ return this._frustum;
23984
+ }
23988
23985
 
23989
- /**
23990
- * Gets the Camera's custom projection.
23991
- *
23992
- * This is used while {@link Camera#projection} equals "customProjection".
23993
- *
23994
- * @returns {CustomProjection} The custom projection.
23995
- */
23996
- get customProjection() {
23997
- return this._customProjection;
23998
- }
23986
+ /**
23987
+ * Gets the Camera's custom projection.
23988
+ *
23989
+ * This is used while {@link Camera#projection} equals "customProjection".
23990
+ *
23991
+ * @returns {CustomProjection} The custom projection.
23992
+ */
23993
+ get customProjection() {
23994
+ return this._customProjection;
23995
+ }
23999
23996
 
24000
- /**
24001
- * Sets the active projection type.
24002
- *
24003
- * Accepted values are ````"perspective"````, ````"ortho"````, ````"frustum"```` and ````"customProjection"````.
24004
- *
24005
- * Default value is ````"perspective"````.
24006
- *
24007
- * @param {String} value Identifies the active projection type.
24008
- */
24009
- set projection(value) {
24010
- value = value || "perspective";
24011
- if (this._projectionType === value) {
24012
- return;
24013
- }
24014
- if (value === "perspective") {
24015
- this._project = this._perspective;
24016
- } else if (value === "ortho") {
24017
- this._project = this._ortho;
24018
- } else if (value === "frustum") {
24019
- this._project = this._frustum;
24020
- } else if (value === "customProjection") {
24021
- this._project = this._customProjection;
24022
- } else {
24023
- this.error("Unsupported value for 'projection': " + value + " defaulting to 'perspective'");
24024
- this._project = this._perspective;
24025
- value = "perspective";
24026
- }
24027
- this._project._update();
24028
- this._projectionType = value;
24029
- this.glRedraw();
24030
- this._update(); // Need to rebuild lookat matrix with full eye, look & up
24031
- this.fire("dirty");
24032
- this.fire("projection", this._projectionType);
24033
- this.fire("projMatrix", this._project.matrix);
24034
- }
23997
+ /**
23998
+ * Sets the active projection type.
23999
+ *
24000
+ * Accepted values are ````"perspective"````, ````"ortho"````, ````"frustum"```` and ````"customProjection"````.
24001
+ *
24002
+ * Default value is ````"perspective"````.
24003
+ *
24004
+ * @param {String} value Identifies the active projection type.
24005
+ */
24006
+ set projection(value) {
24007
+ value = value || "perspective";
24008
+ if (this._projectionType === value) {
24009
+ return;
24010
+ }
24011
+ if (value === "perspective") {
24012
+ this._project = this._perspective;
24013
+ } else if (value === "ortho") {
24014
+ this._project = this._ortho;
24015
+ } else if (value === "frustum") {
24016
+ this._project = this._frustum;
24017
+ } else if (value === "customProjection") {
24018
+ this._project = this._customProjection;
24019
+ } else {
24020
+ this.error("Unsupported value for 'projection': " + value + " defaulting to 'perspective'");
24021
+ this._project = this._perspective;
24022
+ value = "perspective";
24023
+ }
24024
+ this._project._update();
24025
+ this._projectionType = value;
24026
+ this.glRedraw();
24027
+ this._update(); // Need to rebuild lookat matrix with full eye, look & up
24028
+ this.fire("dirty");
24029
+ this.fire("projection", this._projectionType);
24030
+ this.fire("projMatrix", this._project.matrix);
24031
+ }
24035
24032
 
24036
- /**
24037
- * Gets the active projection type.
24038
- *
24039
- * Possible values are ````"perspective"````, ````"ortho"````, ````"frustum"```` and ````"customProjection"````.
24040
- *
24041
- * Default value is ````"perspective"````.
24042
- *
24043
- * @returns {String} Identifies the active projection type.
24044
- */
24045
- get projection() {
24046
- return this._projectionType;
24047
- }
24033
+ /**
24034
+ * Gets the active projection type.
24035
+ *
24036
+ * Possible values are ````"perspective"````, ````"ortho"````, ````"frustum"```` and ````"customProjection"````.
24037
+ *
24038
+ * Default value is ````"perspective"````.
24039
+ *
24040
+ * @returns {String} Identifies the active projection type.
24041
+ */
24042
+ get projection() {
24043
+ return this._projectionType;
24044
+ }
24048
24045
 
24049
- /**
24050
- * Gets the currently active projection for this Camera.
24051
- *
24052
- * The currently active project is selected with {@link Camera#projection}.
24053
- *
24054
- * @returns {Perspective|Ortho|Frustum|CustomProjection} The currently active projection is active.
24055
- */
24056
- get project() {
24057
- return this._project;
24058
- }
24046
+ /**
24047
+ * Gets the currently active projection for this Camera.
24048
+ *
24049
+ * The currently active project is selected with {@link Camera#projection}.
24050
+ *
24051
+ * @returns {Perspective|Ortho|Frustum|CustomProjection} The currently active projection is active.
24052
+ */
24053
+ get project() {
24054
+ return this._project;
24055
+ }
24059
24056
 
24060
- /**
24061
- * Get the 2D canvas position of a 3D world position.
24062
- *
24063
- * @param {[number, number, number]} worldPos
24064
- * @returns {[number, number]} the canvas position
24065
- */
24066
- projectWorldPos(worldPos) {
24067
- const _worldPos = tempVec4a$8;
24068
- const viewPos = tempVec4b$5;
24069
- const screenPos = tempVec4c$2;
24070
- _worldPos[0] = worldPos[0];
24071
- _worldPos[1] = worldPos[1];
24072
- _worldPos[2] = worldPos[2];
24073
- _worldPos[3] = 1;
24074
- math.mulMat4v4(this.viewMatrix, _worldPos, viewPos);
24075
- math.mulMat4v4(this.projMatrix, viewPos, screenPos);
24076
- math.mulVec3Scalar(screenPos, 1.0 / screenPos[3]);
24077
- screenPos[3] = 1.0;
24078
- screenPos[1] *= -1;
24079
- const canvas = this.scene.canvas.canvas;
24080
- const halfCanvasWidth = canvas.offsetWidth / 2.0;
24081
- const halfCanvasHeight = canvas.offsetHeight / 2.0;
24082
- const canvasPos = [
24083
- screenPos[0] * halfCanvasWidth + halfCanvasWidth,
24084
- screenPos[1] * halfCanvasHeight + halfCanvasHeight,
24085
- ];
24086
- return canvasPos;
24087
- }
24057
+ /**
24058
+ * Get the 2D canvas position of a 3D world position.
24059
+ *
24060
+ * @param {[number, number, number]} worldPos
24061
+ * @returns {[number, number]} the canvas position
24062
+ */
24063
+ projectWorldPos(worldPos) {
24064
+ const _worldPos = tempVec4a$8;
24065
+ const viewPos = tempVec4b$5;
24066
+ const screenPos = tempVec4c$2;
24067
+ _worldPos[0] = worldPos[0];
24068
+ _worldPos[1] = worldPos[1];
24069
+ _worldPos[2] = worldPos[2];
24070
+ _worldPos[3] = 1;
24071
+ math.mulMat4v4(this.viewMatrix, _worldPos, viewPos);
24072
+ math.mulMat4v4(this.projMatrix, viewPos, screenPos);
24073
+ math.mulVec3Scalar(screenPos, 1.0 / screenPos[3]);
24074
+ screenPos[3] = 1.0;
24075
+ screenPos[1] *= -1;
24076
+ const canvas = this.scene.canvas.canvas;
24077
+ const halfCanvasWidth = canvas.offsetWidth / 2.0;
24078
+ const halfCanvasHeight = canvas.offsetHeight / 2.0;
24079
+ const canvasPos = [
24080
+ screenPos[0] * halfCanvasWidth + halfCanvasWidth,
24081
+ screenPos[1] * halfCanvasHeight + halfCanvasHeight
24082
+ ];
24083
+ return canvasPos;
24084
+ }
24088
24085
 
24089
- /**
24090
- * Destroys this Camera.
24091
- */
24092
- destroy() {
24093
- super.destroy();
24094
- this._state.destroy();
24095
- }
24086
+ /**
24087
+ * Destroys this Camera.
24088
+ */
24089
+ destroy() {
24090
+ super.destroy();
24091
+ this._state.destroy();
24092
+ }
24096
24093
  }
24097
24094
 
24098
24095
  /**
@@ -87424,9 +87421,6 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
87424
87421
  return;
87425
87422
  }
87426
87423
 
87427
- // this._destroyMarkerDiv();
87428
- this._initMarkerDiv();
87429
-
87430
87424
  if (this._currentDistanceMeasurement) {
87431
87425
  this.distanceMeasurementsPlugin.fire("measurementCancel", this._currentDistanceMeasurement);
87432
87426
  this._currentDistanceMeasurement.destroy();
@@ -94259,6 +94253,205 @@ class PerformanceModel extends SceneModel {
94259
94253
  }
94260
94254
  }
94261
94255
 
94256
+ math.vec3();
94257
+
94258
+ /**
94259
+ * @desc An arbitrarily-aligned World-space clipping plane.
94260
+ *
94261
+ * * Slices portions off objects to create cross-section views or reveal interiors.
94262
+ * * Registered by {@link SectionBox#id} in {@link Scene#sectionBoxs}.
94263
+ * * Indicates World-space position in {@link SectionBox#pos} and orientation in {@link SectionBox#dir}.
94264
+ * * Discards elements from the half-space in the direction of {@link SectionBox#dir}.
94265
+ * * Can be be enabled or disabled via {@link SectionBox#active}.
94266
+ *
94267
+ * ## Usage
94268
+ *
94269
+ * In the example below, we'll create two SectionBoxs to slice a model loaded from glTF. Note that we could also create them
94270
+ * using a {@link SectionBoxsPlugin}.
94271
+ *
94272
+ * ````javascript
94273
+ * import {Viewer, GLTFLoaderPlugin, SectionBox} from "xeokit-sdk.es.js";
94274
+ *
94275
+ * const viewer = new Viewer({
94276
+ * canvasId: "myCanvas"
94277
+ * });
94278
+ *
94279
+ * const gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {
94280
+ * id: "GLTFModels"
94281
+ * });
94282
+ *
94283
+ * const model = gltfLoaderPlugin.load({
94284
+ * id: "myModel",
94285
+ * src: "./models/gltf/mygltfmodel.gltf"
94286
+ * });
94287
+ *
94288
+ * // Create a SectionBox on negative diagonal
94289
+ * const sectionBox1 = new SectionBox(viewer.scene, {
94290
+ * pos: [1.0, 1.0, 1.0],
94291
+ * dir: [-1.0, -1.0, -1.0],
94292
+ * active: true
94293
+ * }),
94294
+ *
94295
+ * // Create a SectionBox on positive diagonal
94296
+ * const sectionBox2 = new SectionBox(viewer.scene, {
94297
+ * pos: [-1.0, -1.0, -1.0],
94298
+ * dir: [1.0, 1.0, 1.0],
94299
+ * active: true
94300
+ * });
94301
+ * ````
94302
+ */
94303
+ class SectionBox extends Component {
94304
+ /**
94305
+ @private
94306
+ */
94307
+ get type() {
94308
+ return "SectionBox";
94309
+ }
94310
+
94311
+ /**
94312
+ * @constructor
94313
+ * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionBox as well.
94314
+ * @param {*} [cfg] SectionBox configuration
94315
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
94316
+ * @param {Boolean} [cfg.active=true] Indicates whether or not this SectionBox is active.
94317
+ * @param {Number[]} [cfg.pos=[0,0,0]] World-space position of the SectionBox.
94318
+ * @param {Number[]} [cfg.dir=[0,0,-1]] Vector perpendicular to the plane surface, indicating the SectionBox plane orientation.
94319
+ */
94320
+ constructor(owner, cfg = {}) {
94321
+ super(owner, cfg);
94322
+
94323
+ this._state = new RenderState({
94324
+ active: true,
94325
+ pos: math.vec3(),
94326
+ dir: math.vec3(),
94327
+ dist: 0
94328
+ });
94329
+
94330
+ this.active = cfg.active;
94331
+ this.pos = cfg.pos;
94332
+ this.dir = cfg.dir;
94333
+
94334
+ this.scene._sectionBoxCreated(this);
94335
+ }
94336
+
94337
+ set control(control) {
94338
+ this._control = control;
94339
+ }
94340
+
94341
+ get control() {
94342
+ return this._control;
94343
+ }
94344
+
94345
+ /**
94346
+ * Sets if this SectionBox is active or not.
94347
+ *
94348
+ * Default value is ````true````.
94349
+ *
94350
+ * @param {Boolean} value Set ````true```` to activate else ````false```` to deactivate.
94351
+ */
94352
+ set active(value) {
94353
+ this._state.active = value !== false;
94354
+ this.glRedraw();
94355
+ this.fire("active", this._state.active);
94356
+ }
94357
+
94358
+ /**
94359
+ * Gets if this SectionBox is active or not.
94360
+ *
94361
+ * Default value is ````true````.
94362
+ *
94363
+ * @returns {Boolean} Returns ````true```` if active.
94364
+ */
94365
+ get active() {
94366
+ return this._state.active;
94367
+ }
94368
+
94369
+ /**
94370
+ * Sets the World-space position of this SectionBox's plane.
94371
+ *
94372
+ * Default value is ````[0, 0, 0]````.
94373
+ *
94374
+ * @param {Number[]} value New position.
94375
+ */
94376
+ set pos(value) {
94377
+ this._state.pos.set(value || [0, 0, 0]);
94378
+ this._state.dist = -math.dotVec3(this._state.pos, this._state.dir);
94379
+ this.fire("pos", this._state.pos);
94380
+ this.scene.fire("sectionBoxUpdated", this);
94381
+ }
94382
+
94383
+ /**
94384
+ * Gets the World-space position of this SectionBox's plane.
94385
+ *
94386
+ * Default value is ````[0, 0, 0]````.
94387
+ *
94388
+ * @returns {Number[]} Current position.
94389
+ */
94390
+ get pos() {
94391
+ return this._state.pos;
94392
+ }
94393
+
94394
+ /**
94395
+ * Sets the direction of this SectionBox's plane.
94396
+ *
94397
+ * Default value is ````[0, 0, -1]````.
94398
+ *
94399
+ * @param {Number[]} value New direction.
94400
+ */
94401
+ set dir(value) {
94402
+ this._state.dir.set(value || [0, 0, -1]);
94403
+ this._state.dist = -math.dotVec3(this._state.pos, this._state.dir);
94404
+ this.glRedraw();
94405
+ this.fire("dir", this._state.dir);
94406
+ this.scene.fire("sectionBoxUpdated", this);
94407
+ }
94408
+
94409
+ /**
94410
+ * Gets the direction of this SectionBox's plane.
94411
+ *
94412
+ * Default value is ````[0, 0, -1]````.
94413
+ *
94414
+ * @returns {Number[]} value Current direction.
94415
+ */
94416
+ get dir() {
94417
+ return this._state.dir;
94418
+ }
94419
+
94420
+ /**
94421
+ * Gets this SectionBox's distance to the origin of the World-space coordinate system.
94422
+ *
94423
+ * This is the dot product of {@link SectionBox#pos} and {@link SectionBox#dir} and is automatically re-calculated
94424
+ * each time either of two properties are updated.
94425
+ *
94426
+ * @returns {Number}
94427
+ */
94428
+ get dist() {
94429
+ return this._state.dist;
94430
+ }
94431
+
94432
+ /**
94433
+ * Inverts the direction of {@link SectionBox#dir}.
94434
+ */
94435
+ flipDir() {
94436
+ const dir = this._state.dir;
94437
+ dir[0] *= -1.0;
94438
+ dir[1] *= -1.0;
94439
+ dir[2] *= -1.0;
94440
+ this._state.dist = -math.dotVec3(this._state.pos, this._state.dir);
94441
+ this.fire("dir", this._state.dir);
94442
+ this.glRedraw();
94443
+ }
94444
+
94445
+ /**
94446
+ * @destroy
94447
+ */
94448
+ destroy() {
94449
+ this._state.destroy();
94450
+ this.scene._sectionBoxDestroyed(this);
94451
+ super.destroy();
94452
+ }
94453
+ }
94454
+
94262
94455
  /**
94263
94456
  * @desc A Skybox.
94264
94457
  */
@@ -108088,7 +108281,7 @@ class Viewer {
108088
108281
  * @param {String} msg The message
108089
108282
  */
108090
108283
  log(msg) {
108091
- console.log(`[xeokit viewer ${this.id}]: ${msg}`);
108284
+ console.log(`[xtctwins viewer ${this.id}]: ${msg}`);
108092
108285
  }
108093
108286
 
108094
108287
  /**
@@ -108097,7 +108290,7 @@ class Viewer {
108097
108290
  * @param {String} msg The error message
108098
108291
  */
108099
108292
  error(msg) {
108100
- console.error(`[xeokit viewer ${this.id}]: ${msg}`);
108293
+ console.error(`[xtctwins viewer ${this.id}]: ${msg}`);
108101
108294
  }
108102
108295
 
108103
108296
  /**
@@ -145421,6 +145614,143 @@ var require_web_ifc = __commonJS({
145421
145614
  exports["WebIFCWasm"] = WebIFCWasm2;
145422
145615
  }
145423
145616
  });
145617
+
145618
+ // dist/ifc-schema.ts
145619
+ var IFCURIREFERENCE = 950732822;
145620
+ var IFCTIME = 4075327185;
145621
+ var IFCTEMPERATURERATEOFCHANGEMEASURE = 1209108979;
145622
+ var IFCSOUNDPRESSURELEVELMEASURE = 3457685358;
145623
+ var IFCSOUNDPOWERLEVELMEASURE = 4157543285;
145624
+ var IFCPROPERTYSETDEFINITIONSET = 2798247006;
145625
+ var IFCPOSITIVEINTEGER = 1790229001;
145626
+ var IFCNONNEGATIVELENGTHMEASURE = 525895558;
145627
+ var IFCLINEINDEX = 1774176899;
145628
+ var IFCLANGUAGEID = 1275358634;
145629
+ var IFCDURATION = 2541165894;
145630
+ var IFCDAYINWEEKNUMBER = 3701338814;
145631
+ var IFCDATETIME = 2195413836;
145632
+ var IFCDATE = 937566702;
145633
+ var IFCCARDINALPOINTREFERENCE = 1683019596;
145634
+ var IFCBINARY = 2314439260;
145635
+ var IFCAREADENSITYMEASURE = 1500781891;
145636
+ var IFCARCINDEX = 3683503648;
145637
+ var IFCYEARNUMBER = 4065007721;
145638
+ var IFCWARPINGMOMENTMEASURE = 1718600412;
145639
+ var IFCWARPINGCONSTANTMEASURE = 51269191;
145640
+ var IFCVOLUMETRICFLOWRATEMEASURE = 2593997549;
145641
+ var IFCVOLUMEMEASURE = 3458127941;
145642
+ var IFCVAPORPERMEABILITYMEASURE = 3345633955;
145643
+ var IFCTORQUEMEASURE = 1278329552;
145644
+ var IFCTIMESTAMP = 2591213694;
145645
+ var IFCTIMEMEASURE = 2726807636;
145646
+ var IFCTHERMODYNAMICTEMPERATUREMEASURE = 743184107;
145647
+ var IFCTHERMALTRANSMITTANCEMEASURE = 2016195849;
145648
+ var IFCTHERMALRESISTANCEMEASURE = 857959152;
145649
+ var IFCTHERMALEXPANSIONCOEFFICIENTMEASURE = 2281867870;
145650
+ var IFCTHERMALCONDUCTIVITYMEASURE = 2645777649;
145651
+ var IFCTHERMALADMITTANCEMEASURE = 232962298;
145652
+ var IFCTEXTTRANSFORMATION = 296282323;
145653
+ var IFCTEXTFONTNAME = 603696268;
145654
+ var IFCTEXTDECORATION = 3490877962;
145655
+ var IFCTEXTALIGNMENT = 1460886941;
145656
+ var IFCTEXT = 2801250643;
145657
+ var IFCTEMPERATUREGRADIENTMEASURE = 58845555;
145658
+ var IFCSPECULARROUGHNESS = 361837227;
145659
+ var IFCSPECULAREXPONENT = 2757832317;
145660
+ var IFCSPECIFICHEATCAPACITYMEASURE = 3477203348;
145661
+ var IFCSOUNDPRESSUREMEASURE = 993287707;
145662
+ var IFCSOUNDPOWERMEASURE = 846465480;
145663
+ var IFCSOLIDANGLEMEASURE = 3471399674;
145664
+ var IFCSHEARMODULUSMEASURE = 408310005;
145665
+ var IFCSECTIONALAREAINTEGRALMEASURE = 2190458107;
145666
+ var IFCSECTIONMODULUSMEASURE = 3467162246;
145667
+ var IFCSECONDINMINUTE = 2766185779;
145668
+ var IFCROTATIONALSTIFFNESSMEASURE = 3211557302;
145669
+ var IFCROTATIONALMASSMEASURE = 1755127002;
145670
+ var IFCROTATIONALFREQUENCYMEASURE = 2133746277;
145671
+ var IFCREAL = 200335297;
145672
+ var IFCRATIOMEASURE = 96294661;
145673
+ var IFCRADIOACTIVITYMEASURE = 3972513137;
145674
+ var IFCPRESSUREMEASURE = 3665567075;
145675
+ var IFCPRESENTABLETEXT = 2169031380;
145676
+ var IFCPOWERMEASURE = 1364037233;
145677
+ var IFCPOSITIVERATIOMEASURE = 1245737093;
145678
+ var IFCPOSITIVEPLANEANGLEMEASURE = 3054510233;
145679
+ var IFCPOSITIVELENGTHMEASURE = 2815919920;
145680
+ var IFCPLANEANGLEMEASURE = 4042175685;
145681
+ var IFCPLANARFORCEMEASURE = 2642773653;
145682
+ var IFCPARAMETERVALUE = 2260317790;
145683
+ var IFCPHMEASURE = 929793134;
145684
+ var IFCNUMERICMEASURE = 2395907400;
145685
+ var IFCNORMALISEDRATIOMEASURE = 2095195183;
145686
+ var IFCMONTHINYEARNUMBER = 765770214;
145687
+ var IFCMONETARYMEASURE = 2615040989;
145688
+ var IFCMOMENTOFINERTIAMEASURE = 3114022597;
145689
+ var IFCMOLECULARWEIGHTMEASURE = 1648970520;
145690
+ var IFCMOISTUREDIFFUSIVITYMEASURE = 3177669450;
145691
+ var IFCMODULUSOFSUBGRADEREACTIONMEASURE = 1753493141;
145692
+ var IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE = 1052454078;
145693
+ var IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE = 2173214787;
145694
+ var IFCMODULUSOFELASTICITYMEASURE = 3341486342;
145695
+ var IFCMINUTEINHOUR = 102610177;
145696
+ var IFCMASSPERLENGTHMEASURE = 3531705166;
145697
+ var IFCMASSMEASURE = 3124614049;
145698
+ var IFCMASSFLOWRATEMEASURE = 4017473158;
145699
+ var IFCMASSDENSITYMEASURE = 1477762836;
145700
+ var IFCMAGNETICFLUXMEASURE = 2486716878;
145701
+ var IFCMAGNETICFLUXDENSITYMEASURE = 286949696;
145702
+ var IFCLUMINOUSINTENSITYMEASURE = 151039812;
145703
+ var IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE = 2755797622;
145704
+ var IFCLUMINOUSFLUXMEASURE = 2095003142;
145705
+ var IFCLOGICAL = 503418787;
145706
+ var IFCLINEARVELOCITYMEASURE = 3086160713;
145707
+ var IFCLINEARSTIFFNESSMEASURE = 1307019551;
145708
+ var IFCLINEARMOMENTMEASURE = 2128979029;
145709
+ var IFCLINEARFORCEMEASURE = 191860431;
145710
+ var IFCLENGTHMEASURE = 1243674935;
145711
+ var IFCLABEL = 3258342251;
145712
+ var IFCKINEMATICVISCOSITYMEASURE = 2054016361;
145713
+ var IFCISOTHERMALMOISTURECAPACITYMEASURE = 3192672207;
145714
+ var IFCIONCONCENTRATIONMEASURE = 3686016028;
145715
+ var IFCINTEGERCOUNTRATEMEASURE = 3809634241;
145716
+ var IFCINTEGER = 1939436016;
145717
+ var IFCINDUCTANCEMEASURE = 2679005408;
145718
+ var IFCILLUMINANCEMEASURE = 3358199106;
145719
+ var IFCIDENTIFIER = 983778844;
145720
+ var IFCHOURINDAY = 2589826445;
145721
+ var IFCHEATINGVALUEMEASURE = 1158859006;
145722
+ var IFCHEATFLUXDENSITYMEASURE = 3113092358;
145723
+ var IFCGLOBALLYUNIQUEID = 3064340077;
145724
+ var IFCFREQUENCYMEASURE = 3044325142;
145725
+ var IFCFORCEMEASURE = 1361398929;
145726
+ var IFCFONTWEIGHT = 2590844177;
145727
+ var IFCFONTVARIANT = 2715512545;
145728
+ var IFCFONTSTYLE = 1102727119;
145729
+ var IFCENERGYMEASURE = 2078135608;
145730
+ var IFCELECTRICVOLTAGEMEASURE = 2506197118;
145731
+ var IFCELECTRICRESISTANCEMEASURE = 2951915441;
145732
+ var IFCELECTRICCURRENTMEASURE = 3790457270;
145733
+ var IFCELECTRICCONDUCTANCEMEASURE = 2093906313;
145734
+ var IFCELECTRICCHARGEMEASURE = 3818826038;
145735
+ var IFCELECTRICCAPACITANCEMEASURE = 1827137117;
145736
+ var IFCDYNAMICVISCOSITYMEASURE = 69416015;
145737
+ var IFCDOSEEQUIVALENTMEASURE = 524656162;
145738
+ var IFCDIMENSIONCOUNT = 4134073009;
145739
+ var IFCDESCRIPTIVEMEASURE = 1514641115;
145740
+ var IFCDAYLIGHTSAVINGHOUR = 300323983;
145741
+ var IFCDAYINMONTHNUMBER = 86635668;
145742
+ var IFCCURVATUREMEASURE = 94842927;
145743
+ var IFCCOUNTMEASURE = 1778710042;
145744
+ var IFCCONTEXTDEPENDENTMEASURE = 3238673880;
145745
+ var IFCCOMPOUNDPLANEANGLEMEASURE = 3812528620;
145746
+ var IFCCOMPLEXNUMBER = 2991860651;
145747
+ var IFCBOXALIGNMENT = 1867003952;
145748
+ var IFCBOOLEAN = 2735952531;
145749
+ var IFCAREAMEASURE = 2650437152;
145750
+ var IFCANGULARVELOCITYMEASURE = 632304761;
145751
+ var IFCAMOUNTOFSUBSTANCEMEASURE = 360377573;
145752
+ var IFCACCELERATIONMEASURE = 4182062534;
145753
+ var IFCABSORBEDDOSEMEASURE = 3699917729;
145424
145754
  var IFCGEOSLICE = 1971632696;
145425
145755
  var IFCGEOMODEL = 2680139844;
145426
145756
  var IFCELECTRICFLOWTREATMENTDEVICE = 24726584;
@@ -145532,6 +145862,7 @@ var IFCTEXTURECOORDINATEINDICESWITHVOIDS = 1010789467;
145532
145862
  var IFCTEXTURECOORDINATEINDICES = 222769930;
145533
145863
  var IFCQUANTITYNUMBER = 2691318326;
145534
145864
  var IFCALIGNMENTVERTICALSEGMENT = 3633395639;
145865
+ var IFCALIGNMENTPARAMETERSEGMENT = 2879124712;
145535
145866
  var IFCCONTROLLER = 25142252;
145536
145867
  var IFCALARM = 3087945054;
145537
145868
  var IFCACTUATOR = 4288193352;
@@ -145743,18 +146074,30 @@ var IFCEVENTTIME = 211053100;
145743
146074
  var IFCCONVERSIONBASEDUNITWITHOFFSET = 2713554722;
145744
146075
  var IFCCOLOURRGBLIST = 3285139300;
145745
146076
  var IFCWORKTIME = 1236880293;
146077
+ var IFCTIMEPERIOD = 1199560280;
145746
146078
  var IFCTEXTUREVERTEXLIST = 3611470254;
145747
146079
  var IFCTASKTIMERECURRING = 2771591690;
145748
146080
  var IFCTASKTIME = 1549132990;
146081
+ var IFCTABLECOLUMN = 2043862942;
145749
146082
  var IFCSURFACEREINFORCEMENTAREA = 2934153892;
145750
146083
  var IFCSTRUCTURALLOADORRESULT = 609421318;
145751
146084
  var IFCSTRUCTURALLOADCONFIGURATION = 3478079324;
146085
+ var IFCSCHEDULINGTIME = 1054537805;
146086
+ var IFCRESOURCELEVELRELATIONSHIP = 2439245199;
146087
+ var IFCREFERENCE = 2433181523;
146088
+ var IFCRECURRENCEPATTERN = 3915482550;
146089
+ var IFCPROPERTYABSTRACTION = 986844984;
145752
146090
  var IFCPROJECTEDCRS = 3843373140;
146091
+ var IFCPRESENTATIONITEM = 677532197;
146092
+ var IFCMATERIALUSAGEDEFINITION = 1507914824;
145753
146093
  var IFCMATERIALPROFILEWITHOFFSETS = 552965576;
145754
146094
  var IFCMATERIALPROFILESET = 164193824;
145755
146095
  var IFCMATERIALPROFILE = 2235152071;
145756
146096
  var IFCMATERIALLAYERWITHOFFSETS = 1847252529;
146097
+ var IFCMATERIALDEFINITION = 760658860;
145757
146098
  var IFCMAPCONVERSION = 3057273783;
146099
+ var IFCEXTERNALINFORMATION = 4294318154;
146100
+ var IFCCOORDINATEREFERENCESYSTEM = 1466758467;
145758
146101
  var IFCCOORDINATEOPERATION = 1785450214;
145759
146102
  var IFCCONNECTIONVOLUMEGEOMETRY = 775493141;
145760
146103
  var IFCREINFORCINGBAR = 979691226;
@@ -146257,20 +146600,26 @@ var IFCANNOTATIONOCCURRENCE = 2442683028;
146257
146600
  var IFCWATERPROPERTIES = 1065908215;
146258
146601
  var IFCVIRTUALGRIDINTERSECTION = 891718957;
146259
146602
  var IFCVERTEXPOINT = 1907098498;
146603
+ var IFCVERTEXBASEDTEXTUREMAP = 3304826586;
146260
146604
  var IFCVERTEX = 2799835756;
146605
+ var IFCUNITASSIGNMENT = 180925521;
146261
146606
  var IFCTOPOLOGYREPRESENTATION = 1735638870;
146262
146607
  var IFCTOPOLOGICALREPRESENTATIONITEM = 1377556343;
146608
+ var IFCTIMESERIESVALUE = 581633288;
146263
146609
  var IFCTIMESERIESREFERENCERELATIONSHIP = 1718945513;
146610
+ var IFCTIMESERIES = 3101149627;
146264
146611
  var IFCTHERMALMATERIALPROPERTIES = 3317419933;
146265
146612
  var IFCTEXTUREVERTEX = 1210645708;
146266
146613
  var IFCTEXTUREMAP = 2552916305;
146267
146614
  var IFCTEXTURECOORDINATEGENERATOR = 1742049831;
146268
146615
  var IFCTEXTURECOORDINATE = 280115917;
146616
+ var IFCTEXTSTYLEWITHBOXCHARACTERISTICS = 1484833681;
146269
146617
  var IFCTEXTSTYLETEXTMODEL = 1640371178;
146270
146618
  var IFCTEXTSTYLEFORDEFINEDFONT = 2636378356;
146271
146619
  var IFCTEXTSTYLEFONTMODEL = 1983826977;
146272
146620
  var IFCTEXTSTYLE = 1447204868;
146273
146621
  var IFCTELECOMADDRESS = 912023232;
146622
+ var IFCTABLEROW = 531007025;
146274
146623
  var IFCTABLE = 985171141;
146275
146624
  var IFCSYMBOLSTYLE = 1290481447;
146276
146625
  var IFCSURFACETEXTURE = 626085974;
@@ -146284,6 +146633,8 @@ var IFCSTYLEDITEM = 3958052878;
146284
146633
  var IFCSTYLEMODEL = 2830218821;
146285
146634
  var IFCSTRUCTURALLOADTEMPERATURE = 3408363356;
146286
146635
  var IFCSTRUCTURALLOADSTATIC = 2525727697;
146636
+ var IFCSTRUCTURALLOAD = 2162789131;
146637
+ var IFCSTRUCTURALCONNECTIONCONDITION = 2273995522;
146287
146638
  var IFCSIMPLEPROPERTY = 3692461612;
146288
146639
  var IFCSHAPEREPRESENTATION = 4240577450;
146289
146640
  var IFCSHAPEMODEL = 3982875396;
@@ -146291,9 +146642,13 @@ var IFCSHAPEASPECT = 867548509;
146291
146642
  var IFCSECTIONREINFORCEMENTPROPERTIES = 4165799628;
146292
146643
  var IFCSECTIONPROPERTIES = 2042790032;
146293
146644
  var IFCSIUNIT = 448429030;
146645
+ var IFCROOT = 2341007311;
146294
146646
  var IFCRIBPLATEPROFILEPROPERTIES = 3679540991;
146295
146647
  var IFCREPRESENTATIONMAP = 1660063152;
146648
+ var IFCREPRESENTATIONITEM = 3008791417;
146649
+ var IFCREPRESENTATIONCONTEXT = 3377609919;
146296
146650
  var IFCREPRESENTATION = 1076942058;
146651
+ var IFCRELAXATION = 1222501353;
146297
146652
  var IFCREINFORCEMENTBARPROPERTIES = 1580146022;
146298
146653
  var IFCREFERENCESVALUEDOCUMENT = 2692823254;
146299
146654
  var IFCQUANTITYWEIGHT = 825690147;
@@ -146307,8 +146662,11 @@ var IFCPROPERTYDEPENDENCYRELATIONSHIP = 148025276;
146307
146662
  var IFCPROPERTYCONSTRAINTRELATIONSHIP = 3896028662;
146308
146663
  var IFCPROPERTY = 2598011224;
146309
146664
  var IFCPROFILEPROPERTIES = 2802850158;
146665
+ var IFCPROFILEDEF = 3958567839;
146310
146666
  var IFCPRODUCTSOFCOMBUSTIONPROPERTIES = 2267347899;
146311
146667
  var IFCPRODUCTREPRESENTATION = 2095639259;
146668
+ var IFCPRESENTATIONSTYLEASSIGNMENT = 2417041796;
146669
+ var IFCPRESENTATIONSTYLE = 3119450353;
146312
146670
  var IFCPRESENTATIONLAYERWITHSTYLE = 1304840413;
146313
146671
  var IFCPRESENTATIONLAYERASSIGNMENT = 2022622350;
146314
146672
  var IFCPREDEFINEDTEXTFONT = 1775413392;
@@ -146317,54 +146675,84 @@ var IFCPREDEFINEDSYMBOL = 990879717;
146317
146675
  var IFCPREDEFINEDITEM = 3727388367;
146318
146676
  var IFCPOSTALADDRESS = 3355820592;
146319
146677
  var IFCPHYSICALSIMPLEQUANTITY = 2226359599;
146678
+ var IFCPHYSICALQUANTITY = 2483315170;
146320
146679
  var IFCPERSONANDORGANIZATION = 101040310;
146321
146680
  var IFCPERSON = 2077209135;
146681
+ var IFCOWNERHISTORY = 1207048766;
146322
146682
  var IFCORGANIZATIONRELATIONSHIP = 1411181986;
146323
146683
  var IFCORGANIZATION = 4251960020;
146324
146684
  var IFCOPTICALMATERIALPROPERTIES = 1227763645;
146325
146685
  var IFCOBJECTIVE = 2251480897;
146326
146686
  var IFCOBJECTPLACEMENT = 3701648758;
146687
+ var IFCNAMEDUNIT = 1918398963;
146688
+ var IFCMONETARYUNIT = 2706619895;
146327
146689
  var IFCMETRIC = 3368373690;
146328
146690
  var IFCMECHANICALSTEELMATERIALPROPERTIES = 677618848;
146329
146691
  var IFCMECHANICALMATERIALPROPERTIES = 4256014907;
146692
+ var IFCMEASUREWITHUNIT = 2597039031;
146330
146693
  var IFCMATERIALPROPERTIES = 3265635763;
146694
+ var IFCMATERIALLIST = 2199411900;
146331
146695
  var IFCMATERIALLAYERSETUSAGE = 1303795690;
146332
146696
  var IFCMATERIALLAYERSET = 3303938423;
146333
146697
  var IFCMATERIALLAYER = 248100487;
146334
146698
  var IFCMATERIALCLASSIFICATIONRELATIONSHIP = 1847130766;
146335
146699
  var IFCMATERIAL = 1838606355;
146700
+ var IFCLOCALTIME = 30780891;
146701
+ var IFCLIGHTINTENSITYDISTRIBUTION = 1566485204;
146702
+ var IFCLIGHTDISTRIBUTIONDATA = 4162380809;
146336
146703
  var IFCLIBRARYREFERENCE = 3452421091;
146337
146704
  var IFCLIBRARYINFORMATION = 2655187982;
146705
+ var IFCIRREGULARTIMESERIESVALUE = 3020489413;
146706
+ var IFCGRIDAXIS = 852622518;
146338
146707
  var IFCEXTERNALLYDEFINEDTEXTFONT = 3548104201;
146339
146708
  var IFCEXTERNALLYDEFINEDSYMBOL = 3207319532;
146340
146709
  var IFCEXTERNALLYDEFINEDSURFACESTYLE = 1040185647;
146341
146710
  var IFCEXTERNALLYDEFINEDHATCHSTYLE = 2242383968;
146711
+ var IFCEXTERNALREFERENCE = 3200245327;
146342
146712
  var IFCENVIRONMENTALIMPACTVALUE = 1648886627;
146343
146713
  var IFCDRAUGHTINGCALLOUTRELATIONSHIP = 3796139169;
146344
146714
  var IFCDOCUMENTINFORMATIONRELATIONSHIP = 770865208;
146345
146715
  var IFCDOCUMENTINFORMATION = 1154170062;
146716
+ var IFCDOCUMENTELECTRONICFORMAT = 1376555844;
146717
+ var IFCDIMENSIONALEXPONENTS = 2949456006;
146718
+ var IFCDERIVEDUNITELEMENT = 1045800335;
146719
+ var IFCDERIVEDUNIT = 1765591967;
146720
+ var IFCDATEANDTIME = 1072939445;
146346
146721
  var IFCCURVESTYLEFONTPATTERN = 3510044353;
146347
146722
  var IFCCURVESTYLEFONTANDSCALING = 2367409068;
146348
146723
  var IFCCURVESTYLEFONT = 1105321065;
146349
146724
  var IFCCURRENCYRELATIONSHIP = 539742890;
146350
146725
  var IFCCOSTVALUE = 602808272;
146726
+ var IFCCOORDINATEDUNIVERSALTIMEOFFSET = 1065062679;
146351
146727
  var IFCCONSTRAINTRELATIONSHIP = 347226245;
146352
146728
  var IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP = 613356794;
146353
146729
  var IFCCONSTRAINTAGGREGATIONRELATIONSHIP = 1658513725;
146730
+ var IFCCONSTRAINT = 1959218052;
146354
146731
  var IFCCONNECTIONSURFACEGEOMETRY = 2732653382;
146355
146732
  var IFCCONNECTIONPORTGEOMETRY = 4257277454;
146356
146733
  var IFCCONNECTIONPOINTGEOMETRY = 2614616156;
146734
+ var IFCCONNECTIONGEOMETRY = 2859738748;
146357
146735
  var IFCCOLOURSPECIFICATION = 3264961684;
146736
+ var IFCCLASSIFICATIONNOTATIONFACET = 3639012971;
146737
+ var IFCCLASSIFICATIONNOTATION = 938368621;
146358
146738
  var IFCCLASSIFICATIONITEMRELATIONSHIP = 1098599126;
146359
146739
  var IFCCLASSIFICATIONITEM = 1767535486;
146360
146740
  var IFCCLASSIFICATION = 747523909;
146741
+ var IFCCALENDARDATE = 622194075;
146361
146742
  var IFCBOUNDARYNODECONDITIONWARPING = 2069777674;
146362
146743
  var IFCBOUNDARYNODECONDITION = 1387855156;
146363
146744
  var IFCBOUNDARYFACECONDITION = 3367102660;
146364
146745
  var IFCBOUNDARYEDGECONDITION = 1560379544;
146746
+ var IFCBOUNDARYCONDITION = 4037036970;
146365
146747
  var IFCAPPROVALRELATIONSHIP = 3869604511;
146748
+ var IFCAPPROVALPROPERTYRELATIONSHIP = 390851274;
146366
146749
  var IFCAPPROVALACTORRELATIONSHIP = 2080292479;
146750
+ var IFCAPPROVAL = 130549933;
146367
146751
  var IFCAPPLIEDVALUERELATIONSHIP = 1110488051;
146752
+ var IFCAPPLIEDVALUE = 411424972;
146753
+ var IFCAPPLICATION = 639542469;
146754
+ var IFCADDRESS = 618182010;
146755
+ var IFCACTORROLE = 3630933823;
146368
146756
  var FILE_DESCRIPTION = 599546466;
146369
146757
  var FILE_NAME = 1390159747;
146370
146758
  var FILE_SCHEMA = 1109904537;
@@ -197679,7 +198067,19 @@ if (typeof self !== "undefined" && self.crossOriginIsolated) {
197679
198067
  }
197680
198068
  } else
197681
198069
  WebIFCWasm = require_web_ifc();
198070
+ var UNKNOWN = 0;
197682
198071
  var STRING = 1;
198072
+ var LABEL = 2;
198073
+ var ENUM = 3;
198074
+ var REAL = 4;
198075
+ var REF = 5;
198076
+ var EMPTY = 6;
198077
+ var SET_BEGIN = 7;
198078
+ var SET_END = 8;
198079
+ var LINE_END = 9;
198080
+ function ms() {
198081
+ return new Date().getTime();
198082
+ }
197683
198083
  var IfcAPI2 = class {
197684
198084
  constructor() {
197685
198085
  this.wasmModule = void 0;
@@ -198049,6 +198449,1177 @@ var IfcAPI2 = class {
198049
198449
  }
198050
198450
  };
198051
198451
 
198452
+ var WebIFC = /*#__PURE__*/Object.freeze({
198453
+ __proto__: null,
198454
+ Constructors: Constructors,
198455
+ EMPTY: EMPTY,
198456
+ ENUM: ENUM,
198457
+ FILE_DESCRIPTION: FILE_DESCRIPTION,
198458
+ FILE_NAME: FILE_NAME,
198459
+ FILE_SCHEMA: FILE_SCHEMA,
198460
+ FromRawLineData: FromRawLineData,
198461
+ Handle: Handle,
198462
+ IFC2DCOMPOSITECURVE: IFC2DCOMPOSITECURVE,
198463
+ get IFC2X3 () { return IFC2X3; },
198464
+ get IFC4 () { return IFC4; },
198465
+ get IFC4X3 () { return IFC4X3; },
198466
+ IFCABSORBEDDOSEMEASURE: IFCABSORBEDDOSEMEASURE,
198467
+ IFCACCELERATIONMEASURE: IFCACCELERATIONMEASURE,
198468
+ IFCACTIONREQUEST: IFCACTIONREQUEST,
198469
+ IFCACTOR: IFCACTOR,
198470
+ IFCACTORROLE: IFCACTORROLE,
198471
+ IFCACTUATOR: IFCACTUATOR,
198472
+ IFCACTUATORTYPE: IFCACTUATORTYPE,
198473
+ IFCADDRESS: IFCADDRESS,
198474
+ IFCADVANCEDBREP: IFCADVANCEDBREP,
198475
+ IFCADVANCEDBREPWITHVOIDS: IFCADVANCEDBREPWITHVOIDS,
198476
+ IFCADVANCEDFACE: IFCADVANCEDFACE,
198477
+ IFCAIRTERMINAL: IFCAIRTERMINAL,
198478
+ IFCAIRTERMINALBOX: IFCAIRTERMINALBOX,
198479
+ IFCAIRTERMINALBOXTYPE: IFCAIRTERMINALBOXTYPE,
198480
+ IFCAIRTERMINALTYPE: IFCAIRTERMINALTYPE,
198481
+ IFCAIRTOAIRHEATRECOVERY: IFCAIRTOAIRHEATRECOVERY,
198482
+ IFCAIRTOAIRHEATRECOVERYTYPE: IFCAIRTOAIRHEATRECOVERYTYPE,
198483
+ IFCALARM: IFCALARM,
198484
+ IFCALARMTYPE: IFCALARMTYPE,
198485
+ IFCALIGNMENT: IFCALIGNMENT,
198486
+ IFCALIGNMENTCANT: IFCALIGNMENTCANT,
198487
+ IFCALIGNMENTCANTSEGMENT: IFCALIGNMENTCANTSEGMENT,
198488
+ IFCALIGNMENTHORIZONTAL: IFCALIGNMENTHORIZONTAL,
198489
+ IFCALIGNMENTHORIZONTALSEGMENT: IFCALIGNMENTHORIZONTALSEGMENT,
198490
+ IFCALIGNMENTPARAMETERSEGMENT: IFCALIGNMENTPARAMETERSEGMENT,
198491
+ IFCALIGNMENTSEGMENT: IFCALIGNMENTSEGMENT,
198492
+ IFCALIGNMENTVERTICAL: IFCALIGNMENTVERTICAL,
198493
+ IFCALIGNMENTVERTICALSEGMENT: IFCALIGNMENTVERTICALSEGMENT,
198494
+ IFCAMOUNTOFSUBSTANCEMEASURE: IFCAMOUNTOFSUBSTANCEMEASURE,
198495
+ IFCANGULARDIMENSION: IFCANGULARDIMENSION,
198496
+ IFCANGULARVELOCITYMEASURE: IFCANGULARVELOCITYMEASURE,
198497
+ IFCANNOTATION: IFCANNOTATION,
198498
+ IFCANNOTATIONCURVEOCCURRENCE: IFCANNOTATIONCURVEOCCURRENCE,
198499
+ IFCANNOTATIONFILLAREA: IFCANNOTATIONFILLAREA,
198500
+ IFCANNOTATIONFILLAREAOCCURRENCE: IFCANNOTATIONFILLAREAOCCURRENCE,
198501
+ IFCANNOTATIONOCCURRENCE: IFCANNOTATIONOCCURRENCE,
198502
+ IFCANNOTATIONSURFACE: IFCANNOTATIONSURFACE,
198503
+ IFCANNOTATIONSURFACEOCCURRENCE: IFCANNOTATIONSURFACEOCCURRENCE,
198504
+ IFCANNOTATIONSYMBOLOCCURRENCE: IFCANNOTATIONSYMBOLOCCURRENCE,
198505
+ IFCANNOTATIONTEXTOCCURRENCE: IFCANNOTATIONTEXTOCCURRENCE,
198506
+ IFCAPPLICATION: IFCAPPLICATION,
198507
+ IFCAPPLIEDVALUE: IFCAPPLIEDVALUE,
198508
+ IFCAPPLIEDVALUERELATIONSHIP: IFCAPPLIEDVALUERELATIONSHIP,
198509
+ IFCAPPROVAL: IFCAPPROVAL,
198510
+ IFCAPPROVALACTORRELATIONSHIP: IFCAPPROVALACTORRELATIONSHIP,
198511
+ IFCAPPROVALPROPERTYRELATIONSHIP: IFCAPPROVALPROPERTYRELATIONSHIP,
198512
+ IFCAPPROVALRELATIONSHIP: IFCAPPROVALRELATIONSHIP,
198513
+ IFCARBITRARYCLOSEDPROFILEDEF: IFCARBITRARYCLOSEDPROFILEDEF,
198514
+ IFCARBITRARYOPENPROFILEDEF: IFCARBITRARYOPENPROFILEDEF,
198515
+ IFCARBITRARYPROFILEDEFWITHVOIDS: IFCARBITRARYPROFILEDEFWITHVOIDS,
198516
+ IFCARCINDEX: IFCARCINDEX,
198517
+ IFCAREADENSITYMEASURE: IFCAREADENSITYMEASURE,
198518
+ IFCAREAMEASURE: IFCAREAMEASURE,
198519
+ IFCASSET: IFCASSET,
198520
+ IFCASYMMETRICISHAPEPROFILEDEF: IFCASYMMETRICISHAPEPROFILEDEF,
198521
+ IFCAUDIOVISUALAPPLIANCE: IFCAUDIOVISUALAPPLIANCE,
198522
+ IFCAUDIOVISUALAPPLIANCETYPE: IFCAUDIOVISUALAPPLIANCETYPE,
198523
+ IFCAXIS1PLACEMENT: IFCAXIS1PLACEMENT,
198524
+ IFCAXIS2PLACEMENT2D: IFCAXIS2PLACEMENT2D,
198525
+ IFCAXIS2PLACEMENT3D: IFCAXIS2PLACEMENT3D,
198526
+ IFCAXIS2PLACEMENTLINEAR: IFCAXIS2PLACEMENTLINEAR,
198527
+ IFCBEAM: IFCBEAM,
198528
+ IFCBEAMSTANDARDCASE: IFCBEAMSTANDARDCASE,
198529
+ IFCBEAMTYPE: IFCBEAMTYPE,
198530
+ IFCBEARING: IFCBEARING,
198531
+ IFCBEARINGTYPE: IFCBEARINGTYPE,
198532
+ IFCBEZIERCURVE: IFCBEZIERCURVE,
198533
+ IFCBINARY: IFCBINARY,
198534
+ IFCBLOBTEXTURE: IFCBLOBTEXTURE,
198535
+ IFCBLOCK: IFCBLOCK,
198536
+ IFCBOILER: IFCBOILER,
198537
+ IFCBOILERTYPE: IFCBOILERTYPE,
198538
+ IFCBOOLEAN: IFCBOOLEAN,
198539
+ IFCBOOLEANCLIPPINGRESULT: IFCBOOLEANCLIPPINGRESULT,
198540
+ IFCBOOLEANRESULT: IFCBOOLEANRESULT,
198541
+ IFCBOREHOLE: IFCBOREHOLE,
198542
+ IFCBOUNDARYCONDITION: IFCBOUNDARYCONDITION,
198543
+ IFCBOUNDARYCURVE: IFCBOUNDARYCURVE,
198544
+ IFCBOUNDARYEDGECONDITION: IFCBOUNDARYEDGECONDITION,
198545
+ IFCBOUNDARYFACECONDITION: IFCBOUNDARYFACECONDITION,
198546
+ IFCBOUNDARYNODECONDITION: IFCBOUNDARYNODECONDITION,
198547
+ IFCBOUNDARYNODECONDITIONWARPING: IFCBOUNDARYNODECONDITIONWARPING,
198548
+ IFCBOUNDEDCURVE: IFCBOUNDEDCURVE,
198549
+ IFCBOUNDEDSURFACE: IFCBOUNDEDSURFACE,
198550
+ IFCBOUNDINGBOX: IFCBOUNDINGBOX,
198551
+ IFCBOXALIGNMENT: IFCBOXALIGNMENT,
198552
+ IFCBOXEDHALFSPACE: IFCBOXEDHALFSPACE,
198553
+ IFCBRIDGE: IFCBRIDGE,
198554
+ IFCBRIDGEPART: IFCBRIDGEPART,
198555
+ IFCBSPLINECURVE: IFCBSPLINECURVE,
198556
+ IFCBSPLINECURVEWITHKNOTS: IFCBSPLINECURVEWITHKNOTS,
198557
+ IFCBSPLINESURFACE: IFCBSPLINESURFACE,
198558
+ IFCBSPLINESURFACEWITHKNOTS: IFCBSPLINESURFACEWITHKNOTS,
198559
+ IFCBUILDING: IFCBUILDING,
198560
+ IFCBUILDINGELEMENT: IFCBUILDINGELEMENT,
198561
+ IFCBUILDINGELEMENTCOMPONENT: IFCBUILDINGELEMENTCOMPONENT,
198562
+ IFCBUILDINGELEMENTPART: IFCBUILDINGELEMENTPART,
198563
+ IFCBUILDINGELEMENTPARTTYPE: IFCBUILDINGELEMENTPARTTYPE,
198564
+ IFCBUILDINGELEMENTPROXY: IFCBUILDINGELEMENTPROXY,
198565
+ IFCBUILDINGELEMENTPROXYTYPE: IFCBUILDINGELEMENTPROXYTYPE,
198566
+ IFCBUILDINGELEMENTTYPE: IFCBUILDINGELEMENTTYPE,
198567
+ IFCBUILDINGSTOREY: IFCBUILDINGSTOREY,
198568
+ IFCBUILDINGSYSTEM: IFCBUILDINGSYSTEM,
198569
+ IFCBUILTELEMENT: IFCBUILTELEMENT,
198570
+ IFCBUILTELEMENTTYPE: IFCBUILTELEMENTTYPE,
198571
+ IFCBUILTSYSTEM: IFCBUILTSYSTEM,
198572
+ IFCBURNER: IFCBURNER,
198573
+ IFCBURNERTYPE: IFCBURNERTYPE,
198574
+ IFCCABLECARRIERFITTING: IFCCABLECARRIERFITTING,
198575
+ IFCCABLECARRIERFITTINGTYPE: IFCCABLECARRIERFITTINGTYPE,
198576
+ IFCCABLECARRIERSEGMENT: IFCCABLECARRIERSEGMENT,
198577
+ IFCCABLECARRIERSEGMENTTYPE: IFCCABLECARRIERSEGMENTTYPE,
198578
+ IFCCABLEFITTING: IFCCABLEFITTING,
198579
+ IFCCABLEFITTINGTYPE: IFCCABLEFITTINGTYPE,
198580
+ IFCCABLESEGMENT: IFCCABLESEGMENT,
198581
+ IFCCABLESEGMENTTYPE: IFCCABLESEGMENTTYPE,
198582
+ IFCCAISSONFOUNDATION: IFCCAISSONFOUNDATION,
198583
+ IFCCAISSONFOUNDATIONTYPE: IFCCAISSONFOUNDATIONTYPE,
198584
+ IFCCALENDARDATE: IFCCALENDARDATE,
198585
+ IFCCARDINALPOINTREFERENCE: IFCCARDINALPOINTREFERENCE,
198586
+ IFCCARTESIANPOINT: IFCCARTESIANPOINT,
198587
+ IFCCARTESIANPOINTLIST: IFCCARTESIANPOINTLIST,
198588
+ IFCCARTESIANPOINTLIST2D: IFCCARTESIANPOINTLIST2D,
198589
+ IFCCARTESIANPOINTLIST3D: IFCCARTESIANPOINTLIST3D,
198590
+ IFCCARTESIANTRANSFORMATIONOPERATOR: IFCCARTESIANTRANSFORMATIONOPERATOR,
198591
+ IFCCARTESIANTRANSFORMATIONOPERATOR2D: IFCCARTESIANTRANSFORMATIONOPERATOR2D,
198592
+ IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM: IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM,
198593
+ IFCCARTESIANTRANSFORMATIONOPERATOR3D: IFCCARTESIANTRANSFORMATIONOPERATOR3D,
198594
+ IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM: IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM,
198595
+ IFCCENTERLINEPROFILEDEF: IFCCENTERLINEPROFILEDEF,
198596
+ IFCCHAMFEREDGEFEATURE: IFCCHAMFEREDGEFEATURE,
198597
+ IFCCHILLER: IFCCHILLER,
198598
+ IFCCHILLERTYPE: IFCCHILLERTYPE,
198599
+ IFCCHIMNEY: IFCCHIMNEY,
198600
+ IFCCHIMNEYTYPE: IFCCHIMNEYTYPE,
198601
+ IFCCIRCLE: IFCCIRCLE,
198602
+ IFCCIRCLEHOLLOWPROFILEDEF: IFCCIRCLEHOLLOWPROFILEDEF,
198603
+ IFCCIRCLEPROFILEDEF: IFCCIRCLEPROFILEDEF,
198604
+ IFCCIVILELEMENT: IFCCIVILELEMENT,
198605
+ IFCCIVILELEMENTTYPE: IFCCIVILELEMENTTYPE,
198606
+ IFCCLASSIFICATION: IFCCLASSIFICATION,
198607
+ IFCCLASSIFICATIONITEM: IFCCLASSIFICATIONITEM,
198608
+ IFCCLASSIFICATIONITEMRELATIONSHIP: IFCCLASSIFICATIONITEMRELATIONSHIP,
198609
+ IFCCLASSIFICATIONNOTATION: IFCCLASSIFICATIONNOTATION,
198610
+ IFCCLASSIFICATIONNOTATIONFACET: IFCCLASSIFICATIONNOTATIONFACET,
198611
+ IFCCLASSIFICATIONREFERENCE: IFCCLASSIFICATIONREFERENCE,
198612
+ IFCCLOSEDSHELL: IFCCLOSEDSHELL,
198613
+ IFCCLOTHOID: IFCCLOTHOID,
198614
+ IFCCOIL: IFCCOIL,
198615
+ IFCCOILTYPE: IFCCOILTYPE,
198616
+ IFCCOLOURRGB: IFCCOLOURRGB,
198617
+ IFCCOLOURRGBLIST: IFCCOLOURRGBLIST,
198618
+ IFCCOLOURSPECIFICATION: IFCCOLOURSPECIFICATION,
198619
+ IFCCOLUMN: IFCCOLUMN,
198620
+ IFCCOLUMNSTANDARDCASE: IFCCOLUMNSTANDARDCASE,
198621
+ IFCCOLUMNTYPE: IFCCOLUMNTYPE,
198622
+ IFCCOMMUNICATIONSAPPLIANCE: IFCCOMMUNICATIONSAPPLIANCE,
198623
+ IFCCOMMUNICATIONSAPPLIANCETYPE: IFCCOMMUNICATIONSAPPLIANCETYPE,
198624
+ IFCCOMPLEXNUMBER: IFCCOMPLEXNUMBER,
198625
+ IFCCOMPLEXPROPERTY: IFCCOMPLEXPROPERTY,
198626
+ IFCCOMPLEXPROPERTYTEMPLATE: IFCCOMPLEXPROPERTYTEMPLATE,
198627
+ IFCCOMPOSITECURVE: IFCCOMPOSITECURVE,
198628
+ IFCCOMPOSITECURVEONSURFACE: IFCCOMPOSITECURVEONSURFACE,
198629
+ IFCCOMPOSITECURVESEGMENT: IFCCOMPOSITECURVESEGMENT,
198630
+ IFCCOMPOSITEPROFILEDEF: IFCCOMPOSITEPROFILEDEF,
198631
+ IFCCOMPOUNDPLANEANGLEMEASURE: IFCCOMPOUNDPLANEANGLEMEASURE,
198632
+ IFCCOMPRESSOR: IFCCOMPRESSOR,
198633
+ IFCCOMPRESSORTYPE: IFCCOMPRESSORTYPE,
198634
+ IFCCONDENSER: IFCCONDENSER,
198635
+ IFCCONDENSERTYPE: IFCCONDENSERTYPE,
198636
+ IFCCONDITION: IFCCONDITION,
198637
+ IFCCONDITIONCRITERION: IFCCONDITIONCRITERION,
198638
+ IFCCONIC: IFCCONIC,
198639
+ IFCCONNECTEDFACESET: IFCCONNECTEDFACESET,
198640
+ IFCCONNECTIONCURVEGEOMETRY: IFCCONNECTIONCURVEGEOMETRY,
198641
+ IFCCONNECTIONGEOMETRY: IFCCONNECTIONGEOMETRY,
198642
+ IFCCONNECTIONPOINTECCENTRICITY: IFCCONNECTIONPOINTECCENTRICITY,
198643
+ IFCCONNECTIONPOINTGEOMETRY: IFCCONNECTIONPOINTGEOMETRY,
198644
+ IFCCONNECTIONPORTGEOMETRY: IFCCONNECTIONPORTGEOMETRY,
198645
+ IFCCONNECTIONSURFACEGEOMETRY: IFCCONNECTIONSURFACEGEOMETRY,
198646
+ IFCCONNECTIONVOLUMEGEOMETRY: IFCCONNECTIONVOLUMEGEOMETRY,
198647
+ IFCCONSTRAINT: IFCCONSTRAINT,
198648
+ IFCCONSTRAINTAGGREGATIONRELATIONSHIP: IFCCONSTRAINTAGGREGATIONRELATIONSHIP,
198649
+ IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP: IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP,
198650
+ IFCCONSTRAINTRELATIONSHIP: IFCCONSTRAINTRELATIONSHIP,
198651
+ IFCCONSTRUCTIONEQUIPMENTRESOURCE: IFCCONSTRUCTIONEQUIPMENTRESOURCE,
198652
+ IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE: IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE,
198653
+ IFCCONSTRUCTIONMATERIALRESOURCE: IFCCONSTRUCTIONMATERIALRESOURCE,
198654
+ IFCCONSTRUCTIONMATERIALRESOURCETYPE: IFCCONSTRUCTIONMATERIALRESOURCETYPE,
198655
+ IFCCONSTRUCTIONPRODUCTRESOURCE: IFCCONSTRUCTIONPRODUCTRESOURCE,
198656
+ IFCCONSTRUCTIONPRODUCTRESOURCETYPE: IFCCONSTRUCTIONPRODUCTRESOURCETYPE,
198657
+ IFCCONSTRUCTIONRESOURCE: IFCCONSTRUCTIONRESOURCE,
198658
+ IFCCONSTRUCTIONRESOURCETYPE: IFCCONSTRUCTIONRESOURCETYPE,
198659
+ IFCCONTEXT: IFCCONTEXT,
198660
+ IFCCONTEXTDEPENDENTMEASURE: IFCCONTEXTDEPENDENTMEASURE,
198661
+ IFCCONTEXTDEPENDENTUNIT: IFCCONTEXTDEPENDENTUNIT,
198662
+ IFCCONTROL: IFCCONTROL,
198663
+ IFCCONTROLLER: IFCCONTROLLER,
198664
+ IFCCONTROLLERTYPE: IFCCONTROLLERTYPE,
198665
+ IFCCONVERSIONBASEDUNIT: IFCCONVERSIONBASEDUNIT,
198666
+ IFCCONVERSIONBASEDUNITWITHOFFSET: IFCCONVERSIONBASEDUNITWITHOFFSET,
198667
+ IFCCONVEYORSEGMENT: IFCCONVEYORSEGMENT,
198668
+ IFCCONVEYORSEGMENTTYPE: IFCCONVEYORSEGMENTTYPE,
198669
+ IFCCOOLEDBEAM: IFCCOOLEDBEAM,
198670
+ IFCCOOLEDBEAMTYPE: IFCCOOLEDBEAMTYPE,
198671
+ IFCCOOLINGTOWER: IFCCOOLINGTOWER,
198672
+ IFCCOOLINGTOWERTYPE: IFCCOOLINGTOWERTYPE,
198673
+ IFCCOORDINATEDUNIVERSALTIMEOFFSET: IFCCOORDINATEDUNIVERSALTIMEOFFSET,
198674
+ IFCCOORDINATEOPERATION: IFCCOORDINATEOPERATION,
198675
+ IFCCOORDINATEREFERENCESYSTEM: IFCCOORDINATEREFERENCESYSTEM,
198676
+ IFCCOSINESPIRAL: IFCCOSINESPIRAL,
198677
+ IFCCOSTITEM: IFCCOSTITEM,
198678
+ IFCCOSTSCHEDULE: IFCCOSTSCHEDULE,
198679
+ IFCCOSTVALUE: IFCCOSTVALUE,
198680
+ IFCCOUNTMEASURE: IFCCOUNTMEASURE,
198681
+ IFCCOURSE: IFCCOURSE,
198682
+ IFCCOURSETYPE: IFCCOURSETYPE,
198683
+ IFCCOVERING: IFCCOVERING,
198684
+ IFCCOVERINGTYPE: IFCCOVERINGTYPE,
198685
+ IFCCRANERAILASHAPEPROFILEDEF: IFCCRANERAILASHAPEPROFILEDEF,
198686
+ IFCCRANERAILFSHAPEPROFILEDEF: IFCCRANERAILFSHAPEPROFILEDEF,
198687
+ IFCCREWRESOURCE: IFCCREWRESOURCE,
198688
+ IFCCREWRESOURCETYPE: IFCCREWRESOURCETYPE,
198689
+ IFCCSGPRIMITIVE3D: IFCCSGPRIMITIVE3D,
198690
+ IFCCSGSOLID: IFCCSGSOLID,
198691
+ IFCCSHAPEPROFILEDEF: IFCCSHAPEPROFILEDEF,
198692
+ IFCCURRENCYRELATIONSHIP: IFCCURRENCYRELATIONSHIP,
198693
+ IFCCURTAINWALL: IFCCURTAINWALL,
198694
+ IFCCURTAINWALLTYPE: IFCCURTAINWALLTYPE,
198695
+ IFCCURVATUREMEASURE: IFCCURVATUREMEASURE,
198696
+ IFCCURVE: IFCCURVE,
198697
+ IFCCURVEBOUNDEDPLANE: IFCCURVEBOUNDEDPLANE,
198698
+ IFCCURVEBOUNDEDSURFACE: IFCCURVEBOUNDEDSURFACE,
198699
+ IFCCURVESEGMENT: IFCCURVESEGMENT,
198700
+ IFCCURVESTYLE: IFCCURVESTYLE,
198701
+ IFCCURVESTYLEFONT: IFCCURVESTYLEFONT,
198702
+ IFCCURVESTYLEFONTANDSCALING: IFCCURVESTYLEFONTANDSCALING,
198703
+ IFCCURVESTYLEFONTPATTERN: IFCCURVESTYLEFONTPATTERN,
198704
+ IFCCYLINDRICALSURFACE: IFCCYLINDRICALSURFACE,
198705
+ IFCDAMPER: IFCDAMPER,
198706
+ IFCDAMPERTYPE: IFCDAMPERTYPE,
198707
+ IFCDATE: IFCDATE,
198708
+ IFCDATEANDTIME: IFCDATEANDTIME,
198709
+ IFCDATETIME: IFCDATETIME,
198710
+ IFCDAYINMONTHNUMBER: IFCDAYINMONTHNUMBER,
198711
+ IFCDAYINWEEKNUMBER: IFCDAYINWEEKNUMBER,
198712
+ IFCDAYLIGHTSAVINGHOUR: IFCDAYLIGHTSAVINGHOUR,
198713
+ IFCDEEPFOUNDATION: IFCDEEPFOUNDATION,
198714
+ IFCDEEPFOUNDATIONTYPE: IFCDEEPFOUNDATIONTYPE,
198715
+ IFCDEFINEDSYMBOL: IFCDEFINEDSYMBOL,
198716
+ IFCDERIVEDPROFILEDEF: IFCDERIVEDPROFILEDEF,
198717
+ IFCDERIVEDUNIT: IFCDERIVEDUNIT,
198718
+ IFCDERIVEDUNITELEMENT: IFCDERIVEDUNITELEMENT,
198719
+ IFCDESCRIPTIVEMEASURE: IFCDESCRIPTIVEMEASURE,
198720
+ IFCDIAMETERDIMENSION: IFCDIAMETERDIMENSION,
198721
+ IFCDIMENSIONALEXPONENTS: IFCDIMENSIONALEXPONENTS,
198722
+ IFCDIMENSIONCALLOUTRELATIONSHIP: IFCDIMENSIONCALLOUTRELATIONSHIP,
198723
+ IFCDIMENSIONCOUNT: IFCDIMENSIONCOUNT,
198724
+ IFCDIMENSIONCURVE: IFCDIMENSIONCURVE,
198725
+ IFCDIMENSIONCURVEDIRECTEDCALLOUT: IFCDIMENSIONCURVEDIRECTEDCALLOUT,
198726
+ IFCDIMENSIONCURVETERMINATOR: IFCDIMENSIONCURVETERMINATOR,
198727
+ IFCDIMENSIONPAIR: IFCDIMENSIONPAIR,
198728
+ IFCDIRECTION: IFCDIRECTION,
198729
+ IFCDIRECTRIXCURVESWEPTAREASOLID: IFCDIRECTRIXCURVESWEPTAREASOLID,
198730
+ IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID: IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID,
198731
+ IFCDISCRETEACCESSORY: IFCDISCRETEACCESSORY,
198732
+ IFCDISCRETEACCESSORYTYPE: IFCDISCRETEACCESSORYTYPE,
198733
+ IFCDISTRIBUTIONBOARD: IFCDISTRIBUTIONBOARD,
198734
+ IFCDISTRIBUTIONBOARDTYPE: IFCDISTRIBUTIONBOARDTYPE,
198735
+ IFCDISTRIBUTIONCHAMBERELEMENT: IFCDISTRIBUTIONCHAMBERELEMENT,
198736
+ IFCDISTRIBUTIONCHAMBERELEMENTTYPE: IFCDISTRIBUTIONCHAMBERELEMENTTYPE,
198737
+ IFCDISTRIBUTIONCIRCUIT: IFCDISTRIBUTIONCIRCUIT,
198738
+ IFCDISTRIBUTIONCONTROLELEMENT: IFCDISTRIBUTIONCONTROLELEMENT,
198739
+ IFCDISTRIBUTIONCONTROLELEMENTTYPE: IFCDISTRIBUTIONCONTROLELEMENTTYPE,
198740
+ IFCDISTRIBUTIONELEMENT: IFCDISTRIBUTIONELEMENT,
198741
+ IFCDISTRIBUTIONELEMENTTYPE: IFCDISTRIBUTIONELEMENTTYPE,
198742
+ IFCDISTRIBUTIONFLOWELEMENT: IFCDISTRIBUTIONFLOWELEMENT,
198743
+ IFCDISTRIBUTIONFLOWELEMENTTYPE: IFCDISTRIBUTIONFLOWELEMENTTYPE,
198744
+ IFCDISTRIBUTIONPORT: IFCDISTRIBUTIONPORT,
198745
+ IFCDISTRIBUTIONSYSTEM: IFCDISTRIBUTIONSYSTEM,
198746
+ IFCDOCUMENTELECTRONICFORMAT: IFCDOCUMENTELECTRONICFORMAT,
198747
+ IFCDOCUMENTINFORMATION: IFCDOCUMENTINFORMATION,
198748
+ IFCDOCUMENTINFORMATIONRELATIONSHIP: IFCDOCUMENTINFORMATIONRELATIONSHIP,
198749
+ IFCDOCUMENTREFERENCE: IFCDOCUMENTREFERENCE,
198750
+ IFCDOOR: IFCDOOR,
198751
+ IFCDOORLININGPROPERTIES: IFCDOORLININGPROPERTIES,
198752
+ IFCDOORPANELPROPERTIES: IFCDOORPANELPROPERTIES,
198753
+ IFCDOORSTANDARDCASE: IFCDOORSTANDARDCASE,
198754
+ IFCDOORSTYLE: IFCDOORSTYLE,
198755
+ IFCDOORTYPE: IFCDOORTYPE,
198756
+ IFCDOSEEQUIVALENTMEASURE: IFCDOSEEQUIVALENTMEASURE,
198757
+ IFCDRAUGHTINGCALLOUT: IFCDRAUGHTINGCALLOUT,
198758
+ IFCDRAUGHTINGCALLOUTRELATIONSHIP: IFCDRAUGHTINGCALLOUTRELATIONSHIP,
198759
+ IFCDRAUGHTINGPREDEFINEDCOLOUR: IFCDRAUGHTINGPREDEFINEDCOLOUR,
198760
+ IFCDRAUGHTINGPREDEFINEDCURVEFONT: IFCDRAUGHTINGPREDEFINEDCURVEFONT,
198761
+ IFCDRAUGHTINGPREDEFINEDTEXTFONT: IFCDRAUGHTINGPREDEFINEDTEXTFONT,
198762
+ IFCDUCTFITTING: IFCDUCTFITTING,
198763
+ IFCDUCTFITTINGTYPE: IFCDUCTFITTINGTYPE,
198764
+ IFCDUCTSEGMENT: IFCDUCTSEGMENT,
198765
+ IFCDUCTSEGMENTTYPE: IFCDUCTSEGMENTTYPE,
198766
+ IFCDUCTSILENCER: IFCDUCTSILENCER,
198767
+ IFCDUCTSILENCERTYPE: IFCDUCTSILENCERTYPE,
198768
+ IFCDURATION: IFCDURATION,
198769
+ IFCDYNAMICVISCOSITYMEASURE: IFCDYNAMICVISCOSITYMEASURE,
198770
+ IFCEARTHWORKSCUT: IFCEARTHWORKSCUT,
198771
+ IFCEARTHWORKSELEMENT: IFCEARTHWORKSELEMENT,
198772
+ IFCEARTHWORKSFILL: IFCEARTHWORKSFILL,
198773
+ IFCEDGE: IFCEDGE,
198774
+ IFCEDGECURVE: IFCEDGECURVE,
198775
+ IFCEDGEFEATURE: IFCEDGEFEATURE,
198776
+ IFCEDGELOOP: IFCEDGELOOP,
198777
+ IFCELECTRICALBASEPROPERTIES: IFCELECTRICALBASEPROPERTIES,
198778
+ IFCELECTRICALCIRCUIT: IFCELECTRICALCIRCUIT,
198779
+ IFCELECTRICALELEMENT: IFCELECTRICALELEMENT,
198780
+ IFCELECTRICAPPLIANCE: IFCELECTRICAPPLIANCE,
198781
+ IFCELECTRICAPPLIANCETYPE: IFCELECTRICAPPLIANCETYPE,
198782
+ IFCELECTRICCAPACITANCEMEASURE: IFCELECTRICCAPACITANCEMEASURE,
198783
+ IFCELECTRICCHARGEMEASURE: IFCELECTRICCHARGEMEASURE,
198784
+ IFCELECTRICCONDUCTANCEMEASURE: IFCELECTRICCONDUCTANCEMEASURE,
198785
+ IFCELECTRICCURRENTMEASURE: IFCELECTRICCURRENTMEASURE,
198786
+ IFCELECTRICDISTRIBUTIONBOARD: IFCELECTRICDISTRIBUTIONBOARD,
198787
+ IFCELECTRICDISTRIBUTIONBOARDTYPE: IFCELECTRICDISTRIBUTIONBOARDTYPE,
198788
+ IFCELECTRICDISTRIBUTIONPOINT: IFCELECTRICDISTRIBUTIONPOINT,
198789
+ IFCELECTRICFLOWSTORAGEDEVICE: IFCELECTRICFLOWSTORAGEDEVICE,
198790
+ IFCELECTRICFLOWSTORAGEDEVICETYPE: IFCELECTRICFLOWSTORAGEDEVICETYPE,
198791
+ IFCELECTRICFLOWTREATMENTDEVICE: IFCELECTRICFLOWTREATMENTDEVICE,
198792
+ IFCELECTRICFLOWTREATMENTDEVICETYPE: IFCELECTRICFLOWTREATMENTDEVICETYPE,
198793
+ IFCELECTRICGENERATOR: IFCELECTRICGENERATOR,
198794
+ IFCELECTRICGENERATORTYPE: IFCELECTRICGENERATORTYPE,
198795
+ IFCELECTRICHEATERTYPE: IFCELECTRICHEATERTYPE,
198796
+ IFCELECTRICMOTOR: IFCELECTRICMOTOR,
198797
+ IFCELECTRICMOTORTYPE: IFCELECTRICMOTORTYPE,
198798
+ IFCELECTRICRESISTANCEMEASURE: IFCELECTRICRESISTANCEMEASURE,
198799
+ IFCELECTRICTIMECONTROL: IFCELECTRICTIMECONTROL,
198800
+ IFCELECTRICTIMECONTROLTYPE: IFCELECTRICTIMECONTROLTYPE,
198801
+ IFCELECTRICVOLTAGEMEASURE: IFCELECTRICVOLTAGEMEASURE,
198802
+ IFCELEMENT: IFCELEMENT,
198803
+ IFCELEMENTARYSURFACE: IFCELEMENTARYSURFACE,
198804
+ IFCELEMENTASSEMBLY: IFCELEMENTASSEMBLY,
198805
+ IFCELEMENTASSEMBLYTYPE: IFCELEMENTASSEMBLYTYPE,
198806
+ IFCELEMENTCOMPONENT: IFCELEMENTCOMPONENT,
198807
+ IFCELEMENTCOMPONENTTYPE: IFCELEMENTCOMPONENTTYPE,
198808
+ IFCELEMENTQUANTITY: IFCELEMENTQUANTITY,
198809
+ IFCELEMENTTYPE: IFCELEMENTTYPE,
198810
+ IFCELLIPSE: IFCELLIPSE,
198811
+ IFCELLIPSEPROFILEDEF: IFCELLIPSEPROFILEDEF,
198812
+ IFCENERGYCONVERSIONDEVICE: IFCENERGYCONVERSIONDEVICE,
198813
+ IFCENERGYCONVERSIONDEVICETYPE: IFCENERGYCONVERSIONDEVICETYPE,
198814
+ IFCENERGYMEASURE: IFCENERGYMEASURE,
198815
+ IFCENERGYPROPERTIES: IFCENERGYPROPERTIES,
198816
+ IFCENGINE: IFCENGINE,
198817
+ IFCENGINETYPE: IFCENGINETYPE,
198818
+ IFCENVIRONMENTALIMPACTVALUE: IFCENVIRONMENTALIMPACTVALUE,
198819
+ IFCEQUIPMENTELEMENT: IFCEQUIPMENTELEMENT,
198820
+ IFCEQUIPMENTSTANDARD: IFCEQUIPMENTSTANDARD,
198821
+ IFCEVAPORATIVECOOLER: IFCEVAPORATIVECOOLER,
198822
+ IFCEVAPORATIVECOOLERTYPE: IFCEVAPORATIVECOOLERTYPE,
198823
+ IFCEVAPORATOR: IFCEVAPORATOR,
198824
+ IFCEVAPORATORTYPE: IFCEVAPORATORTYPE,
198825
+ IFCEVENT: IFCEVENT,
198826
+ IFCEVENTTIME: IFCEVENTTIME,
198827
+ IFCEVENTTYPE: IFCEVENTTYPE,
198828
+ IFCEXTENDEDMATERIALPROPERTIES: IFCEXTENDEDMATERIALPROPERTIES,
198829
+ IFCEXTENDEDPROPERTIES: IFCEXTENDEDPROPERTIES,
198830
+ IFCEXTERNALINFORMATION: IFCEXTERNALINFORMATION,
198831
+ IFCEXTERNALLYDEFINEDHATCHSTYLE: IFCEXTERNALLYDEFINEDHATCHSTYLE,
198832
+ IFCEXTERNALLYDEFINEDSURFACESTYLE: IFCEXTERNALLYDEFINEDSURFACESTYLE,
198833
+ IFCEXTERNALLYDEFINEDSYMBOL: IFCEXTERNALLYDEFINEDSYMBOL,
198834
+ IFCEXTERNALLYDEFINEDTEXTFONT: IFCEXTERNALLYDEFINEDTEXTFONT,
198835
+ IFCEXTERNALREFERENCE: IFCEXTERNALREFERENCE,
198836
+ IFCEXTERNALREFERENCERELATIONSHIP: IFCEXTERNALREFERENCERELATIONSHIP,
198837
+ IFCEXTERNALSPATIALELEMENT: IFCEXTERNALSPATIALELEMENT,
198838
+ IFCEXTERNALSPATIALSTRUCTUREELEMENT: IFCEXTERNALSPATIALSTRUCTUREELEMENT,
198839
+ IFCEXTRUDEDAREASOLID: IFCEXTRUDEDAREASOLID,
198840
+ IFCEXTRUDEDAREASOLIDTAPERED: IFCEXTRUDEDAREASOLIDTAPERED,
198841
+ IFCFACE: IFCFACE,
198842
+ IFCFACEBASEDSURFACEMODEL: IFCFACEBASEDSURFACEMODEL,
198843
+ IFCFACEBOUND: IFCFACEBOUND,
198844
+ IFCFACEOUTERBOUND: IFCFACEOUTERBOUND,
198845
+ IFCFACESURFACE: IFCFACESURFACE,
198846
+ IFCFACETEDBREP: IFCFACETEDBREP,
198847
+ IFCFACETEDBREPWITHVOIDS: IFCFACETEDBREPWITHVOIDS,
198848
+ IFCFACILITY: IFCFACILITY,
198849
+ IFCFACILITYPART: IFCFACILITYPART,
198850
+ IFCFACILITYPARTCOMMON: IFCFACILITYPARTCOMMON,
198851
+ IFCFAILURECONNECTIONCONDITION: IFCFAILURECONNECTIONCONDITION,
198852
+ IFCFAN: IFCFAN,
198853
+ IFCFANTYPE: IFCFANTYPE,
198854
+ IFCFASTENER: IFCFASTENER,
198855
+ IFCFASTENERTYPE: IFCFASTENERTYPE,
198856
+ IFCFEATUREELEMENT: IFCFEATUREELEMENT,
198857
+ IFCFEATUREELEMENTADDITION: IFCFEATUREELEMENTADDITION,
198858
+ IFCFEATUREELEMENTSUBTRACTION: IFCFEATUREELEMENTSUBTRACTION,
198859
+ IFCFILLAREASTYLE: IFCFILLAREASTYLE,
198860
+ IFCFILLAREASTYLEHATCHING: IFCFILLAREASTYLEHATCHING,
198861
+ IFCFILLAREASTYLETILES: IFCFILLAREASTYLETILES,
198862
+ IFCFILLAREASTYLETILESYMBOLWITHSTYLE: IFCFILLAREASTYLETILESYMBOLWITHSTYLE,
198863
+ IFCFILTER: IFCFILTER,
198864
+ IFCFILTERTYPE: IFCFILTERTYPE,
198865
+ IFCFIRESUPPRESSIONTERMINAL: IFCFIRESUPPRESSIONTERMINAL,
198866
+ IFCFIRESUPPRESSIONTERMINALTYPE: IFCFIRESUPPRESSIONTERMINALTYPE,
198867
+ IFCFIXEDREFERENCESWEPTAREASOLID: IFCFIXEDREFERENCESWEPTAREASOLID,
198868
+ IFCFLOWCONTROLLER: IFCFLOWCONTROLLER,
198869
+ IFCFLOWCONTROLLERTYPE: IFCFLOWCONTROLLERTYPE,
198870
+ IFCFLOWFITTING: IFCFLOWFITTING,
198871
+ IFCFLOWFITTINGTYPE: IFCFLOWFITTINGTYPE,
198872
+ IFCFLOWINSTRUMENT: IFCFLOWINSTRUMENT,
198873
+ IFCFLOWINSTRUMENTTYPE: IFCFLOWINSTRUMENTTYPE,
198874
+ IFCFLOWMETER: IFCFLOWMETER,
198875
+ IFCFLOWMETERTYPE: IFCFLOWMETERTYPE,
198876
+ IFCFLOWMOVINGDEVICE: IFCFLOWMOVINGDEVICE,
198877
+ IFCFLOWMOVINGDEVICETYPE: IFCFLOWMOVINGDEVICETYPE,
198878
+ IFCFLOWSEGMENT: IFCFLOWSEGMENT,
198879
+ IFCFLOWSEGMENTTYPE: IFCFLOWSEGMENTTYPE,
198880
+ IFCFLOWSTORAGEDEVICE: IFCFLOWSTORAGEDEVICE,
198881
+ IFCFLOWSTORAGEDEVICETYPE: IFCFLOWSTORAGEDEVICETYPE,
198882
+ IFCFLOWTERMINAL: IFCFLOWTERMINAL,
198883
+ IFCFLOWTERMINALTYPE: IFCFLOWTERMINALTYPE,
198884
+ IFCFLOWTREATMENTDEVICE: IFCFLOWTREATMENTDEVICE,
198885
+ IFCFLOWTREATMENTDEVICETYPE: IFCFLOWTREATMENTDEVICETYPE,
198886
+ IFCFLUIDFLOWPROPERTIES: IFCFLUIDFLOWPROPERTIES,
198887
+ IFCFONTSTYLE: IFCFONTSTYLE,
198888
+ IFCFONTVARIANT: IFCFONTVARIANT,
198889
+ IFCFONTWEIGHT: IFCFONTWEIGHT,
198890
+ IFCFOOTING: IFCFOOTING,
198891
+ IFCFOOTINGTYPE: IFCFOOTINGTYPE,
198892
+ IFCFORCEMEASURE: IFCFORCEMEASURE,
198893
+ IFCFREQUENCYMEASURE: IFCFREQUENCYMEASURE,
198894
+ IFCFUELPROPERTIES: IFCFUELPROPERTIES,
198895
+ IFCFURNISHINGELEMENT: IFCFURNISHINGELEMENT,
198896
+ IFCFURNISHINGELEMENTTYPE: IFCFURNISHINGELEMENTTYPE,
198897
+ IFCFURNITURE: IFCFURNITURE,
198898
+ IFCFURNITURESTANDARD: IFCFURNITURESTANDARD,
198899
+ IFCFURNITURETYPE: IFCFURNITURETYPE,
198900
+ IFCGASTERMINALTYPE: IFCGASTERMINALTYPE,
198901
+ IFCGENERALMATERIALPROPERTIES: IFCGENERALMATERIALPROPERTIES,
198902
+ IFCGENERALPROFILEPROPERTIES: IFCGENERALPROFILEPROPERTIES,
198903
+ IFCGEOGRAPHICELEMENT: IFCGEOGRAPHICELEMENT,
198904
+ IFCGEOGRAPHICELEMENTTYPE: IFCGEOGRAPHICELEMENTTYPE,
198905
+ IFCGEOMETRICCURVESET: IFCGEOMETRICCURVESET,
198906
+ IFCGEOMETRICREPRESENTATIONCONTEXT: IFCGEOMETRICREPRESENTATIONCONTEXT,
198907
+ IFCGEOMETRICREPRESENTATIONITEM: IFCGEOMETRICREPRESENTATIONITEM,
198908
+ IFCGEOMETRICREPRESENTATIONSUBCONTEXT: IFCGEOMETRICREPRESENTATIONSUBCONTEXT,
198909
+ IFCGEOMETRICSET: IFCGEOMETRICSET,
198910
+ IFCGEOMODEL: IFCGEOMODEL,
198911
+ IFCGEOSLICE: IFCGEOSLICE,
198912
+ IFCGEOTECHNICALASSEMBLY: IFCGEOTECHNICALASSEMBLY,
198913
+ IFCGEOTECHNICALELEMENT: IFCGEOTECHNICALELEMENT,
198914
+ IFCGEOTECHNICALSTRATUM: IFCGEOTECHNICALSTRATUM,
198915
+ IFCGLOBALLYUNIQUEID: IFCGLOBALLYUNIQUEID,
198916
+ IFCGRADIENTCURVE: IFCGRADIENTCURVE,
198917
+ IFCGRID: IFCGRID,
198918
+ IFCGRIDAXIS: IFCGRIDAXIS,
198919
+ IFCGRIDPLACEMENT: IFCGRIDPLACEMENT,
198920
+ IFCGROUP: IFCGROUP,
198921
+ IFCHALFSPACESOLID: IFCHALFSPACESOLID,
198922
+ IFCHEATEXCHANGER: IFCHEATEXCHANGER,
198923
+ IFCHEATEXCHANGERTYPE: IFCHEATEXCHANGERTYPE,
198924
+ IFCHEATFLUXDENSITYMEASURE: IFCHEATFLUXDENSITYMEASURE,
198925
+ IFCHEATINGVALUEMEASURE: IFCHEATINGVALUEMEASURE,
198926
+ IFCHOURINDAY: IFCHOURINDAY,
198927
+ IFCHUMIDIFIER: IFCHUMIDIFIER,
198928
+ IFCHUMIDIFIERTYPE: IFCHUMIDIFIERTYPE,
198929
+ IFCHYGROSCOPICMATERIALPROPERTIES: IFCHYGROSCOPICMATERIALPROPERTIES,
198930
+ IFCIDENTIFIER: IFCIDENTIFIER,
198931
+ IFCILLUMINANCEMEASURE: IFCILLUMINANCEMEASURE,
198932
+ IFCIMAGETEXTURE: IFCIMAGETEXTURE,
198933
+ IFCIMPACTPROTECTIONDEVICE: IFCIMPACTPROTECTIONDEVICE,
198934
+ IFCIMPACTPROTECTIONDEVICETYPE: IFCIMPACTPROTECTIONDEVICETYPE,
198935
+ IFCINDEXEDCOLOURMAP: IFCINDEXEDCOLOURMAP,
198936
+ IFCINDEXEDPOLYCURVE: IFCINDEXEDPOLYCURVE,
198937
+ IFCINDEXEDPOLYGONALFACE: IFCINDEXEDPOLYGONALFACE,
198938
+ IFCINDEXEDPOLYGONALFACEWITHVOIDS: IFCINDEXEDPOLYGONALFACEWITHVOIDS,
198939
+ IFCINDEXEDPOLYGONALTEXTUREMAP: IFCINDEXEDPOLYGONALTEXTUREMAP,
198940
+ IFCINDEXEDTEXTUREMAP: IFCINDEXEDTEXTUREMAP,
198941
+ IFCINDEXEDTRIANGLETEXTUREMAP: IFCINDEXEDTRIANGLETEXTUREMAP,
198942
+ IFCINDUCTANCEMEASURE: IFCINDUCTANCEMEASURE,
198943
+ IFCINTEGER: IFCINTEGER,
198944
+ IFCINTEGERCOUNTRATEMEASURE: IFCINTEGERCOUNTRATEMEASURE,
198945
+ IFCINTERCEPTOR: IFCINTERCEPTOR,
198946
+ IFCINTERCEPTORTYPE: IFCINTERCEPTORTYPE,
198947
+ IFCINTERSECTIONCURVE: IFCINTERSECTIONCURVE,
198948
+ IFCINVENTORY: IFCINVENTORY,
198949
+ IFCIONCONCENTRATIONMEASURE: IFCIONCONCENTRATIONMEASURE,
198950
+ IFCIRREGULARTIMESERIES: IFCIRREGULARTIMESERIES,
198951
+ IFCIRREGULARTIMESERIESVALUE: IFCIRREGULARTIMESERIESVALUE,
198952
+ IFCISHAPEPROFILEDEF: IFCISHAPEPROFILEDEF,
198953
+ IFCISOTHERMALMOISTURECAPACITYMEASURE: IFCISOTHERMALMOISTURECAPACITYMEASURE,
198954
+ IFCJUNCTIONBOX: IFCJUNCTIONBOX,
198955
+ IFCJUNCTIONBOXTYPE: IFCJUNCTIONBOXTYPE,
198956
+ IFCKERB: IFCKERB,
198957
+ IFCKERBTYPE: IFCKERBTYPE,
198958
+ IFCKINEMATICVISCOSITYMEASURE: IFCKINEMATICVISCOSITYMEASURE,
198959
+ IFCLABEL: IFCLABEL,
198960
+ IFCLABORRESOURCE: IFCLABORRESOURCE,
198961
+ IFCLABORRESOURCETYPE: IFCLABORRESOURCETYPE,
198962
+ IFCLAGTIME: IFCLAGTIME,
198963
+ IFCLAMP: IFCLAMP,
198964
+ IFCLAMPTYPE: IFCLAMPTYPE,
198965
+ IFCLANGUAGEID: IFCLANGUAGEID,
198966
+ IFCLENGTHMEASURE: IFCLENGTHMEASURE,
198967
+ IFCLIBRARYINFORMATION: IFCLIBRARYINFORMATION,
198968
+ IFCLIBRARYREFERENCE: IFCLIBRARYREFERENCE,
198969
+ IFCLIGHTDISTRIBUTIONDATA: IFCLIGHTDISTRIBUTIONDATA,
198970
+ IFCLIGHTFIXTURE: IFCLIGHTFIXTURE,
198971
+ IFCLIGHTFIXTURETYPE: IFCLIGHTFIXTURETYPE,
198972
+ IFCLIGHTINTENSITYDISTRIBUTION: IFCLIGHTINTENSITYDISTRIBUTION,
198973
+ IFCLIGHTSOURCE: IFCLIGHTSOURCE,
198974
+ IFCLIGHTSOURCEAMBIENT: IFCLIGHTSOURCEAMBIENT,
198975
+ IFCLIGHTSOURCEDIRECTIONAL: IFCLIGHTSOURCEDIRECTIONAL,
198976
+ IFCLIGHTSOURCEGONIOMETRIC: IFCLIGHTSOURCEGONIOMETRIC,
198977
+ IFCLIGHTSOURCEPOSITIONAL: IFCLIGHTSOURCEPOSITIONAL,
198978
+ IFCLIGHTSOURCESPOT: IFCLIGHTSOURCESPOT,
198979
+ IFCLINE: IFCLINE,
198980
+ IFCLINEARDIMENSION: IFCLINEARDIMENSION,
198981
+ IFCLINEARELEMENT: IFCLINEARELEMENT,
198982
+ IFCLINEARFORCEMEASURE: IFCLINEARFORCEMEASURE,
198983
+ IFCLINEARMOMENTMEASURE: IFCLINEARMOMENTMEASURE,
198984
+ IFCLINEARPLACEMENT: IFCLINEARPLACEMENT,
198985
+ IFCLINEARPOSITIONINGELEMENT: IFCLINEARPOSITIONINGELEMENT,
198986
+ IFCLINEARSTIFFNESSMEASURE: IFCLINEARSTIFFNESSMEASURE,
198987
+ IFCLINEARVELOCITYMEASURE: IFCLINEARVELOCITYMEASURE,
198988
+ IFCLINEINDEX: IFCLINEINDEX,
198989
+ IFCLIQUIDTERMINAL: IFCLIQUIDTERMINAL,
198990
+ IFCLIQUIDTERMINALTYPE: IFCLIQUIDTERMINALTYPE,
198991
+ IFCLOCALPLACEMENT: IFCLOCALPLACEMENT,
198992
+ IFCLOCALTIME: IFCLOCALTIME,
198993
+ IFCLOGICAL: IFCLOGICAL,
198994
+ IFCLOOP: IFCLOOP,
198995
+ IFCLSHAPEPROFILEDEF: IFCLSHAPEPROFILEDEF,
198996
+ IFCLUMINOUSFLUXMEASURE: IFCLUMINOUSFLUXMEASURE,
198997
+ IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE: IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE,
198998
+ IFCLUMINOUSINTENSITYMEASURE: IFCLUMINOUSINTENSITYMEASURE,
198999
+ IFCMAGNETICFLUXDENSITYMEASURE: IFCMAGNETICFLUXDENSITYMEASURE,
199000
+ IFCMAGNETICFLUXMEASURE: IFCMAGNETICFLUXMEASURE,
199001
+ IFCMANIFOLDSOLIDBREP: IFCMANIFOLDSOLIDBREP,
199002
+ IFCMAPCONVERSION: IFCMAPCONVERSION,
199003
+ IFCMAPPEDITEM: IFCMAPPEDITEM,
199004
+ IFCMARINEFACILITY: IFCMARINEFACILITY,
199005
+ IFCMARINEPART: IFCMARINEPART,
199006
+ IFCMASSDENSITYMEASURE: IFCMASSDENSITYMEASURE,
199007
+ IFCMASSFLOWRATEMEASURE: IFCMASSFLOWRATEMEASURE,
199008
+ IFCMASSMEASURE: IFCMASSMEASURE,
199009
+ IFCMASSPERLENGTHMEASURE: IFCMASSPERLENGTHMEASURE,
199010
+ IFCMATERIAL: IFCMATERIAL,
199011
+ IFCMATERIALCLASSIFICATIONRELATIONSHIP: IFCMATERIALCLASSIFICATIONRELATIONSHIP,
199012
+ IFCMATERIALCONSTITUENT: IFCMATERIALCONSTITUENT,
199013
+ IFCMATERIALCONSTITUENTSET: IFCMATERIALCONSTITUENTSET,
199014
+ IFCMATERIALDEFINITION: IFCMATERIALDEFINITION,
199015
+ IFCMATERIALDEFINITIONREPRESENTATION: IFCMATERIALDEFINITIONREPRESENTATION,
199016
+ IFCMATERIALLAYER: IFCMATERIALLAYER,
199017
+ IFCMATERIALLAYERSET: IFCMATERIALLAYERSET,
199018
+ IFCMATERIALLAYERSETUSAGE: IFCMATERIALLAYERSETUSAGE,
199019
+ IFCMATERIALLAYERWITHOFFSETS: IFCMATERIALLAYERWITHOFFSETS,
199020
+ IFCMATERIALLIST: IFCMATERIALLIST,
199021
+ IFCMATERIALPROFILE: IFCMATERIALPROFILE,
199022
+ IFCMATERIALPROFILESET: IFCMATERIALPROFILESET,
199023
+ IFCMATERIALPROFILESETUSAGE: IFCMATERIALPROFILESETUSAGE,
199024
+ IFCMATERIALPROFILESETUSAGETAPERING: IFCMATERIALPROFILESETUSAGETAPERING,
199025
+ IFCMATERIALPROFILEWITHOFFSETS: IFCMATERIALPROFILEWITHOFFSETS,
199026
+ IFCMATERIALPROPERTIES: IFCMATERIALPROPERTIES,
199027
+ IFCMATERIALRELATIONSHIP: IFCMATERIALRELATIONSHIP,
199028
+ IFCMATERIALUSAGEDEFINITION: IFCMATERIALUSAGEDEFINITION,
199029
+ IFCMEASUREWITHUNIT: IFCMEASUREWITHUNIT,
199030
+ IFCMECHANICALCONCRETEMATERIALPROPERTIES: IFCMECHANICALCONCRETEMATERIALPROPERTIES,
199031
+ IFCMECHANICALFASTENER: IFCMECHANICALFASTENER,
199032
+ IFCMECHANICALFASTENERTYPE: IFCMECHANICALFASTENERTYPE,
199033
+ IFCMECHANICALMATERIALPROPERTIES: IFCMECHANICALMATERIALPROPERTIES,
199034
+ IFCMECHANICALSTEELMATERIALPROPERTIES: IFCMECHANICALSTEELMATERIALPROPERTIES,
199035
+ IFCMEDICALDEVICE: IFCMEDICALDEVICE,
199036
+ IFCMEDICALDEVICETYPE: IFCMEDICALDEVICETYPE,
199037
+ IFCMEMBER: IFCMEMBER,
199038
+ IFCMEMBERSTANDARDCASE: IFCMEMBERSTANDARDCASE,
199039
+ IFCMEMBERTYPE: IFCMEMBERTYPE,
199040
+ IFCMETRIC: IFCMETRIC,
199041
+ IFCMINUTEINHOUR: IFCMINUTEINHOUR,
199042
+ IFCMIRROREDPROFILEDEF: IFCMIRROREDPROFILEDEF,
199043
+ IFCMOBILETELECOMMUNICATIONSAPPLIANCE: IFCMOBILETELECOMMUNICATIONSAPPLIANCE,
199044
+ IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE: IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE,
199045
+ IFCMODULUSOFELASTICITYMEASURE: IFCMODULUSOFELASTICITYMEASURE,
199046
+ IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE: IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE,
199047
+ IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE: IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE,
199048
+ IFCMODULUSOFSUBGRADEREACTIONMEASURE: IFCMODULUSOFSUBGRADEREACTIONMEASURE,
199049
+ IFCMOISTUREDIFFUSIVITYMEASURE: IFCMOISTUREDIFFUSIVITYMEASURE,
199050
+ IFCMOLECULARWEIGHTMEASURE: IFCMOLECULARWEIGHTMEASURE,
199051
+ IFCMOMENTOFINERTIAMEASURE: IFCMOMENTOFINERTIAMEASURE,
199052
+ IFCMONETARYMEASURE: IFCMONETARYMEASURE,
199053
+ IFCMONETARYUNIT: IFCMONETARYUNIT,
199054
+ IFCMONTHINYEARNUMBER: IFCMONTHINYEARNUMBER,
199055
+ IFCMOORINGDEVICE: IFCMOORINGDEVICE,
199056
+ IFCMOORINGDEVICETYPE: IFCMOORINGDEVICETYPE,
199057
+ IFCMOTORCONNECTION: IFCMOTORCONNECTION,
199058
+ IFCMOTORCONNECTIONTYPE: IFCMOTORCONNECTIONTYPE,
199059
+ IFCMOVE: IFCMOVE,
199060
+ IFCNAMEDUNIT: IFCNAMEDUNIT,
199061
+ IFCNAVIGATIONELEMENT: IFCNAVIGATIONELEMENT,
199062
+ IFCNAVIGATIONELEMENTTYPE: IFCNAVIGATIONELEMENTTYPE,
199063
+ IFCNONNEGATIVELENGTHMEASURE: IFCNONNEGATIVELENGTHMEASURE,
199064
+ IFCNORMALISEDRATIOMEASURE: IFCNORMALISEDRATIOMEASURE,
199065
+ IFCNUMERICMEASURE: IFCNUMERICMEASURE,
199066
+ IFCOBJECT: IFCOBJECT,
199067
+ IFCOBJECTDEFINITION: IFCOBJECTDEFINITION,
199068
+ IFCOBJECTIVE: IFCOBJECTIVE,
199069
+ IFCOBJECTPLACEMENT: IFCOBJECTPLACEMENT,
199070
+ IFCOCCUPANT: IFCOCCUPANT,
199071
+ IFCOFFSETCURVE: IFCOFFSETCURVE,
199072
+ IFCOFFSETCURVE2D: IFCOFFSETCURVE2D,
199073
+ IFCOFFSETCURVE3D: IFCOFFSETCURVE3D,
199074
+ IFCOFFSETCURVEBYDISTANCES: IFCOFFSETCURVEBYDISTANCES,
199075
+ IFCONEDIRECTIONREPEATFACTOR: IFCONEDIRECTIONREPEATFACTOR,
199076
+ IFCOPENCROSSPROFILEDEF: IFCOPENCROSSPROFILEDEF,
199077
+ IFCOPENINGELEMENT: IFCOPENINGELEMENT,
199078
+ IFCOPENINGSTANDARDCASE: IFCOPENINGSTANDARDCASE,
199079
+ IFCOPENSHELL: IFCOPENSHELL,
199080
+ IFCOPTICALMATERIALPROPERTIES: IFCOPTICALMATERIALPROPERTIES,
199081
+ IFCORDERACTION: IFCORDERACTION,
199082
+ IFCORGANIZATION: IFCORGANIZATION,
199083
+ IFCORGANIZATIONRELATIONSHIP: IFCORGANIZATIONRELATIONSHIP,
199084
+ IFCORIENTEDEDGE: IFCORIENTEDEDGE,
199085
+ IFCOUTERBOUNDARYCURVE: IFCOUTERBOUNDARYCURVE,
199086
+ IFCOUTLET: IFCOUTLET,
199087
+ IFCOUTLETTYPE: IFCOUTLETTYPE,
199088
+ IFCOWNERHISTORY: IFCOWNERHISTORY,
199089
+ IFCPARAMETERIZEDPROFILEDEF: IFCPARAMETERIZEDPROFILEDEF,
199090
+ IFCPARAMETERVALUE: IFCPARAMETERVALUE,
199091
+ IFCPATH: IFCPATH,
199092
+ IFCPAVEMENT: IFCPAVEMENT,
199093
+ IFCPAVEMENTTYPE: IFCPAVEMENTTYPE,
199094
+ IFCPCURVE: IFCPCURVE,
199095
+ IFCPERFORMANCEHISTORY: IFCPERFORMANCEHISTORY,
199096
+ IFCPERMEABLECOVERINGPROPERTIES: IFCPERMEABLECOVERINGPROPERTIES,
199097
+ IFCPERMIT: IFCPERMIT,
199098
+ IFCPERSON: IFCPERSON,
199099
+ IFCPERSONANDORGANIZATION: IFCPERSONANDORGANIZATION,
199100
+ IFCPHMEASURE: IFCPHMEASURE,
199101
+ IFCPHYSICALCOMPLEXQUANTITY: IFCPHYSICALCOMPLEXQUANTITY,
199102
+ IFCPHYSICALQUANTITY: IFCPHYSICALQUANTITY,
199103
+ IFCPHYSICALSIMPLEQUANTITY: IFCPHYSICALSIMPLEQUANTITY,
199104
+ IFCPILE: IFCPILE,
199105
+ IFCPILETYPE: IFCPILETYPE,
199106
+ IFCPIPEFITTING: IFCPIPEFITTING,
199107
+ IFCPIPEFITTINGTYPE: IFCPIPEFITTINGTYPE,
199108
+ IFCPIPESEGMENT: IFCPIPESEGMENT,
199109
+ IFCPIPESEGMENTTYPE: IFCPIPESEGMENTTYPE,
199110
+ IFCPIXELTEXTURE: IFCPIXELTEXTURE,
199111
+ IFCPLACEMENT: IFCPLACEMENT,
199112
+ IFCPLANARBOX: IFCPLANARBOX,
199113
+ IFCPLANAREXTENT: IFCPLANAREXTENT,
199114
+ IFCPLANARFORCEMEASURE: IFCPLANARFORCEMEASURE,
199115
+ IFCPLANE: IFCPLANE,
199116
+ IFCPLANEANGLEMEASURE: IFCPLANEANGLEMEASURE,
199117
+ IFCPLATE: IFCPLATE,
199118
+ IFCPLATESTANDARDCASE: IFCPLATESTANDARDCASE,
199119
+ IFCPLATETYPE: IFCPLATETYPE,
199120
+ IFCPOINT: IFCPOINT,
199121
+ IFCPOINTBYDISTANCEEXPRESSION: IFCPOINTBYDISTANCEEXPRESSION,
199122
+ IFCPOINTONCURVE: IFCPOINTONCURVE,
199123
+ IFCPOINTONSURFACE: IFCPOINTONSURFACE,
199124
+ IFCPOLYGONALBOUNDEDHALFSPACE: IFCPOLYGONALBOUNDEDHALFSPACE,
199125
+ IFCPOLYGONALFACESET: IFCPOLYGONALFACESET,
199126
+ IFCPOLYLINE: IFCPOLYLINE,
199127
+ IFCPOLYLOOP: IFCPOLYLOOP,
199128
+ IFCPOLYNOMIALCURVE: IFCPOLYNOMIALCURVE,
199129
+ IFCPORT: IFCPORT,
199130
+ IFCPOSITIONINGELEMENT: IFCPOSITIONINGELEMENT,
199131
+ IFCPOSITIVEINTEGER: IFCPOSITIVEINTEGER,
199132
+ IFCPOSITIVELENGTHMEASURE: IFCPOSITIVELENGTHMEASURE,
199133
+ IFCPOSITIVEPLANEANGLEMEASURE: IFCPOSITIVEPLANEANGLEMEASURE,
199134
+ IFCPOSITIVERATIOMEASURE: IFCPOSITIVERATIOMEASURE,
199135
+ IFCPOSTALADDRESS: IFCPOSTALADDRESS,
199136
+ IFCPOWERMEASURE: IFCPOWERMEASURE,
199137
+ IFCPREDEFINEDCOLOUR: IFCPREDEFINEDCOLOUR,
199138
+ IFCPREDEFINEDCURVEFONT: IFCPREDEFINEDCURVEFONT,
199139
+ IFCPREDEFINEDDIMENSIONSYMBOL: IFCPREDEFINEDDIMENSIONSYMBOL,
199140
+ IFCPREDEFINEDITEM: IFCPREDEFINEDITEM,
199141
+ IFCPREDEFINEDPOINTMARKERSYMBOL: IFCPREDEFINEDPOINTMARKERSYMBOL,
199142
+ IFCPREDEFINEDPROPERTIES: IFCPREDEFINEDPROPERTIES,
199143
+ IFCPREDEFINEDPROPERTYSET: IFCPREDEFINEDPROPERTYSET,
199144
+ IFCPREDEFINEDSYMBOL: IFCPREDEFINEDSYMBOL,
199145
+ IFCPREDEFINEDTERMINATORSYMBOL: IFCPREDEFINEDTERMINATORSYMBOL,
199146
+ IFCPREDEFINEDTEXTFONT: IFCPREDEFINEDTEXTFONT,
199147
+ IFCPRESENTABLETEXT: IFCPRESENTABLETEXT,
199148
+ IFCPRESENTATIONITEM: IFCPRESENTATIONITEM,
199149
+ IFCPRESENTATIONLAYERASSIGNMENT: IFCPRESENTATIONLAYERASSIGNMENT,
199150
+ IFCPRESENTATIONLAYERWITHSTYLE: IFCPRESENTATIONLAYERWITHSTYLE,
199151
+ IFCPRESENTATIONSTYLE: IFCPRESENTATIONSTYLE,
199152
+ IFCPRESENTATIONSTYLEASSIGNMENT: IFCPRESENTATIONSTYLEASSIGNMENT,
199153
+ IFCPRESSUREMEASURE: IFCPRESSUREMEASURE,
199154
+ IFCPROCEDURE: IFCPROCEDURE,
199155
+ IFCPROCEDURETYPE: IFCPROCEDURETYPE,
199156
+ IFCPROCESS: IFCPROCESS,
199157
+ IFCPRODUCT: IFCPRODUCT,
199158
+ IFCPRODUCTDEFINITIONSHAPE: IFCPRODUCTDEFINITIONSHAPE,
199159
+ IFCPRODUCTREPRESENTATION: IFCPRODUCTREPRESENTATION,
199160
+ IFCPRODUCTSOFCOMBUSTIONPROPERTIES: IFCPRODUCTSOFCOMBUSTIONPROPERTIES,
199161
+ IFCPROFILEDEF: IFCPROFILEDEF,
199162
+ IFCPROFILEPROPERTIES: IFCPROFILEPROPERTIES,
199163
+ IFCPROJECT: IFCPROJECT,
199164
+ IFCPROJECTEDCRS: IFCPROJECTEDCRS,
199165
+ IFCPROJECTIONCURVE: IFCPROJECTIONCURVE,
199166
+ IFCPROJECTIONELEMENT: IFCPROJECTIONELEMENT,
199167
+ IFCPROJECTLIBRARY: IFCPROJECTLIBRARY,
199168
+ IFCPROJECTORDER: IFCPROJECTORDER,
199169
+ IFCPROJECTORDERRECORD: IFCPROJECTORDERRECORD,
199170
+ IFCPROPERTY: IFCPROPERTY,
199171
+ IFCPROPERTYABSTRACTION: IFCPROPERTYABSTRACTION,
199172
+ IFCPROPERTYBOUNDEDVALUE: IFCPROPERTYBOUNDEDVALUE,
199173
+ IFCPROPERTYCONSTRAINTRELATIONSHIP: IFCPROPERTYCONSTRAINTRELATIONSHIP,
199174
+ IFCPROPERTYDEFINITION: IFCPROPERTYDEFINITION,
199175
+ IFCPROPERTYDEPENDENCYRELATIONSHIP: IFCPROPERTYDEPENDENCYRELATIONSHIP,
199176
+ IFCPROPERTYENUMERATEDVALUE: IFCPROPERTYENUMERATEDVALUE,
199177
+ IFCPROPERTYENUMERATION: IFCPROPERTYENUMERATION,
199178
+ IFCPROPERTYLISTVALUE: IFCPROPERTYLISTVALUE,
199179
+ IFCPROPERTYREFERENCEVALUE: IFCPROPERTYREFERENCEVALUE,
199180
+ IFCPROPERTYSET: IFCPROPERTYSET,
199181
+ IFCPROPERTYSETDEFINITION: IFCPROPERTYSETDEFINITION,
199182
+ IFCPROPERTYSETDEFINITIONSET: IFCPROPERTYSETDEFINITIONSET,
199183
+ IFCPROPERTYSETTEMPLATE: IFCPROPERTYSETTEMPLATE,
199184
+ IFCPROPERTYSINGLEVALUE: IFCPROPERTYSINGLEVALUE,
199185
+ IFCPROPERTYTABLEVALUE: IFCPROPERTYTABLEVALUE,
199186
+ IFCPROPERTYTEMPLATE: IFCPROPERTYTEMPLATE,
199187
+ IFCPROPERTYTEMPLATEDEFINITION: IFCPROPERTYTEMPLATEDEFINITION,
199188
+ IFCPROTECTIVEDEVICE: IFCPROTECTIVEDEVICE,
199189
+ IFCPROTECTIVEDEVICETRIPPINGUNIT: IFCPROTECTIVEDEVICETRIPPINGUNIT,
199190
+ IFCPROTECTIVEDEVICETRIPPINGUNITTYPE: IFCPROTECTIVEDEVICETRIPPINGUNITTYPE,
199191
+ IFCPROTECTIVEDEVICETYPE: IFCPROTECTIVEDEVICETYPE,
199192
+ IFCPROXY: IFCPROXY,
199193
+ IFCPUMP: IFCPUMP,
199194
+ IFCPUMPTYPE: IFCPUMPTYPE,
199195
+ IFCQUANTITYAREA: IFCQUANTITYAREA,
199196
+ IFCQUANTITYCOUNT: IFCQUANTITYCOUNT,
199197
+ IFCQUANTITYLENGTH: IFCQUANTITYLENGTH,
199198
+ IFCQUANTITYNUMBER: IFCQUANTITYNUMBER,
199199
+ IFCQUANTITYSET: IFCQUANTITYSET,
199200
+ IFCQUANTITYTIME: IFCQUANTITYTIME,
199201
+ IFCQUANTITYVOLUME: IFCQUANTITYVOLUME,
199202
+ IFCQUANTITYWEIGHT: IFCQUANTITYWEIGHT,
199203
+ IFCRADIOACTIVITYMEASURE: IFCRADIOACTIVITYMEASURE,
199204
+ IFCRADIUSDIMENSION: IFCRADIUSDIMENSION,
199205
+ IFCRAIL: IFCRAIL,
199206
+ IFCRAILING: IFCRAILING,
199207
+ IFCRAILINGTYPE: IFCRAILINGTYPE,
199208
+ IFCRAILTYPE: IFCRAILTYPE,
199209
+ IFCRAILWAY: IFCRAILWAY,
199210
+ IFCRAILWAYPART: IFCRAILWAYPART,
199211
+ IFCRAMP: IFCRAMP,
199212
+ IFCRAMPFLIGHT: IFCRAMPFLIGHT,
199213
+ IFCRAMPFLIGHTTYPE: IFCRAMPFLIGHTTYPE,
199214
+ IFCRAMPTYPE: IFCRAMPTYPE,
199215
+ IFCRATIOMEASURE: IFCRATIOMEASURE,
199216
+ IFCRATIONALBEZIERCURVE: IFCRATIONALBEZIERCURVE,
199217
+ IFCRATIONALBSPLINECURVEWITHKNOTS: IFCRATIONALBSPLINECURVEWITHKNOTS,
199218
+ IFCRATIONALBSPLINESURFACEWITHKNOTS: IFCRATIONALBSPLINESURFACEWITHKNOTS,
199219
+ IFCREAL: IFCREAL,
199220
+ IFCRECTANGLEHOLLOWPROFILEDEF: IFCRECTANGLEHOLLOWPROFILEDEF,
199221
+ IFCRECTANGLEPROFILEDEF: IFCRECTANGLEPROFILEDEF,
199222
+ IFCRECTANGULARPYRAMID: IFCRECTANGULARPYRAMID,
199223
+ IFCRECTANGULARTRIMMEDSURFACE: IFCRECTANGULARTRIMMEDSURFACE,
199224
+ IFCRECURRENCEPATTERN: IFCRECURRENCEPATTERN,
199225
+ IFCREFERENCE: IFCREFERENCE,
199226
+ IFCREFERENCESVALUEDOCUMENT: IFCREFERENCESVALUEDOCUMENT,
199227
+ IFCREFERENT: IFCREFERENT,
199228
+ IFCREGULARTIMESERIES: IFCREGULARTIMESERIES,
199229
+ IFCREINFORCEDSOIL: IFCREINFORCEDSOIL,
199230
+ IFCREINFORCEMENTBARPROPERTIES: IFCREINFORCEMENTBARPROPERTIES,
199231
+ IFCREINFORCEMENTDEFINITIONPROPERTIES: IFCREINFORCEMENTDEFINITIONPROPERTIES,
199232
+ IFCREINFORCINGBAR: IFCREINFORCINGBAR,
199233
+ IFCREINFORCINGBARTYPE: IFCREINFORCINGBARTYPE,
199234
+ IFCREINFORCINGELEMENT: IFCREINFORCINGELEMENT,
199235
+ IFCREINFORCINGELEMENTTYPE: IFCREINFORCINGELEMENTTYPE,
199236
+ IFCREINFORCINGMESH: IFCREINFORCINGMESH,
199237
+ IFCREINFORCINGMESHTYPE: IFCREINFORCINGMESHTYPE,
199238
+ IFCRELADHERESTOELEMENT: IFCRELADHERESTOELEMENT,
199239
+ IFCRELAGGREGATES: IFCRELAGGREGATES,
199240
+ IFCRELASSIGNS: IFCRELASSIGNS,
199241
+ IFCRELASSIGNSTASKS: IFCRELASSIGNSTASKS,
199242
+ IFCRELASSIGNSTOACTOR: IFCRELASSIGNSTOACTOR,
199243
+ IFCRELASSIGNSTOCONTROL: IFCRELASSIGNSTOCONTROL,
199244
+ IFCRELASSIGNSTOGROUP: IFCRELASSIGNSTOGROUP,
199245
+ IFCRELASSIGNSTOGROUPBYFACTOR: IFCRELASSIGNSTOGROUPBYFACTOR,
199246
+ IFCRELASSIGNSTOPROCESS: IFCRELASSIGNSTOPROCESS,
199247
+ IFCRELASSIGNSTOPRODUCT: IFCRELASSIGNSTOPRODUCT,
199248
+ IFCRELASSIGNSTOPROJECTORDER: IFCRELASSIGNSTOPROJECTORDER,
199249
+ IFCRELASSIGNSTORESOURCE: IFCRELASSIGNSTORESOURCE,
199250
+ IFCRELASSOCIATES: IFCRELASSOCIATES,
199251
+ IFCRELASSOCIATESAPPLIEDVALUE: IFCRELASSOCIATESAPPLIEDVALUE,
199252
+ IFCRELASSOCIATESAPPROVAL: IFCRELASSOCIATESAPPROVAL,
199253
+ IFCRELASSOCIATESCLASSIFICATION: IFCRELASSOCIATESCLASSIFICATION,
199254
+ IFCRELASSOCIATESCONSTRAINT: IFCRELASSOCIATESCONSTRAINT,
199255
+ IFCRELASSOCIATESDOCUMENT: IFCRELASSOCIATESDOCUMENT,
199256
+ IFCRELASSOCIATESLIBRARY: IFCRELASSOCIATESLIBRARY,
199257
+ IFCRELASSOCIATESMATERIAL: IFCRELASSOCIATESMATERIAL,
199258
+ IFCRELASSOCIATESPROFILEDEF: IFCRELASSOCIATESPROFILEDEF,
199259
+ IFCRELASSOCIATESPROFILEPROPERTIES: IFCRELASSOCIATESPROFILEPROPERTIES,
199260
+ IFCRELATIONSHIP: IFCRELATIONSHIP,
199261
+ IFCRELAXATION: IFCRELAXATION,
199262
+ IFCRELCONNECTS: IFCRELCONNECTS,
199263
+ IFCRELCONNECTSELEMENTS: IFCRELCONNECTSELEMENTS,
199264
+ IFCRELCONNECTSPATHELEMENTS: IFCRELCONNECTSPATHELEMENTS,
199265
+ IFCRELCONNECTSPORTS: IFCRELCONNECTSPORTS,
199266
+ IFCRELCONNECTSPORTTOELEMENT: IFCRELCONNECTSPORTTOELEMENT,
199267
+ IFCRELCONNECTSSTRUCTURALACTIVITY: IFCRELCONNECTSSTRUCTURALACTIVITY,
199268
+ IFCRELCONNECTSSTRUCTURALELEMENT: IFCRELCONNECTSSTRUCTURALELEMENT,
199269
+ IFCRELCONNECTSSTRUCTURALMEMBER: IFCRELCONNECTSSTRUCTURALMEMBER,
199270
+ IFCRELCONNECTSWITHECCENTRICITY: IFCRELCONNECTSWITHECCENTRICITY,
199271
+ IFCRELCONNECTSWITHREALIZINGELEMENTS: IFCRELCONNECTSWITHREALIZINGELEMENTS,
199272
+ IFCRELCONTAINEDINSPATIALSTRUCTURE: IFCRELCONTAINEDINSPATIALSTRUCTURE,
199273
+ IFCRELCOVERSBLDGELEMENTS: IFCRELCOVERSBLDGELEMENTS,
199274
+ IFCRELCOVERSSPACES: IFCRELCOVERSSPACES,
199275
+ IFCRELDECLARES: IFCRELDECLARES,
199276
+ IFCRELDECOMPOSES: IFCRELDECOMPOSES,
199277
+ IFCRELDEFINES: IFCRELDEFINES,
199278
+ IFCRELDEFINESBYOBJECT: IFCRELDEFINESBYOBJECT,
199279
+ IFCRELDEFINESBYPROPERTIES: IFCRELDEFINESBYPROPERTIES,
199280
+ IFCRELDEFINESBYTEMPLATE: IFCRELDEFINESBYTEMPLATE,
199281
+ IFCRELDEFINESBYTYPE: IFCRELDEFINESBYTYPE,
199282
+ IFCRELFILLSELEMENT: IFCRELFILLSELEMENT,
199283
+ IFCRELFLOWCONTROLELEMENTS: IFCRELFLOWCONTROLELEMENTS,
199284
+ IFCRELINTERACTIONREQUIREMENTS: IFCRELINTERACTIONREQUIREMENTS,
199285
+ IFCRELINTERFERESELEMENTS: IFCRELINTERFERESELEMENTS,
199286
+ IFCRELNESTS: IFCRELNESTS,
199287
+ IFCRELOCCUPIESSPACES: IFCRELOCCUPIESSPACES,
199288
+ IFCRELOVERRIDESPROPERTIES: IFCRELOVERRIDESPROPERTIES,
199289
+ IFCRELPOSITIONS: IFCRELPOSITIONS,
199290
+ IFCRELPROJECTSELEMENT: IFCRELPROJECTSELEMENT,
199291
+ IFCRELREFERENCEDINSPATIALSTRUCTURE: IFCRELREFERENCEDINSPATIALSTRUCTURE,
199292
+ IFCRELSCHEDULESCOSTITEMS: IFCRELSCHEDULESCOSTITEMS,
199293
+ IFCRELSEQUENCE: IFCRELSEQUENCE,
199294
+ IFCRELSERVICESBUILDINGS: IFCRELSERVICESBUILDINGS,
199295
+ IFCRELSPACEBOUNDARY: IFCRELSPACEBOUNDARY,
199296
+ IFCRELSPACEBOUNDARY1STLEVEL: IFCRELSPACEBOUNDARY1STLEVEL,
199297
+ IFCRELSPACEBOUNDARY2NDLEVEL: IFCRELSPACEBOUNDARY2NDLEVEL,
199298
+ IFCRELVOIDSELEMENT: IFCRELVOIDSELEMENT,
199299
+ IFCREPARAMETRISEDCOMPOSITECURVESEGMENT: IFCREPARAMETRISEDCOMPOSITECURVESEGMENT,
199300
+ IFCREPRESENTATION: IFCREPRESENTATION,
199301
+ IFCREPRESENTATIONCONTEXT: IFCREPRESENTATIONCONTEXT,
199302
+ IFCREPRESENTATIONITEM: IFCREPRESENTATIONITEM,
199303
+ IFCREPRESENTATIONMAP: IFCREPRESENTATIONMAP,
199304
+ IFCRESOURCE: IFCRESOURCE,
199305
+ IFCRESOURCEAPPROVALRELATIONSHIP: IFCRESOURCEAPPROVALRELATIONSHIP,
199306
+ IFCRESOURCECONSTRAINTRELATIONSHIP: IFCRESOURCECONSTRAINTRELATIONSHIP,
199307
+ IFCRESOURCELEVELRELATIONSHIP: IFCRESOURCELEVELRELATIONSHIP,
199308
+ IFCRESOURCETIME: IFCRESOURCETIME,
199309
+ IFCREVOLVEDAREASOLID: IFCREVOLVEDAREASOLID,
199310
+ IFCREVOLVEDAREASOLIDTAPERED: IFCREVOLVEDAREASOLIDTAPERED,
199311
+ IFCRIBPLATEPROFILEPROPERTIES: IFCRIBPLATEPROFILEPROPERTIES,
199312
+ IFCRIGHTCIRCULARCONE: IFCRIGHTCIRCULARCONE,
199313
+ IFCRIGHTCIRCULARCYLINDER: IFCRIGHTCIRCULARCYLINDER,
199314
+ IFCROAD: IFCROAD,
199315
+ IFCROADPART: IFCROADPART,
199316
+ IFCROOF: IFCROOF,
199317
+ IFCROOFTYPE: IFCROOFTYPE,
199318
+ IFCROOT: IFCROOT,
199319
+ IFCROTATIONALFREQUENCYMEASURE: IFCROTATIONALFREQUENCYMEASURE,
199320
+ IFCROTATIONALMASSMEASURE: IFCROTATIONALMASSMEASURE,
199321
+ IFCROTATIONALSTIFFNESSMEASURE: IFCROTATIONALSTIFFNESSMEASURE,
199322
+ IFCROUNDEDEDGEFEATURE: IFCROUNDEDEDGEFEATURE,
199323
+ IFCROUNDEDRECTANGLEPROFILEDEF: IFCROUNDEDRECTANGLEPROFILEDEF,
199324
+ IFCSANITARYTERMINAL: IFCSANITARYTERMINAL,
199325
+ IFCSANITARYTERMINALTYPE: IFCSANITARYTERMINALTYPE,
199326
+ IFCSCHEDULETIMECONTROL: IFCSCHEDULETIMECONTROL,
199327
+ IFCSCHEDULINGTIME: IFCSCHEDULINGTIME,
199328
+ IFCSEAMCURVE: IFCSEAMCURVE,
199329
+ IFCSECONDINMINUTE: IFCSECONDINMINUTE,
199330
+ IFCSECONDORDERPOLYNOMIALSPIRAL: IFCSECONDORDERPOLYNOMIALSPIRAL,
199331
+ IFCSECTIONALAREAINTEGRALMEASURE: IFCSECTIONALAREAINTEGRALMEASURE,
199332
+ IFCSECTIONEDSOLID: IFCSECTIONEDSOLID,
199333
+ IFCSECTIONEDSOLIDHORIZONTAL: IFCSECTIONEDSOLIDHORIZONTAL,
199334
+ IFCSECTIONEDSPINE: IFCSECTIONEDSPINE,
199335
+ IFCSECTIONEDSURFACE: IFCSECTIONEDSURFACE,
199336
+ IFCSECTIONMODULUSMEASURE: IFCSECTIONMODULUSMEASURE,
199337
+ IFCSECTIONPROPERTIES: IFCSECTIONPROPERTIES,
199338
+ IFCSECTIONREINFORCEMENTPROPERTIES: IFCSECTIONREINFORCEMENTPROPERTIES,
199339
+ IFCSEGMENT: IFCSEGMENT,
199340
+ IFCSEGMENTEDREFERENCECURVE: IFCSEGMENTEDREFERENCECURVE,
199341
+ IFCSENSOR: IFCSENSOR,
199342
+ IFCSENSORTYPE: IFCSENSORTYPE,
199343
+ IFCSERVICELIFE: IFCSERVICELIFE,
199344
+ IFCSERVICELIFEFACTOR: IFCSERVICELIFEFACTOR,
199345
+ IFCSEVENTHORDERPOLYNOMIALSPIRAL: IFCSEVENTHORDERPOLYNOMIALSPIRAL,
199346
+ IFCSHADINGDEVICE: IFCSHADINGDEVICE,
199347
+ IFCSHADINGDEVICETYPE: IFCSHADINGDEVICETYPE,
199348
+ IFCSHAPEASPECT: IFCSHAPEASPECT,
199349
+ IFCSHAPEMODEL: IFCSHAPEMODEL,
199350
+ IFCSHAPEREPRESENTATION: IFCSHAPEREPRESENTATION,
199351
+ IFCSHEARMODULUSMEASURE: IFCSHEARMODULUSMEASURE,
199352
+ IFCSHELLBASEDSURFACEMODEL: IFCSHELLBASEDSURFACEMODEL,
199353
+ IFCSIGN: IFCSIGN,
199354
+ IFCSIGNAL: IFCSIGNAL,
199355
+ IFCSIGNALTYPE: IFCSIGNALTYPE,
199356
+ IFCSIGNTYPE: IFCSIGNTYPE,
199357
+ IFCSIMPLEPROPERTY: IFCSIMPLEPROPERTY,
199358
+ IFCSIMPLEPROPERTYTEMPLATE: IFCSIMPLEPROPERTYTEMPLATE,
199359
+ IFCSINESPIRAL: IFCSINESPIRAL,
199360
+ IFCSITE: IFCSITE,
199361
+ IFCSIUNIT: IFCSIUNIT,
199362
+ IFCSLAB: IFCSLAB,
199363
+ IFCSLABELEMENTEDCASE: IFCSLABELEMENTEDCASE,
199364
+ IFCSLABSTANDARDCASE: IFCSLABSTANDARDCASE,
199365
+ IFCSLABTYPE: IFCSLABTYPE,
199366
+ IFCSLIPPAGECONNECTIONCONDITION: IFCSLIPPAGECONNECTIONCONDITION,
199367
+ IFCSOLARDEVICE: IFCSOLARDEVICE,
199368
+ IFCSOLARDEVICETYPE: IFCSOLARDEVICETYPE,
199369
+ IFCSOLIDANGLEMEASURE: IFCSOLIDANGLEMEASURE,
199370
+ IFCSOLIDMODEL: IFCSOLIDMODEL,
199371
+ IFCSOUNDPOWERLEVELMEASURE: IFCSOUNDPOWERLEVELMEASURE,
199372
+ IFCSOUNDPOWERMEASURE: IFCSOUNDPOWERMEASURE,
199373
+ IFCSOUNDPRESSURELEVELMEASURE: IFCSOUNDPRESSURELEVELMEASURE,
199374
+ IFCSOUNDPRESSUREMEASURE: IFCSOUNDPRESSUREMEASURE,
199375
+ IFCSOUNDPROPERTIES: IFCSOUNDPROPERTIES,
199376
+ IFCSOUNDVALUE: IFCSOUNDVALUE,
199377
+ IFCSPACE: IFCSPACE,
199378
+ IFCSPACEHEATER: IFCSPACEHEATER,
199379
+ IFCSPACEHEATERTYPE: IFCSPACEHEATERTYPE,
199380
+ IFCSPACEPROGRAM: IFCSPACEPROGRAM,
199381
+ IFCSPACETHERMALLOADPROPERTIES: IFCSPACETHERMALLOADPROPERTIES,
199382
+ IFCSPACETYPE: IFCSPACETYPE,
199383
+ IFCSPATIALELEMENT: IFCSPATIALELEMENT,
199384
+ IFCSPATIALELEMENTTYPE: IFCSPATIALELEMENTTYPE,
199385
+ IFCSPATIALSTRUCTUREELEMENT: IFCSPATIALSTRUCTUREELEMENT,
199386
+ IFCSPATIALSTRUCTUREELEMENTTYPE: IFCSPATIALSTRUCTUREELEMENTTYPE,
199387
+ IFCSPATIALZONE: IFCSPATIALZONE,
199388
+ IFCSPATIALZONETYPE: IFCSPATIALZONETYPE,
199389
+ IFCSPECIFICHEATCAPACITYMEASURE: IFCSPECIFICHEATCAPACITYMEASURE,
199390
+ IFCSPECULAREXPONENT: IFCSPECULAREXPONENT,
199391
+ IFCSPECULARROUGHNESS: IFCSPECULARROUGHNESS,
199392
+ IFCSPHERE: IFCSPHERE,
199393
+ IFCSPHERICALSURFACE: IFCSPHERICALSURFACE,
199394
+ IFCSPIRAL: IFCSPIRAL,
199395
+ IFCSTACKTERMINAL: IFCSTACKTERMINAL,
199396
+ IFCSTACKTERMINALTYPE: IFCSTACKTERMINALTYPE,
199397
+ IFCSTAIR: IFCSTAIR,
199398
+ IFCSTAIRFLIGHT: IFCSTAIRFLIGHT,
199399
+ IFCSTAIRFLIGHTTYPE: IFCSTAIRFLIGHTTYPE,
199400
+ IFCSTAIRTYPE: IFCSTAIRTYPE,
199401
+ IFCSTRUCTURALACTION: IFCSTRUCTURALACTION,
199402
+ IFCSTRUCTURALACTIVITY: IFCSTRUCTURALACTIVITY,
199403
+ IFCSTRUCTURALANALYSISMODEL: IFCSTRUCTURALANALYSISMODEL,
199404
+ IFCSTRUCTURALCONNECTION: IFCSTRUCTURALCONNECTION,
199405
+ IFCSTRUCTURALCONNECTIONCONDITION: IFCSTRUCTURALCONNECTIONCONDITION,
199406
+ IFCSTRUCTURALCURVEACTION: IFCSTRUCTURALCURVEACTION,
199407
+ IFCSTRUCTURALCURVECONNECTION: IFCSTRUCTURALCURVECONNECTION,
199408
+ IFCSTRUCTURALCURVEMEMBER: IFCSTRUCTURALCURVEMEMBER,
199409
+ IFCSTRUCTURALCURVEMEMBERVARYING: IFCSTRUCTURALCURVEMEMBERVARYING,
199410
+ IFCSTRUCTURALCURVEREACTION: IFCSTRUCTURALCURVEREACTION,
199411
+ IFCSTRUCTURALITEM: IFCSTRUCTURALITEM,
199412
+ IFCSTRUCTURALLINEARACTION: IFCSTRUCTURALLINEARACTION,
199413
+ IFCSTRUCTURALLINEARACTIONVARYING: IFCSTRUCTURALLINEARACTIONVARYING,
199414
+ IFCSTRUCTURALLOAD: IFCSTRUCTURALLOAD,
199415
+ IFCSTRUCTURALLOADCASE: IFCSTRUCTURALLOADCASE,
199416
+ IFCSTRUCTURALLOADCONFIGURATION: IFCSTRUCTURALLOADCONFIGURATION,
199417
+ IFCSTRUCTURALLOADGROUP: IFCSTRUCTURALLOADGROUP,
199418
+ IFCSTRUCTURALLOADLINEARFORCE: IFCSTRUCTURALLOADLINEARFORCE,
199419
+ IFCSTRUCTURALLOADORRESULT: IFCSTRUCTURALLOADORRESULT,
199420
+ IFCSTRUCTURALLOADPLANARFORCE: IFCSTRUCTURALLOADPLANARFORCE,
199421
+ IFCSTRUCTURALLOADSINGLEDISPLACEMENT: IFCSTRUCTURALLOADSINGLEDISPLACEMENT,
199422
+ IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION: IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION,
199423
+ IFCSTRUCTURALLOADSINGLEFORCE: IFCSTRUCTURALLOADSINGLEFORCE,
199424
+ IFCSTRUCTURALLOADSINGLEFORCEWARPING: IFCSTRUCTURALLOADSINGLEFORCEWARPING,
199425
+ IFCSTRUCTURALLOADSTATIC: IFCSTRUCTURALLOADSTATIC,
199426
+ IFCSTRUCTURALLOADTEMPERATURE: IFCSTRUCTURALLOADTEMPERATURE,
199427
+ IFCSTRUCTURALMEMBER: IFCSTRUCTURALMEMBER,
199428
+ IFCSTRUCTURALPLANARACTION: IFCSTRUCTURALPLANARACTION,
199429
+ IFCSTRUCTURALPLANARACTIONVARYING: IFCSTRUCTURALPLANARACTIONVARYING,
199430
+ IFCSTRUCTURALPOINTACTION: IFCSTRUCTURALPOINTACTION,
199431
+ IFCSTRUCTURALPOINTCONNECTION: IFCSTRUCTURALPOINTCONNECTION,
199432
+ IFCSTRUCTURALPOINTREACTION: IFCSTRUCTURALPOINTREACTION,
199433
+ IFCSTRUCTURALPROFILEPROPERTIES: IFCSTRUCTURALPROFILEPROPERTIES,
199434
+ IFCSTRUCTURALREACTION: IFCSTRUCTURALREACTION,
199435
+ IFCSTRUCTURALRESULTGROUP: IFCSTRUCTURALRESULTGROUP,
199436
+ IFCSTRUCTURALSTEELPROFILEPROPERTIES: IFCSTRUCTURALSTEELPROFILEPROPERTIES,
199437
+ IFCSTRUCTURALSURFACEACTION: IFCSTRUCTURALSURFACEACTION,
199438
+ IFCSTRUCTURALSURFACECONNECTION: IFCSTRUCTURALSURFACECONNECTION,
199439
+ IFCSTRUCTURALSURFACEMEMBER: IFCSTRUCTURALSURFACEMEMBER,
199440
+ IFCSTRUCTURALSURFACEMEMBERVARYING: IFCSTRUCTURALSURFACEMEMBERVARYING,
199441
+ IFCSTRUCTURALSURFACEREACTION: IFCSTRUCTURALSURFACEREACTION,
199442
+ IFCSTRUCTUREDDIMENSIONCALLOUT: IFCSTRUCTUREDDIMENSIONCALLOUT,
199443
+ IFCSTYLEDITEM: IFCSTYLEDITEM,
199444
+ IFCSTYLEDREPRESENTATION: IFCSTYLEDREPRESENTATION,
199445
+ IFCSTYLEMODEL: IFCSTYLEMODEL,
199446
+ IFCSUBCONTRACTRESOURCE: IFCSUBCONTRACTRESOURCE,
199447
+ IFCSUBCONTRACTRESOURCETYPE: IFCSUBCONTRACTRESOURCETYPE,
199448
+ IFCSUBEDGE: IFCSUBEDGE,
199449
+ IFCSURFACE: IFCSURFACE,
199450
+ IFCSURFACECURVE: IFCSURFACECURVE,
199451
+ IFCSURFACECURVESWEPTAREASOLID: IFCSURFACECURVESWEPTAREASOLID,
199452
+ IFCSURFACEFEATURE: IFCSURFACEFEATURE,
199453
+ IFCSURFACEOFLINEAREXTRUSION: IFCSURFACEOFLINEAREXTRUSION,
199454
+ IFCSURFACEOFREVOLUTION: IFCSURFACEOFREVOLUTION,
199455
+ IFCSURFACEREINFORCEMENTAREA: IFCSURFACEREINFORCEMENTAREA,
199456
+ IFCSURFACESTYLE: IFCSURFACESTYLE,
199457
+ IFCSURFACESTYLELIGHTING: IFCSURFACESTYLELIGHTING,
199458
+ IFCSURFACESTYLEREFRACTION: IFCSURFACESTYLEREFRACTION,
199459
+ IFCSURFACESTYLERENDERING: IFCSURFACESTYLERENDERING,
199460
+ IFCSURFACESTYLESHADING: IFCSURFACESTYLESHADING,
199461
+ IFCSURFACESTYLEWITHTEXTURES: IFCSURFACESTYLEWITHTEXTURES,
199462
+ IFCSURFACETEXTURE: IFCSURFACETEXTURE,
199463
+ IFCSWEPTAREASOLID: IFCSWEPTAREASOLID,
199464
+ IFCSWEPTDISKSOLID: IFCSWEPTDISKSOLID,
199465
+ IFCSWEPTDISKSOLIDPOLYGONAL: IFCSWEPTDISKSOLIDPOLYGONAL,
199466
+ IFCSWEPTSURFACE: IFCSWEPTSURFACE,
199467
+ IFCSWITCHINGDEVICE: IFCSWITCHINGDEVICE,
199468
+ IFCSWITCHINGDEVICETYPE: IFCSWITCHINGDEVICETYPE,
199469
+ IFCSYMBOLSTYLE: IFCSYMBOLSTYLE,
199470
+ IFCSYSTEM: IFCSYSTEM,
199471
+ IFCSYSTEMFURNITUREELEMENT: IFCSYSTEMFURNITUREELEMENT,
199472
+ IFCSYSTEMFURNITUREELEMENTTYPE: IFCSYSTEMFURNITUREELEMENTTYPE,
199473
+ IFCTABLE: IFCTABLE,
199474
+ IFCTABLECOLUMN: IFCTABLECOLUMN,
199475
+ IFCTABLEROW: IFCTABLEROW,
199476
+ IFCTANK: IFCTANK,
199477
+ IFCTANKTYPE: IFCTANKTYPE,
199478
+ IFCTASK: IFCTASK,
199479
+ IFCTASKTIME: IFCTASKTIME,
199480
+ IFCTASKTIMERECURRING: IFCTASKTIMERECURRING,
199481
+ IFCTASKTYPE: IFCTASKTYPE,
199482
+ IFCTELECOMADDRESS: IFCTELECOMADDRESS,
199483
+ IFCTEMPERATUREGRADIENTMEASURE: IFCTEMPERATUREGRADIENTMEASURE,
199484
+ IFCTEMPERATURERATEOFCHANGEMEASURE: IFCTEMPERATURERATEOFCHANGEMEASURE,
199485
+ IFCTENDON: IFCTENDON,
199486
+ IFCTENDONANCHOR: IFCTENDONANCHOR,
199487
+ IFCTENDONANCHORTYPE: IFCTENDONANCHORTYPE,
199488
+ IFCTENDONCONDUIT: IFCTENDONCONDUIT,
199489
+ IFCTENDONCONDUITTYPE: IFCTENDONCONDUITTYPE,
199490
+ IFCTENDONTYPE: IFCTENDONTYPE,
199491
+ IFCTERMINATORSYMBOL: IFCTERMINATORSYMBOL,
199492
+ IFCTESSELLATEDFACESET: IFCTESSELLATEDFACESET,
199493
+ IFCTESSELLATEDITEM: IFCTESSELLATEDITEM,
199494
+ IFCTEXT: IFCTEXT,
199495
+ IFCTEXTALIGNMENT: IFCTEXTALIGNMENT,
199496
+ IFCTEXTDECORATION: IFCTEXTDECORATION,
199497
+ IFCTEXTFONTNAME: IFCTEXTFONTNAME,
199498
+ IFCTEXTLITERAL: IFCTEXTLITERAL,
199499
+ IFCTEXTLITERALWITHEXTENT: IFCTEXTLITERALWITHEXTENT,
199500
+ IFCTEXTSTYLE: IFCTEXTSTYLE,
199501
+ IFCTEXTSTYLEFONTMODEL: IFCTEXTSTYLEFONTMODEL,
199502
+ IFCTEXTSTYLEFORDEFINEDFONT: IFCTEXTSTYLEFORDEFINEDFONT,
199503
+ IFCTEXTSTYLETEXTMODEL: IFCTEXTSTYLETEXTMODEL,
199504
+ IFCTEXTSTYLEWITHBOXCHARACTERISTICS: IFCTEXTSTYLEWITHBOXCHARACTERISTICS,
199505
+ IFCTEXTTRANSFORMATION: IFCTEXTTRANSFORMATION,
199506
+ IFCTEXTURECOORDINATE: IFCTEXTURECOORDINATE,
199507
+ IFCTEXTURECOORDINATEGENERATOR: IFCTEXTURECOORDINATEGENERATOR,
199508
+ IFCTEXTURECOORDINATEINDICES: IFCTEXTURECOORDINATEINDICES,
199509
+ IFCTEXTURECOORDINATEINDICESWITHVOIDS: IFCTEXTURECOORDINATEINDICESWITHVOIDS,
199510
+ IFCTEXTUREMAP: IFCTEXTUREMAP,
199511
+ IFCTEXTUREVERTEX: IFCTEXTUREVERTEX,
199512
+ IFCTEXTUREVERTEXLIST: IFCTEXTUREVERTEXLIST,
199513
+ IFCTHERMALADMITTANCEMEASURE: IFCTHERMALADMITTANCEMEASURE,
199514
+ IFCTHERMALCONDUCTIVITYMEASURE: IFCTHERMALCONDUCTIVITYMEASURE,
199515
+ IFCTHERMALEXPANSIONCOEFFICIENTMEASURE: IFCTHERMALEXPANSIONCOEFFICIENTMEASURE,
199516
+ IFCTHERMALMATERIALPROPERTIES: IFCTHERMALMATERIALPROPERTIES,
199517
+ IFCTHERMALRESISTANCEMEASURE: IFCTHERMALRESISTANCEMEASURE,
199518
+ IFCTHERMALTRANSMITTANCEMEASURE: IFCTHERMALTRANSMITTANCEMEASURE,
199519
+ IFCTHERMODYNAMICTEMPERATUREMEASURE: IFCTHERMODYNAMICTEMPERATUREMEASURE,
199520
+ IFCTHIRDORDERPOLYNOMIALSPIRAL: IFCTHIRDORDERPOLYNOMIALSPIRAL,
199521
+ IFCTIME: IFCTIME,
199522
+ IFCTIMEMEASURE: IFCTIMEMEASURE,
199523
+ IFCTIMEPERIOD: IFCTIMEPERIOD,
199524
+ IFCTIMESERIES: IFCTIMESERIES,
199525
+ IFCTIMESERIESREFERENCERELATIONSHIP: IFCTIMESERIESREFERENCERELATIONSHIP,
199526
+ IFCTIMESERIESSCHEDULE: IFCTIMESERIESSCHEDULE,
199527
+ IFCTIMESERIESVALUE: IFCTIMESERIESVALUE,
199528
+ IFCTIMESTAMP: IFCTIMESTAMP,
199529
+ IFCTOPOLOGICALREPRESENTATIONITEM: IFCTOPOLOGICALREPRESENTATIONITEM,
199530
+ IFCTOPOLOGYREPRESENTATION: IFCTOPOLOGYREPRESENTATION,
199531
+ IFCTOROIDALSURFACE: IFCTOROIDALSURFACE,
199532
+ IFCTORQUEMEASURE: IFCTORQUEMEASURE,
199533
+ IFCTRACKELEMENT: IFCTRACKELEMENT,
199534
+ IFCTRACKELEMENTTYPE: IFCTRACKELEMENTTYPE,
199535
+ IFCTRANSFORMER: IFCTRANSFORMER,
199536
+ IFCTRANSFORMERTYPE: IFCTRANSFORMERTYPE,
199537
+ IFCTRANSPORTATIONDEVICE: IFCTRANSPORTATIONDEVICE,
199538
+ IFCTRANSPORTATIONDEVICETYPE: IFCTRANSPORTATIONDEVICETYPE,
199539
+ IFCTRANSPORTELEMENT: IFCTRANSPORTELEMENT,
199540
+ IFCTRANSPORTELEMENTTYPE: IFCTRANSPORTELEMENTTYPE,
199541
+ IFCTRAPEZIUMPROFILEDEF: IFCTRAPEZIUMPROFILEDEF,
199542
+ IFCTRIANGULATEDFACESET: IFCTRIANGULATEDFACESET,
199543
+ IFCTRIANGULATEDIRREGULARNETWORK: IFCTRIANGULATEDIRREGULARNETWORK,
199544
+ IFCTRIMMEDCURVE: IFCTRIMMEDCURVE,
199545
+ IFCTSHAPEPROFILEDEF: IFCTSHAPEPROFILEDEF,
199546
+ IFCTUBEBUNDLE: IFCTUBEBUNDLE,
199547
+ IFCTUBEBUNDLETYPE: IFCTUBEBUNDLETYPE,
199548
+ IFCTWODIRECTIONREPEATFACTOR: IFCTWODIRECTIONREPEATFACTOR,
199549
+ IFCTYPEOBJECT: IFCTYPEOBJECT,
199550
+ IFCTYPEPROCESS: IFCTYPEPROCESS,
199551
+ IFCTYPEPRODUCT: IFCTYPEPRODUCT,
199552
+ IFCTYPERESOURCE: IFCTYPERESOURCE,
199553
+ IFCUNITARYCONTROLELEMENT: IFCUNITARYCONTROLELEMENT,
199554
+ IFCUNITARYCONTROLELEMENTTYPE: IFCUNITARYCONTROLELEMENTTYPE,
199555
+ IFCUNITARYEQUIPMENT: IFCUNITARYEQUIPMENT,
199556
+ IFCUNITARYEQUIPMENTTYPE: IFCUNITARYEQUIPMENTTYPE,
199557
+ IFCUNITASSIGNMENT: IFCUNITASSIGNMENT,
199558
+ IFCURIREFERENCE: IFCURIREFERENCE,
199559
+ IFCUSHAPEPROFILEDEF: IFCUSHAPEPROFILEDEF,
199560
+ IFCVALVE: IFCVALVE,
199561
+ IFCVALVETYPE: IFCVALVETYPE,
199562
+ IFCVAPORPERMEABILITYMEASURE: IFCVAPORPERMEABILITYMEASURE,
199563
+ IFCVECTOR: IFCVECTOR,
199564
+ IFCVEHICLE: IFCVEHICLE,
199565
+ IFCVEHICLETYPE: IFCVEHICLETYPE,
199566
+ IFCVERTEX: IFCVERTEX,
199567
+ IFCVERTEXBASEDTEXTUREMAP: IFCVERTEXBASEDTEXTUREMAP,
199568
+ IFCVERTEXLOOP: IFCVERTEXLOOP,
199569
+ IFCVERTEXPOINT: IFCVERTEXPOINT,
199570
+ IFCVIBRATIONDAMPER: IFCVIBRATIONDAMPER,
199571
+ IFCVIBRATIONDAMPERTYPE: IFCVIBRATIONDAMPERTYPE,
199572
+ IFCVIBRATIONISOLATOR: IFCVIBRATIONISOLATOR,
199573
+ IFCVIBRATIONISOLATORTYPE: IFCVIBRATIONISOLATORTYPE,
199574
+ IFCVIRTUALELEMENT: IFCVIRTUALELEMENT,
199575
+ IFCVIRTUALGRIDINTERSECTION: IFCVIRTUALGRIDINTERSECTION,
199576
+ IFCVOIDINGFEATURE: IFCVOIDINGFEATURE,
199577
+ IFCVOLUMEMEASURE: IFCVOLUMEMEASURE,
199578
+ IFCVOLUMETRICFLOWRATEMEASURE: IFCVOLUMETRICFLOWRATEMEASURE,
199579
+ IFCWALL: IFCWALL,
199580
+ IFCWALLELEMENTEDCASE: IFCWALLELEMENTEDCASE,
199581
+ IFCWALLSTANDARDCASE: IFCWALLSTANDARDCASE,
199582
+ IFCWALLTYPE: IFCWALLTYPE,
199583
+ IFCWARPINGCONSTANTMEASURE: IFCWARPINGCONSTANTMEASURE,
199584
+ IFCWARPINGMOMENTMEASURE: IFCWARPINGMOMENTMEASURE,
199585
+ IFCWASTETERMINAL: IFCWASTETERMINAL,
199586
+ IFCWASTETERMINALTYPE: IFCWASTETERMINALTYPE,
199587
+ IFCWATERPROPERTIES: IFCWATERPROPERTIES,
199588
+ IFCWINDOW: IFCWINDOW,
199589
+ IFCWINDOWLININGPROPERTIES: IFCWINDOWLININGPROPERTIES,
199590
+ IFCWINDOWPANELPROPERTIES: IFCWINDOWPANELPROPERTIES,
199591
+ IFCWINDOWSTANDARDCASE: IFCWINDOWSTANDARDCASE,
199592
+ IFCWINDOWSTYLE: IFCWINDOWSTYLE,
199593
+ IFCWINDOWTYPE: IFCWINDOWTYPE,
199594
+ IFCWORKCALENDAR: IFCWORKCALENDAR,
199595
+ IFCWORKCONTROL: IFCWORKCONTROL,
199596
+ IFCWORKPLAN: IFCWORKPLAN,
199597
+ IFCWORKSCHEDULE: IFCWORKSCHEDULE,
199598
+ IFCWORKTIME: IFCWORKTIME,
199599
+ IFCYEARNUMBER: IFCYEARNUMBER,
199600
+ IFCZONE: IFCZONE,
199601
+ IFCZSHAPEPROFILEDEF: IFCZSHAPEPROFILEDEF,
199602
+ IfcAPI: IfcAPI2,
199603
+ IfcLineObject: IfcLineObject,
199604
+ InheritanceDef: InheritanceDef,
199605
+ InversePropertyDef: InversePropertyDef,
199606
+ LABEL: LABEL,
199607
+ LINE_END: LINE_END,
199608
+ get LogLevel () { return LogLevel; },
199609
+ Properties: Properties,
199610
+ REAL: REAL,
199611
+ REF: REF,
199612
+ SET_BEGIN: SET_BEGIN,
199613
+ SET_END: SET_END,
199614
+ STRING: STRING,
199615
+ SchemaNames: SchemaNames,
199616
+ get Schemas () { return Schemas; },
199617
+ ToRawLineData: ToRawLineData,
199618
+ TypeInitialisers: TypeInitialisers,
199619
+ UNKNOWN: UNKNOWN,
199620
+ ms: ms
199621
+ });
199622
+
198052
199623
  /**
198053
199624
  * Default data access strategy for {@link WebIFCLoaderPlugin}.
198054
199625
  */
@@ -198109,14 +199680,14 @@ class WebIFCDefaultDataSource {
198109
199680
  /**
198110
199681
  * {@link Viewer} plugin that uses [web-ifc](https://github.com/tomvandig/web-ifc) to load BIM models directly from IFC files.
198111
199682
  *
198112
- * <a href="https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_WebIFCLoaderPlugin_Duplex"><img src="https://xeokit.io/img/docs/WebIFCLoaderPlugin/WebIFCLoaderPlugin.png"></a>
199683
+ * <a href="https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_WebIFCLoaderPlugin_Duplex"><img src="https://xeokit.io/img/docs/WebIFCLoaderPlugin/WebIFCLoaderPlugin.png"></a>
198113
199684
  *
198114
- * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_WebIFCLoaderPlugin_Duplex)]
199685
+ * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_WebIFCLoaderPlugin_Duplex)]
198115
199686
  *
198116
199687
  * ## Overview
198117
199688
  *
198118
199689
  * * Loads small-to-medium sized BIM models directly from IFC files.
198119
- * * Uses [web-ifc](https://github.com/tomvandig/web-ifc) internally, to parse IFC files in the browser.
199690
+ * * Uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse IFC files in the browser.
198120
199691
  * * Loads IFC geometry, element structure metadata, and property sets.
198121
199692
  * * Not for large models. For best performance with large models, we recommend using {@link XKTLoaderPlugin}.
198122
199693
  * * Loads double-precision coordinates, enabling models to be viewed at global coordinates without accuracy loss.
@@ -198155,10 +199726,11 @@ class WebIFCDefaultDataSource {
198155
199726
  * Since this model contains IFC types, the WebIFCLoaderPlugin will set the initial appearance of each object
198156
199727
  * {@link Entity} according to its IFC type in {@link WebIFCLoaderPlugin#objectDefaults}.
198157
199728
  *
198158
- * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_WebIFCLoaderPlugin_isolateStorey)]
199729
+ * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_WebIFCLoaderPlugin_isolateStorey)]
198159
199730
  *
198160
199731
  * ````javascript
198161
199732
  * import {Viewer, WebIFCLoaderPlugin} from "xeokit-sdk.es.js";
199733
+ * import * as WebIFC from "https://cdn.jsdelivr.net/npm/web-ifc@0.0.51/web-ifc-api.js";
198162
199734
  *
198163
199735
  * //------------------------------------------------------------------------------------------------------------------
198164
199736
  * // 1. Create a Viewer,
@@ -198177,57 +199749,76 @@ class WebIFCDefaultDataSource {
198177
199749
  * viewer.camera.up = [0.10, 0.98, -0.14];
198178
199750
  *
198179
199751
  * //------------------------------------------------------------------------------------------------------------------
198180
- * // 1. Create a WebIFCLoaderPlugin, configured with a path to the bundled third-party web-ifc.wasm module
198181
- * // 2. Load a BIM model fom an IFC file, excluding its IfcSpace elements, and highlighting edges
199752
+ * // 1. Create a web-ifc API, which will parse IFC for our WebIFCLoaderPlugin
199753
+ * // 2. Connect the API to the web-ifc WASM module, which powers the parsing
199754
+ * // 3. Initialize the web-ifc API
198182
199755
  * //------------------------------------------------------------------------------------------------------------------
198183
199756
  *
198184
199757
  * // 1
198185
- * const ifcLoader = new WebIFCLoaderPlugin(viewer, {
198186
- * wasmPath: "../dist/" // <<------- Path to web-ifc.wasm, which does the IFC parsing for us
198187
- * });
199758
+ *
199759
+ * const IfcAPI = new this._webIFC.IfcAPI();
198188
199760
  *
198189
199761
  * // 2
198190
- * const model = ifcLoader.load({ // Returns an Entity that represents the model
198191
- * id: "myModel",
198192
- * src: "../assets/models/ifc/Duplex.ifc",
198193
- * excludeTypes: ["IfcSpace"],
198194
- * edges: true
198195
- * });
198196
199762
  *
198197
- * model.on("loaded", () => {
199763
+ * IfcAPI.SetWasmPath("https://cdn.jsdelivr.net/npm/web-ifc@0.0.51/");
198198
199764
  *
198199
- * //--------------------------------------------------------------------------------------------------------------
198200
- * // 1. Find metadata on the bottom storey
198201
- * // 2. X-ray all the objects except for the bottom storey
198202
- * // 3. Fit the bottom storey in view
198203
- * //--------------------------------------------------------------------------------------------------------------
199765
+ * // 3
198204
199766
  *
198205
- * // 1
198206
- * const metaModel = viewer.metaScene.metaModels["myModel"]; // MetaModel with ID "myModel"
198207
- * const metaObject
198208
- * = viewer.metaScene.metaObjects["1xS3BCk291UvhgP2dvNsgp"]; // MetaObject with ID "1xS3BCk291UvhgP2dvNsgp"
199767
+ * IfcAPI.Init().then(() => {
198209
199768
  *
198210
- * const name = metaObject.name; // "01 eerste verdieping"
198211
- * const type = metaObject.type; // "IfcBuildingStorey"
198212
- * const parent = metaObject.parent; // MetaObject with type "IfcBuilding"
198213
- * const children = metaObject.children; // Array of child MetaObjects
198214
- * const objectId = metaObject.id; // "1xS3BCk291UvhgP2dvNsgp"
198215
- * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects
198216
- * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects
199769
+ * //------------------------------------------------------------------------------------------------------------
199770
+ * // 1. Create a WebIFCLoaderPlugin, configured with the web-ifc module and a web-ifc API instance
199771
+ * // 2. Load a BIM model fom an IFC file, excluding its IfcSpace elements, and highlighting edges
199772
+ * //------------------------------------------------------------------------------------------------------------
199773
+ *
199774
+ * const ifcLoader = new WebIFCLoaderPlugin(viewer, {
199775
+ * WebIFC,
199776
+ * IfcAPI
199777
+ * });
198217
199778
  *
198218
199779
  * // 2
198219
- * viewer.scene.setObjectsXRayed(viewer.scene.objectIds, true);
198220
- * viewer.scene.setObjectsXRayed(objectIds, false);
199780
+ * const model = ifcLoader.load({ // Returns an Entity that represents the model
199781
+ * id: "myModel",
199782
+ * src: "../assets/models/ifc/Duplex.ifc",
199783
+ * excludeTypes: ["IfcSpace"],
199784
+ * edges: true
199785
+ * });
198221
199786
  *
198222
- * // 3
198223
- * viewer.cameraFlight.flyTo(aabb);
198224
- * });
199787
+ * model.on("loaded", () => {
198225
199788
  *
198226
- * // Find the model Entity by ID
198227
- * model = viewer.scene.models["myModel"];
199789
+ * //----------------------------------------------------------------------------------------------------------
199790
+ * // 1. Find metadata on the bottom storey
199791
+ * // 2. X-ray all the objects except for the bottom storey
199792
+ * // 3. Fit the bottom storey in view
199793
+ * //----------------------------------------------------------------------------------------------------------
198228
199794
  *
198229
- * // Destroy the model
198230
- * model.destroy();
199795
+ * // 1
199796
+ * const metaModel = viewer.metaScene.metaModels["myModel"]; // MetaModel with ID "myModel"
199797
+ * const metaObject
199798
+ * = viewer.metaScene.metaObjects["1xS3BCk291UvhgP2dvNsgp"]; // MetaObject with ID "1xS3BCk291UvhgP2dvNsgp"
199799
+ *
199800
+ * const name = metaObject.name; // "01 eerste verdieping"
199801
+ * const type = metaObject.type; // "IfcBuildingStorey"
199802
+ * const parent = metaObject.parent; // MetaObject with type "IfcBuilding"
199803
+ * const children = metaObject.children; // Array of child MetaObjects
199804
+ * const objectId = metaObject.id; // "1xS3BCk291UvhgP2dvNsgp"
199805
+ * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects
199806
+ * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects
199807
+ *
199808
+ * // 2
199809
+ * viewer.scene.setObjectsXRayed(viewer.scene.objectIds, true);
199810
+ * viewer.scene.setObjectsXRayed(objectIds, false);
199811
+ *
199812
+ * // 3
199813
+ * viewer.cameraFlight.flyTo(aabb);
199814
+ *
199815
+ * // Find the model Entity by ID
199816
+ * model = viewer.scene.models["myModel"];
199817
+ *
199818
+ * // Destroy the model
199819
+ * model.destroy();
199820
+ * });
199821
+ * });
198231
199822
  * ````
198232
199823
  *
198233
199824
  * ## Transforming
@@ -198436,605 +200027,653 @@ class WebIFCDefaultDataSource {
198436
200027
  * @since 2.0.13
198437
200028
  */
198438
200029
  class WebIFCLoaderPlugin extends Plugin {
200030
+ /**
200031
+ * @constructor
200032
+ *
200033
+ * @param {Viewer} viewer The Viewer.
200034
+ * @param {Object} cfg Plugin configuration.
200035
+ * @param {String} [cfg.id="ifcLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.
200036
+ * @param {Object} cfg.WebIFC The web-ifc module, required by WebIFCLoaderPlugin. WebIFCLoaderPlugin uses various IFC type constants defined on this module.
200037
+ * @param {Object} cfg.IfcAPI A pre-initialized instance of the web-ifc API. WebIFCLoaderPlugin uses this to parse IFC. * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.
200038
+ * @param {Object} [cfg.dataSource] A custom data source through which the WebIFCLoaderPlugin can load model and metadata files. Defaults to an instance of {@link WebIFCDefaultDataSource}, which loads over HTTP.
200039
+ * @param {String[]} [cfg.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
200040
+ * @param {String[]} [cfg.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
200041
+ * @param {Boolean} [cfg.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.
200042
+ */
200043
+ constructor(viewer, cfg = {}) {
200044
+ super("ifcLoader", viewer, cfg);
200045
+ this.dataSource = cfg.dataSource;
200046
+ this.objectDefaults = cfg.objectDefaults;
200047
+ this.includeTypes = cfg.includeTypes;
200048
+ this.excludeTypes = cfg.excludeTypes;
200049
+ this.excludeUnclassifiedObjects = cfg.excludeUnclassifiedObjects;
200050
+ if (cfg.WebIFC) {
200051
+ this._webIFC = cfg.WebIFC;
200052
+ this._ifcAPI = cfg.IfcAPI;
200053
+ this.webIfcFroMOutside = true;
200054
+ } else {
200055
+ this._webIFC = WebIFC;
200056
+ this.webIfcFroMOutside = false;
200057
+ this._ifcAPI = new this._webIFC.IfcAPI();
200058
+ if (cfg.wasmPath) {
200059
+ this._ifcAPI.SetWasmPath(cfg.wasmPath);
200060
+ }
200061
+ this._ifcAPI
200062
+ .Init()
200063
+ .then(() => {
200064
+ this.fire("initialized", true, false); // Don't forget the event
200065
+ })
200066
+ .catch((e) => {
200067
+ this.error(e);
200068
+ });
200069
+ }
200070
+ }
198439
200071
 
198440
- /**
198441
- * @constructor
198442
- *
198443
- * @param {Viewer} viewer The Viewer.
198444
- * @param {Object} cfg Plugin configuration.
198445
- * @param {String} [cfg.id="ifcLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.
198446
- * @param {String} cfg.wasmPath Path to ````web-ifc.wasm````, required by WebIFCLoaderPlugin.
198447
- * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.
198448
- * @param {Object} [cfg.dataSource] A custom data source through which the WebIFCLoaderPlugin can load model and metadata files. Defaults to an instance of {@link WebIFCDefaultDataSource}, which loads over HTTP.
198449
- * @param {String[]} [cfg.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
198450
- * @param {String[]} [cfg.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
198451
- * @param {Boolean} [cfg.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.
198452
- */
198453
- constructor(viewer, cfg = {}) {
198454
-
198455
- super("ifcLoader", viewer, cfg);
198456
-
198457
- this.dataSource = cfg.dataSource;
198458
- this.objectDefaults = cfg.objectDefaults;
198459
- this.includeTypes = cfg.includeTypes;
198460
- this.excludeTypes = cfg.excludeTypes;
198461
- this.excludeUnclassifiedObjects = cfg.excludeUnclassifiedObjects;
198462
-
198463
- this._ifcAPI = new IfcAPI2();
198464
-
198465
- if (cfg.wasmPath) {
198466
- this._ifcAPI.SetWasmPath(cfg.wasmPath);
198467
- }
198468
-
198469
- this._ifcAPI.Init().then(() => {
198470
- this.fire("initialized", true, false); // Don't forget the event
198471
- }).catch((e) => {
198472
- this.error(e);
198473
- });
198474
- }
198475
-
198476
- /**
198477
- * Gets the ````IFC```` format versions supported by this WebIFCLoaderPlugin.
198478
- * @returns {string[]}
198479
- */
198480
- get supportedVersions() {
198481
- return ["2x3", "4"];
198482
- }
198483
-
198484
- /**
198485
- * Gets the custom data source through which the WebIFCLoaderPlugin can load IFC files.
198486
- *
198487
- * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.
198488
- *
198489
- * @type {Object}
198490
- */
198491
- get dataSource() {
198492
- return this._dataSource;
198493
- }
198494
-
198495
- /**
198496
- * Sets a custom data source through which the WebIFCLoaderPlugin can load IFC files.
198497
- *
198498
- * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.
198499
- *
198500
- * @type {Object}
198501
- */
198502
- set dataSource(value) {
198503
- this._dataSource = value || new WebIFCDefaultDataSource();
198504
- }
198505
-
198506
- /**
198507
- * Gets map of initial default states for each loaded {@link Entity} that represents an object.
198508
- *
198509
- * Default value is {@link IFCObjectDefaults}.
198510
- *
198511
- * @type {{String: Object}}
198512
- */
198513
- get objectDefaults() {
198514
- return this._objectDefaults;
198515
- }
198516
-
198517
- /**
198518
- * Sets map of initial default states for each loaded {@link Entity} that represents an object.
198519
- *
198520
- * Default value is {@link IFCObjectDefaults}.
198521
- *
198522
- * @type {{String: Object}}
198523
- */
198524
- set objectDefaults(value) {
198525
- this._objectDefaults = value || IFCObjectDefaults;
198526
- }
198527
-
198528
- /**
198529
- * Gets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.
198530
- *
198531
- * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this
198532
- * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
198533
- *
198534
- * Default value is ````undefined````.
198535
- *
198536
- * @type {String[]}
198537
- */
198538
- get includeTypes() {
198539
- return this._includeTypes;
198540
- }
198541
-
198542
- /**
198543
- * Sets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.
198544
- *
198545
- * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this
198546
- * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
198547
- *
198548
- * Default value is ````undefined````.
198549
- *
198550
- * @type {String[]}
198551
- */
198552
- set includeTypes(value) {
198553
- this._includeTypes = value;
198554
- }
200072
+ /**
200073
+ * Gets the ````IFC```` format versions supported by this WebIFCLoaderPlugin.
200074
+ * @returns {string[]}
200075
+ */
200076
+ get supportedVersions() {
200077
+ return ["2x3", "4"];
200078
+ }
198555
200079
 
198556
- /**
198557
- * Gets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.
198558
- *
198559
- * When loading IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this
198560
- * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
198561
- *
198562
- * Default value is ````undefined````.
198563
- *
198564
- * @type {String[]}
198565
- */
198566
- get excludeTypes() {
198567
- return this._excludeTypes;
198568
- }
200080
+ /**
200081
+ * Gets the custom data source through which the WebIFCLoaderPlugin can load IFC files.
200082
+ *
200083
+ * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.
200084
+ *
200085
+ * @type {Object}
200086
+ */
200087
+ get dataSource() {
200088
+ return this._dataSource;
200089
+ }
198569
200090
 
198570
- /**
198571
- * Sets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.
198572
- *
198573
- * When IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this
198574
- * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
198575
- *
198576
- * Default value is ````undefined````.
198577
- *
198578
- * @type {String[]}
198579
- */
198580
- set excludeTypes(value) {
198581
- this._excludeTypes = value;
198582
- }
200091
+ /**
200092
+ * Sets a custom data source through which the WebIFCLoaderPlugin can load IFC files.
200093
+ *
200094
+ * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.
200095
+ *
200096
+ * @type {Object}
200097
+ */
200098
+ set dataSource(value) {
200099
+ this._dataSource = value || new WebIFCDefaultDataSource();
200100
+ }
198583
200101
 
198584
- /**
198585
- * Gets whether we load objects that don't have IFC types.
198586
- *
198587
- * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects
198588
- * that don't have IFC types.
198589
- *
198590
- * Default value is ````false````.
198591
- *
198592
- * @type {Boolean}
198593
- */
198594
- get excludeUnclassifiedObjects() {
198595
- return this._excludeUnclassifiedObjects;
198596
- }
200102
+ /**
200103
+ * Gets map of initial default states for each loaded {@link Entity} that represents an object.
200104
+ *
200105
+ * Default value is {@link IFCObjectDefaults}.
200106
+ *
200107
+ * @type {{String: Object}}
200108
+ */
200109
+ get objectDefaults() {
200110
+ return this._objectDefaults;
200111
+ }
198597
200112
 
198598
- /**
198599
- * Sets whether we load objects that don't have IFC types.
198600
- *
198601
- * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects
198602
- * that don't have IFC types.
198603
- *
198604
- * Default value is ````false````.
198605
- *
198606
- * @type {Boolean}
198607
- */
198608
- set excludeUnclassifiedObjects(value) {
198609
- this._excludeUnclassifiedObjects = !!value;
198610
- }
200113
+ /**
200114
+ * Sets map of initial default states for each loaded {@link Entity} that represents an object.
200115
+ *
200116
+ * Default value is {@link IFCObjectDefaults}.
200117
+ *
200118
+ * @type {{String: Object}}
200119
+ */
200120
+ set objectDefaults(value) {
200121
+ this._objectDefaults = value || IFCObjectDefaults;
200122
+ }
198611
200123
 
198612
- /**
198613
- * Gets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.
198614
- *
198615
- * Default value is ````false````.
198616
- *
198617
- * @type {Boolean}
198618
- */
198619
- get globalizeObjectIds() {
198620
- return this._globalizeObjectIds;
198621
- }
200124
+ /**
200125
+ * Gets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.
200126
+ *
200127
+ * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this
200128
+ * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
200129
+ *
200130
+ * Default value is ````undefined````.
200131
+ *
200132
+ * @type {String[]}
200133
+ */
200134
+ get includeTypes() {
200135
+ return this._includeTypes;
200136
+ }
198622
200137
 
198623
- /**
198624
- * Sets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.
198625
- *
198626
- * Set this ````true```` when you need to load multiple instances of the same model, to avoid ID clashes
198627
- * between the objects in the different instances.
198628
- *
198629
- * When we load a model with this set ````true````, then each {@link Entity#id} and {@link MetaObject#id} will be
198630
- * prefixed by the ID of the model, ie. ````<modelId>#<objectId>````.
198631
- *
198632
- * {@link Entity#originalSystemId} and {@link MetaObject#originalSystemId} will always hold the original, un-prefixed, ID values.
198633
- *
198634
- * Default value is ````false````.
198635
- *
198636
- * See the main {@link WebIFCLoaderPlugin} class documentation for usage info.
198637
- *
198638
- * @type {Boolean}
198639
- */
198640
- set globalizeObjectIds(value) {
198641
- this._globalizeObjectIds = !!value;
198642
- }
200138
+ /**
200139
+ * Sets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.
200140
+ *
200141
+ * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this
200142
+ * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
200143
+ *
200144
+ * Default value is ````undefined````.
200145
+ *
200146
+ * @type {String[]}
200147
+ */
200148
+ set includeTypes(value) {
200149
+ this._includeTypes = value;
200150
+ }
198643
200151
 
198644
- /**
198645
- * Loads an ````IFC```` model into this WebIFCLoaderPlugin's {@link Viewer}.
198646
- *
198647
- * @param {*} params Loading parameters.
198648
- * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.
198649
- * @param {String} [params.src] Path to a IFC file, as an alternative to the ````ifc```` parameter.
198650
- * @param {ArrayBuffer} [params.ifc] The IFC file data, as an alternative to the ````src```` parameter.
198651
- * @param {Boolean} [params.loadMetadata=true] Whether to load IFC metadata (metaobjects and property sets).
198652
- * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.
198653
- * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
198654
- * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
198655
- * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.
198656
- * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.
198657
- * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.
198658
- * @param {Number[]} [params.scale=[1,1,1]] The model's scale.
198659
- * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.
198660
- * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.
198661
- * @param {Boolean} [params.edges=false] Indicates if the model's edges are initially emphasized.
198662
- * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````
198663
- * @param {Boolean} [params.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the model. Only works when {@link Scene#pbrEnabled} is also ````true````.
198664
- * @param {Number} [params.backfaces=false] When we set this ````true````, then we force rendering of backfaces for the model. When we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.
198665
- * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.
198666
- * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link WebIFCLoaderPlugin#globalizeObjectIds} for more info.
198667
- * @param {Object} [params.stats] Collects model statistics.
198668
- * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to
198669
- * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable
198670
- * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point
198671
- * primitives. Only works while {@link DTX#enabled} is also ````true````.
198672
- * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.
198673
- */
198674
- load(params = {}) {
200152
+ /**
200153
+ * Gets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.
200154
+ *
200155
+ * When loading IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this
200156
+ * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
200157
+ *
200158
+ * Default value is ````undefined````.
200159
+ *
200160
+ * @type {String[]}
200161
+ */
200162
+ get excludeTypes() {
200163
+ return this._excludeTypes;
200164
+ }
198675
200165
 
198676
- if (params.id && this.viewer.scene.components[params.id]) {
198677
- this.error("Component with this ID already exists in viewer: " + params.id + " - will autogenerate this ID");
198678
- delete params.id;
198679
- }
200166
+ /**
200167
+ * Sets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.
200168
+ *
200169
+ * When IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this
200170
+ * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.
200171
+ *
200172
+ * Default value is ````undefined````.
200173
+ *
200174
+ * @type {String[]}
200175
+ */
200176
+ set excludeTypes(value) {
200177
+ this._excludeTypes = value;
200178
+ }
198680
200179
 
198681
- const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {
198682
- isModel: true
198683
- }));
200180
+ /**
200181
+ * Gets whether we load objects that don't have IFC types.
200182
+ *
200183
+ * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects
200184
+ * that don't have IFC types.
200185
+ *
200186
+ * Default value is ````false````.
200187
+ *
200188
+ * @type {Boolean}
200189
+ */
200190
+ get excludeUnclassifiedObjects() {
200191
+ return this._excludeUnclassifiedObjects;
200192
+ }
198684
200193
 
198685
- if (!params.src && !params.ifc) {
198686
- this.error("load() param expected: src or IFC");
198687
- return sceneModel; // Return new empty model
198688
- }
200194
+ /**
200195
+ * Sets whether we load objects that don't have IFC types.
200196
+ *
200197
+ * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects
200198
+ * that don't have IFC types.
200199
+ *
200200
+ * Default value is ````false````.
200201
+ *
200202
+ * @type {Boolean}
200203
+ */
200204
+ set excludeUnclassifiedObjects(value) {
200205
+ this._excludeUnclassifiedObjects = !!value;
200206
+ }
198689
200207
 
198690
- const options = {
198691
- autoNormals: true
198692
- };
200208
+ /**
200209
+ * Gets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.
200210
+ *
200211
+ * Default value is ````false````.
200212
+ *
200213
+ * @type {Boolean}
200214
+ */
200215
+ get globalizeObjectIds() {
200216
+ return this._globalizeObjectIds;
200217
+ }
198693
200218
 
198694
- if (params.loadMetadata !== false) {
200219
+ /**
200220
+ * Sets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.
200221
+ *
200222
+ * Set this ````true```` when you need to load multiple instances of the same model, to avoid ID clashes
200223
+ * between the objects in the different instances.
200224
+ *
200225
+ * When we load a model with this set ````true````, then each {@link Entity#id} and {@link MetaObject#id} will be
200226
+ * prefixed by the ID of the model, ie. ````<modelId>#<objectId>````.
200227
+ *
200228
+ * {@link Entity#originalSystemId} and {@link MetaObject#originalSystemId} will always hold the original, un-prefixed, ID values.
200229
+ *
200230
+ * Default value is ````false````.
200231
+ *
200232
+ * See the main {@link WebIFCLoaderPlugin} class documentation for usage info.
200233
+ *
200234
+ * @type {Boolean}
200235
+ */
200236
+ set globalizeObjectIds(value) {
200237
+ this._globalizeObjectIds = !!value;
200238
+ }
200239
+
200240
+ /**
200241
+ * Loads an ````IFC```` model into this WebIFCLoaderPlugin's {@link Viewer}.
200242
+ *
200243
+ * @param {*} params Loading parameters.
200244
+ * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.
200245
+ * @param {String} [params.src] Path to a IFC file, as an alternative to the ````ifc```` parameter.
200246
+ * @param {ArrayBuffer} [params.ifc] The IFC file data, as an alternative to the ````src```` parameter.
200247
+ * @param {Boolean} [params.loadMetadata=true] Whether to load IFC metadata (metaobjects and property sets).
200248
+ * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.
200249
+ * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
200250
+ * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.
200251
+ * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.
200252
+ * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.
200253
+ * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.
200254
+ * @param {Number[]} [params.scale=[1,1,1]] The model's scale.
200255
+ * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.
200256
+ * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.
200257
+ * @param {Boolean} [params.edges=false] Indicates if the model's edges are initially emphasized.
200258
+ * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````
200259
+ * @param {Boolean} [params.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the model. Only works when {@link Scene#pbrEnabled} is also ````true````.
200260
+ * @param {Number} [params.backfaces=false] When we set this ````true````, then we force rendering of backfaces for the model. When we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.
200261
+ * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.
200262
+ * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link WebIFCLoaderPlugin#globalizeObjectIds} for more info.
200263
+ * @param {Object} [params.stats] Collects model statistics.
200264
+ * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to
200265
+ * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable
200266
+ * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point
200267
+ * primitives. Only works while {@link DTX#enabled} is also ````true````.
200268
+ * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.
200269
+ */
200270
+ load(params = {}) {
200271
+ if (params.id && this.viewer.scene.components[params.id]) {
200272
+ this.error("Component with this ID already exists in viewer: " + params.id + " - will autogenerate this ID");
200273
+ delete params.id;
200274
+ }
198695
200275
 
198696
- const includeTypes = params.includeTypes || this._includeTypes;
198697
- const excludeTypes = params.excludeTypes || this._excludeTypes;
198698
- const objectDefaults = params.objectDefaults || this._objectDefaults;
200276
+ const sceneModel = new SceneModel(
200277
+ this.viewer.scene,
200278
+ utils.apply(params, {
200279
+ isModel: true
200280
+ })
200281
+ );
198699
200282
 
198700
- if (includeTypes) {
198701
- options.includeTypesMap = {};
198702
- for (let i = 0, len = includeTypes.length; i < len; i++) {
198703
- options.includeTypesMap[includeTypes[i]] = true;
198704
- }
198705
- }
200283
+ if (!params.src && !params.ifc) {
200284
+ this.error("load() param expected: src or IFC");
200285
+ return sceneModel; // Return new empty model
200286
+ }
198706
200287
 
198707
- if (excludeTypes) {
198708
- options.excludeTypesMap = {};
198709
- for (let i = 0, len = excludeTypes.length; i < len; i++) {
198710
- options.excludeTypesMap[excludeTypes[i]] = true;
198711
- }
198712
- }
200288
+ const options = {
200289
+ autoNormals: true
200290
+ };
198713
200291
 
198714
- if (objectDefaults) {
198715
- options.objectDefaults = objectDefaults;
198716
- }
200292
+ if (params.loadMetadata !== false) {
200293
+ const includeTypes = params.includeTypes || this._includeTypes;
200294
+ const excludeTypes = params.excludeTypes || this._excludeTypes;
200295
+ const objectDefaults = params.objectDefaults || this._objectDefaults;
198717
200296
 
198718
- options.excludeUnclassifiedObjects = (params.excludeUnclassifiedObjects !== undefined) ? (!!params.excludeUnclassifiedObjects) : this._excludeUnclassifiedObjects;
198719
- options.globalizeObjectIds = (params.globalizeObjectIds !== undefined) ? (!!params.globalizeObjectIds) : this._globalizeObjectIds;
198720
- }
200297
+ if (includeTypes) {
200298
+ options.includeTypesMap = {};
200299
+ for (let i = 0, len = includeTypes.length; i < len; i++) {
200300
+ options.includeTypesMap[includeTypes[i]] = true;
200301
+ }
200302
+ }
198721
200303
 
198722
- this.on("initialized", () => {
198723
- try {
198724
- if (params.src) {
198725
- this._loadModel(params.src, params, options, sceneModel);
198726
- } else {
198727
- this._parseModel(params.ifc, params, options, sceneModel);
198728
- }
198729
- } catch (e) {
198730
- this.error(e);
198731
- sceneModel.fire("error", e);
198732
- }
198733
- });
200304
+ if (excludeTypes) {
200305
+ options.excludeTypesMap = {};
200306
+ for (let i = 0, len = excludeTypes.length; i < len; i++) {
200307
+ options.excludeTypesMap[excludeTypes[i]] = true;
200308
+ }
200309
+ }
198734
200310
 
198735
- return sceneModel;
198736
- }
200311
+ if (objectDefaults) {
200312
+ options.objectDefaults = objectDefaults;
200313
+ }
198737
200314
 
198738
- _loadModel(src, params, options, sceneModel) {
198739
- const spinner = this.viewer.scene.canvas.spinner;
198740
- spinner.processes++;
198741
- this._dataSource.getIFC(params.src, (arrayBuffer) => {
198742
- this._parseModel(arrayBuffer, params, options, sceneModel);
198743
- spinner.processes--;
198744
- },
198745
- (errMsg) => {
198746
- spinner.processes--;
198747
- this.error(errMsg);
198748
- sceneModel.fire("error", errMsg);
198749
- });
198750
- }
200315
+ options.excludeUnclassifiedObjects =
200316
+ params.excludeUnclassifiedObjects !== undefined
200317
+ ? !!params.excludeUnclassifiedObjects
200318
+ : this._excludeUnclassifiedObjects;
200319
+ options.globalizeObjectIds =
200320
+ params.globalizeObjectIds !== undefined ? !!params.globalizeObjectIds : this._globalizeObjectIds;
200321
+ }
198751
200322
 
198752
- _parseModel(arrayBuffer, params, options, sceneModel) {
198753
- if (sceneModel.destroyed) {
198754
- return;
198755
- }
198756
- const stats = params.stats || {};
198757
- stats.sourceFormat = "IFC";
198758
- stats.schemaVersion = "";
198759
- stats.title = "";
198760
- stats.author = "";
198761
- stats.created = "";
198762
- stats.numMetaObjects = 0;
198763
- stats.numPropertySets = 0;
198764
- stats.numObjects = 0;
198765
- stats.numGeometries = 0;
198766
- stats.numTriangles = 0;
198767
- stats.numVertices = 0;
200323
+ if (this.webIfcFroMOutside)
200324
+ try {
200325
+ if (params.src) {
200326
+ this._loadModel(params.src, params, options, sceneModel);
200327
+ } else {
200328
+ this._parseModel(params.ifc, params, options, sceneModel);
200329
+ }
200330
+ } catch (e) {
200331
+ this.error(e);
200332
+ sceneModel.fire("error", e);
200333
+ }
198768
200334
 
198769
- if (options.wasmPath) {
198770
- this._ifcAPI.SetWasmPath(options.wasmPath);
198771
- }
200335
+ this.on("initialized", () => {
200336
+ try {
200337
+ if (params.src) {
200338
+ this._loadModel(params.src, params, options, sceneModel);
200339
+ } else {
200340
+ this._parseModel(params.ifc, params, options, sceneModel);
200341
+ }
200342
+ } catch (e) {
200343
+ this.error(e);
200344
+ sceneModel.fire("error", e);
200345
+ }
200346
+ });
198772
200347
 
198773
- const dataArray = new Uint8Array(arrayBuffer);
198774
- const modelID = this._ifcAPI.OpenModel(dataArray);
200348
+ return sceneModel;
200349
+ }
198775
200350
 
198776
- const lines = this._ifcAPI.GetLineIDsWithType(modelID, IFCPROJECT);
198777
- const ifcProjectId = lines.get(0);
200351
+ _loadModel(src, params, options, sceneModel) {
200352
+ const spinner = this.viewer.scene.canvas.spinner;
200353
+ spinner.processes++;
200354
+ this._dataSource.getIFC(
200355
+ params.src,
200356
+ (arrayBuffer) => {
200357
+ this._parseModel(arrayBuffer, params, options, sceneModel);
200358
+ spinner.processes--;
200359
+ },
200360
+ (errMsg) => {
200361
+ spinner.processes--;
200362
+ this.error(errMsg);
200363
+ sceneModel.fire("error", errMsg);
200364
+ }
200365
+ );
200366
+ }
198778
200367
 
198779
- const loadMetadata = (params.loadMetadata !== false);
200368
+ _parseModel(arrayBuffer, params, options, sceneModel) {
200369
+ if (sceneModel.destroyed) {
200370
+ return;
200371
+ }
200372
+ const stats = params.stats || {};
200373
+ stats.sourceFormat = "IFC";
200374
+ stats.schemaVersion = "";
200375
+ stats.title = "";
200376
+ stats.author = "";
200377
+ stats.created = "";
200378
+ stats.numMetaObjects = 0;
200379
+ stats.numPropertySets = 0;
200380
+ stats.numObjects = 0;
200381
+ stats.numGeometries = 0;
200382
+ stats.numTriangles = 0;
200383
+ stats.numVertices = 0;
200384
+
200385
+ if (this.webIfcFroMOutside) {
200386
+ if (!this._ifcAPI) {
200387
+ throw "WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";
200388
+ }
200389
+ } else {
200390
+ if (options.wasmPath) {
200391
+ this._ifcAPI.SetWasmPath(options.wasmPath);
200392
+ }
200393
+ }
198780
200394
 
198781
- const metadata = loadMetadata ? {
198782
- id: "",
198783
- projectId: "" + ifcProjectId,
198784
- author: "",
198785
- createdAt: "",
198786
- schema: "",
198787
- creatingApplication: "",
198788
- metaObjects: [],
198789
- propertySets: []
198790
- } : null;
200395
+ const dataArray = new Uint8Array(arrayBuffer);
200396
+ const modelID = this._ifcAPI.OpenModel(dataArray);
200397
+ const modelSchema = this._ifcAPI.GetModelSchema(modelID);
198791
200398
 
198792
- const ctx = {
198793
- modelID,
198794
- sceneModel,
198795
- loadMetadata,
198796
- metadata,
198797
- metaObjects: {},
198798
- options,
198799
- log: function (msg) {
198800
- },
198801
- nextId: 0,
198802
- stats
198803
- };
200399
+ const lines = this._ifcAPI.GetLineIDsWithType(modelID, this._webIFC.IFCPROJECT);
200400
+ const ifcProjectId = lines.get(0);
198804
200401
 
198805
- if (loadMetadata) {
200402
+ const loadMetadata = params.loadMetadata !== false;
198806
200403
 
198807
- if (options.includeTypes) {
198808
- ctx.includeTypes = {};
198809
- for (let i = 0, len = options.includeTypes.length; i < len; i++) {
198810
- ctx.includeTypes[options.includeTypes[i]] = true;
198811
- }
198812
- }
200404
+ const metadata = loadMetadata
200405
+ ? {
200406
+ id: "",
200407
+ projectId: "" + ifcProjectId,
200408
+ author: "",
200409
+ createdAt: "",
200410
+ schema: "",
200411
+ creatingApplication: "",
200412
+ metaObjects: [],
200413
+ propertySets: []
200414
+ }
200415
+ : null;
198813
200416
 
198814
- if (options.excludeTypes) {
198815
- ctx.excludeTypes = {};
198816
- for (let i = 0, len = options.excludeTypes.length; i < len; i++) {
198817
- ctx.excludeTypes[options.excludeTypes[i]] = true;
198818
- }
198819
- }
200417
+ const ctx = {
200418
+ modelID,
200419
+ modelSchema,
200420
+ sceneModel,
200421
+ loadMetadata,
200422
+ metadata,
200423
+ metaObjects: {},
200424
+ options,
200425
+ log: function (msg) {},
200426
+ nextId: 0,
200427
+ stats
200428
+ };
198820
200429
 
198821
- this._parseMetaObjects(ctx);
198822
- this._parsePropertySets(ctx);
198823
- }
200430
+ if (loadMetadata) {
200431
+ if (options.includeTypes) {
200432
+ ctx.includeTypes = {};
200433
+ for (let i = 0, len = options.includeTypes.length; i < len; i++) {
200434
+ ctx.includeTypes[options.includeTypes[i]] = true;
200435
+ }
200436
+ }
198824
200437
 
198825
- this._parseGeometry(ctx);
200438
+ if (options.excludeTypes) {
200439
+ ctx.excludeTypes = {};
200440
+ for (let i = 0, len = options.excludeTypes.length; i < len; i++) {
200441
+ ctx.excludeTypes[options.excludeTypes[i]] = true;
200442
+ }
200443
+ }
198826
200444
 
198827
- sceneModel.finalize();
200445
+ this._parseMetaObjects(ctx);
200446
+ this._parsePropertySets(ctx);
200447
+ }
198828
200448
 
198829
- if (loadMetadata) {
198830
- const metaModelId = sceneModel.id;
198831
- this.viewer.metaScene.createMetaModel(metaModelId, ctx.metadata, options);
198832
- }
200449
+ this._parseGeometry(ctx);
198833
200450
 
198834
- sceneModel.scene.once("tick", () => {
198835
- if (sceneModel.destroyed) {
198836
- return;
198837
- }
198838
- sceneModel.scene.fire("modelLoaded", sceneModel.id); // FIXME: Assumes listeners know order of these two events
198839
- sceneModel.fire("loaded", true, false); // Don't forget the event, for late subscribers
198840
- });
198841
- }
200451
+ sceneModel.finalize();
198842
200452
 
198843
- _parseMetaObjects(ctx) {
198844
- const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, IFCPROJECT);
198845
- const ifcProjectId = lines.get(0);
198846
- const ifcProject = this._ifcAPI.GetLine(ctx.modelID, ifcProjectId);
198847
- this._parseSpatialChildren(ctx, ifcProject);
198848
- }
200453
+ if (loadMetadata) {
200454
+ const metaModelId = sceneModel.id;
200455
+ this.viewer.metaScene.createMetaModel(metaModelId, ctx.metadata, options);
200456
+ }
200457
+ sceneModel.scene.once("tick", () => {
200458
+ if (sceneModel.destroyed) {
200459
+ return;
200460
+ }
200461
+ sceneModel.scene.fire("modelLoaded", sceneModel.id); // FIXME: Assumes listeners know order of these two events
200462
+ sceneModel.fire("loaded", true, false); // Don't forget the event, for late subscribers
200463
+ });
200464
+ }
198849
200465
 
198850
- _parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {
198851
- const metaObjectType = ifcElement.__proto__.constructor.name;
198852
- if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {
198853
- return;
198854
- }
198855
- if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {
198856
- return;
198857
- }
198858
- this._createMetaObject(ctx, ifcElement, parentMetaObjectId);
198859
- const metaObjectId = ifcElement.GlobalId.value;
198860
- this._parseRelatedItemsOfType(ctx, ifcElement.expressID, 'RelatingObject', 'RelatedObjects', IFCRELAGGREGATES, metaObjectId);
198861
- this._parseRelatedItemsOfType(ctx, ifcElement.expressID, 'RelatingStructure', 'RelatedElements', IFCRELCONTAINEDINSPATIALSTRUCTURE, metaObjectId);
198862
- }
200466
+ _parseMetaObjects(ctx) {
200467
+ const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, this._webIFC.IFCPROJECT);
200468
+ const ifcProjectId = lines.get(0);
200469
+ const ifcProject = this._ifcAPI.GetLine(ctx.modelID, ifcProjectId);
200470
+ this._parseSpatialChildren(ctx, ifcProject);
200471
+ }
198863
200472
 
198864
- _createMetaObject(ctx, ifcElement, parentMetaObjectId) {
198865
- const id = ifcElement.GlobalId.value;
198866
- const metaObjectType = ifcElement.__proto__.constructor.name;
198867
- const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== "") ? ifcElement.Name.value : metaObjectType;
198868
- const metaObject = {
198869
- id: id,
198870
- name: metaObjectName,
198871
- type: metaObjectType,
198872
- parent: parentMetaObjectId
198873
- };
198874
- ctx.metadata.metaObjects.push(metaObject);
198875
- ctx.metaObjects[id] = metaObject;
198876
- ctx.stats.numMetaObjects++;
198877
- }
200473
+ _parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {
200474
+ const metaObjectType = this._ifcAPI.GetNameFromTypeCode(ifcElement.type);
200475
+ if (ctx.includeTypes && !ctx.includeTypes[metaObjectType]) {
200476
+ return;
200477
+ }
200478
+ if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {
200479
+ return;
200480
+ }
200481
+ this._createMetaObject(ctx, ifcElement, parentMetaObjectId);
200482
+ const metaObjectId = ifcElement.GlobalId.value;
200483
+ this._parseRelatedItemsOfType(
200484
+ ctx,
200485
+ ifcElement.expressID,
200486
+ "RelatingObject",
200487
+ "RelatedObjects",
200488
+ this._webIFC.IFCRELAGGREGATES,
200489
+ metaObjectId
200490
+ );
200491
+ this._parseRelatedItemsOfType(
200492
+ ctx,
200493
+ ifcElement.expressID,
200494
+ "RelatingStructure",
200495
+ "RelatedElements",
200496
+ this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,
200497
+ metaObjectId
200498
+ );
200499
+ }
198878
200500
 
198879
- _parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {
198880
- const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, type);
198881
- for (let i = 0; i < lines.size(); i++) {
198882
- const relID = lines.get(i);
198883
- const rel = this._ifcAPI.GetLine(ctx.modelID, relID);
198884
- const relatedItems = rel[relation];
198885
- let foundElement = false;
198886
- if (Array.isArray(relatedItems)) {
198887
- const values = relatedItems.map((item) => item.value);
198888
- foundElement = values.includes(id);
198889
- } else {
198890
- foundElement = (relatedItems.value === id);
198891
- }
198892
- if (foundElement) {
198893
- const element = rel[related];
198894
- if (!Array.isArray(element)) {
198895
- const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element.value);
198896
- this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);
198897
- } else {
198898
- element.forEach((element2) => {
198899
- const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element2.value);
198900
- this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);
198901
- });
198902
- }
198903
- }
198904
- }
198905
- }
200501
+ _createMetaObject(ctx, ifcElement, parentMetaObjectId) {
200502
+ const id = ifcElement.GlobalId.value;
200503
+ let metaObjectType;
200504
+ if (this.webIfcFroMOutside) metaObjectType = this._ifcAPI.GetNameFromTypeCode(ifcElement.type);
200505
+ else metaObjectType = ifcElement.__proto__.constructor.name;
200506
+ const metaObjectName = ifcElement.Name && ifcElement.Name.value !== "" ? ifcElement.Name.value : metaObjectType;
200507
+ const metaObject = {
200508
+ id: id,
200509
+ name: metaObjectName,
200510
+ type: metaObjectType,
200511
+ parent: parentMetaObjectId
200512
+ };
200513
+ ctx.metadata.metaObjects.push(metaObject);
200514
+ ctx.metaObjects[id] = metaObject;
200515
+ ctx.stats.numMetaObjects++;
200516
+ }
200517
+
200518
+ _parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {
200519
+ const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, type);
200520
+ for (let i = 0; i < lines.size(); i++) {
200521
+ const relID = lines.get(i);
200522
+ const rel = this._ifcAPI.GetLine(ctx.modelID, relID);
200523
+ const relatedItems = rel[relation];
200524
+ let foundElement = false;
200525
+ if (Array.isArray(relatedItems)) {
200526
+ const values = relatedItems.map((item) => item.value);
200527
+ foundElement = values.includes(id);
200528
+ } else {
200529
+ foundElement = relatedItems.value === id;
200530
+ }
200531
+ if (foundElement) {
200532
+ const element = rel[related];
200533
+ if (!Array.isArray(element)) {
200534
+ const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element.value);
200535
+ this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);
200536
+ } else {
200537
+ element.forEach((element2) => {
200538
+ const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element2.value);
200539
+ this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);
200540
+ });
200541
+ }
200542
+ }
200543
+ }
200544
+ }
198906
200545
 
198907
- _parsePropertySets(ctx) {
198908
- const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, IFCRELDEFINESBYPROPERTIES);
198909
- for (let i = 0; i < lines.size(); i++) {
198910
- let relID = lines.get(i);
198911
- let rel = this._ifcAPI.GetLine(ctx.modelID, relID, true);
198912
- if (rel) {
198913
- const relatingPropertyDefinition = rel.RelatingPropertyDefinition;
198914
- if (!relatingPropertyDefinition) {
198915
- continue;
198916
- }
198917
- const propertySetId = relatingPropertyDefinition.GlobalId.value;
198918
- const props = relatingPropertyDefinition.HasProperties;
198919
- if (props && props.length > 0) {
198920
- const propertySetType = "Default";
198921
- const propertySetName = relatingPropertyDefinition.Name.value;
198922
- const properties = [];
198923
- for (let i = 0, len = props.length; i < len; i++) {
198924
- const prop = props[i];
198925
- const name = prop.Name;
198926
- const nominalValue = prop.NominalValue;
198927
- if (name && nominalValue) {
198928
- const property = {
198929
- name: name.value,
198930
- type: nominalValue.type,
198931
- value: nominalValue.value,
198932
- valueType: nominalValue.valueType
198933
- };
198934
- if (prop.Description) {
198935
- property.description = prop.Description.value;
198936
- } else if (nominalValue.description) {
198937
- property.description = nominalValue.description;
198938
- }
198939
- properties.push(property);
198940
- }
198941
- }
198942
- const propertySet = {
198943
- id: propertySetId,
198944
- type: propertySetType,
198945
- name: propertySetName,
198946
- properties: properties
198947
- };
198948
- ctx.metadata.propertySets.push(propertySet);
198949
- ctx.stats.numPropertySets++;
198950
- const relatedObjects = rel.RelatedObjects;
198951
- if (!relatedObjects || relatedObjects.length === 0) {
198952
- return;
198953
- }
198954
- for (let i = 0, len = relatedObjects.length; i < len; i++) {
198955
- const relatedObject = relatedObjects[i];
198956
- const metaObjectId = relatedObject.GlobalId.value;
198957
- const metaObject = ctx.metaObjects[metaObjectId];
198958
- if (metaObject) {
198959
- if (!metaObject.propertySetIds) {
198960
- metaObject.propertySetIds = [];
198961
- }
198962
- metaObject.propertySetIds.push(propertySetId);
198963
- }
198964
- }
198965
- }
198966
- }
198967
- }
198968
- }
200546
+ _parsePropertySets(ctx) {
200547
+ const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, this._webIFC.IFCRELDEFINESBYPROPERTIES);
200548
+ for (let i = 0; i < lines.size(); i++) {
200549
+ let relID = lines.get(i);
200550
+ let rel = this._ifcAPI.GetLine(ctx.modelID, relID, true);
200551
+ if (rel) {
200552
+ const relatingPropertyDefinition = rel.RelatingPropertyDefinition;
200553
+ if (!relatingPropertyDefinition) {
200554
+ continue;
200555
+ }
200556
+ const propertySetId = relatingPropertyDefinition.GlobalId.value;
200557
+ const props = relatingPropertyDefinition.HasProperties;
200558
+ if (props && props.length > 0) {
200559
+ const propertySetType = "Default";
200560
+ const propertySetName = relatingPropertyDefinition.Name.value;
200561
+ const properties = [];
200562
+ for (let i = 0, len = props.length; i < len; i++) {
200563
+ const prop = props[i];
200564
+ const name = prop.Name;
200565
+ const nominalValue = prop.NominalValue;
200566
+ if (name && nominalValue) {
200567
+ const property = {
200568
+ name: name.value,
200569
+ type: nominalValue.type,
200570
+ value: nominalValue.value,
200571
+ valueType: nominalValue.valueType
200572
+ };
200573
+ if (prop.Description) {
200574
+ property.description = prop.Description.value;
200575
+ } else if (nominalValue.description) {
200576
+ property.description = nominalValue.description;
200577
+ }
200578
+ properties.push(property);
200579
+ }
200580
+ }
200581
+ const propertySet = {
200582
+ id: propertySetId,
200583
+ type: propertySetType,
200584
+ name: propertySetName,
200585
+ properties: properties
200586
+ };
200587
+ ctx.metadata.propertySets.push(propertySet);
200588
+ ctx.stats.numPropertySets++;
200589
+ const relatedObjects = rel.RelatedObjects;
200590
+ if (!relatedObjects || relatedObjects.length === 0) {
200591
+ return;
200592
+ }
200593
+ for (let i = 0, len = relatedObjects.length; i < len; i++) {
200594
+ const relatedObject = relatedObjects[i];
200595
+ const metaObjectId = relatedObject.GlobalId.value;
200596
+ const metaObject = ctx.metaObjects[metaObjectId];
200597
+ if (metaObject) {
200598
+ if (!metaObject.propertySetIds) {
200599
+ metaObject.propertySetIds = [];
200600
+ }
200601
+ metaObject.propertySetIds.push(propertySetId);
200602
+ }
200603
+ }
200604
+ }
200605
+ }
200606
+ }
200607
+ }
198969
200608
 
198970
- _parseGeometry(ctx) {
198971
- this._ifcAPI.StreamAllMeshes(ctx.modelID, (flatMesh) => {
198972
- // TODO: Can we do geometry reuse with web-ifc?
198973
- const flatMeshExpressID = flatMesh.expressID;
198974
- const placedGeometries = flatMesh.geometries;
198975
- const meshIds = [];
198976
- const properties = this._ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);
198977
- const globalId = properties.GlobalId.value;
198978
- if (ctx.loadMetadata) {
198979
- const metaObjectId = globalId;
198980
- const metaObject = ctx.metaObjects[metaObjectId];
198981
- if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.type]))) {
198982
- return;
198983
- }
198984
- if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.type])) {
198985
- return;
198986
- }
198987
- }
198988
- const matrix = math.mat4();
198989
- const origin = math.vec3();
198990
- for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {
198991
- const placedGeometry = placedGeometries.get(j);
198992
- const geometry = this._ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);
198993
- const vertexData = this._ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());
198994
- const indices = this._ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());
198995
- // De-interleave vertex arrays
198996
- const positions = new Float64Array(vertexData.length / 2);
198997
- const normals = new Float32Array(vertexData.length / 2);
198998
- for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {
198999
- positions[l + 0] = vertexData[k * 6 + 0];
199000
- positions[l + 1] = vertexData[k * 6 + 1];
199001
- positions[l + 2] = vertexData[k * 6 + 2];
199002
- }
199003
- matrix.set(placedGeometry.flatTransformation);
199004
- math.transformPositions3(matrix, positions);
199005
- const rtcNeeded = worldToRTCPositions(positions, positions, origin);
199006
- if (!ctx.options.autoNormals) {
199007
- for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {
199008
- normals[l + 0] = vertexData[k * 6 + 3];
199009
- normals[l + 1] = vertexData[k * 6 + 4];
199010
- normals[l + 2] = vertexData[k * 6 + 5];
199011
- }
199012
- }
199013
- ctx.stats.numGeometries++;
199014
- ctx.stats.numVertices += (positions.length / 3);
199015
- ctx.stats.numTriangles += (indices.length / 3);
199016
- const meshId = ("mesh" + ctx.nextId++);
199017
- ctx.sceneModel.createMesh({
199018
- id: meshId,
199019
- primitive: "triangles", // TODO
199020
- origin: rtcNeeded ? origin : null,
199021
- positions: positions,
199022
- normals: ctx.options.autoNormals ? null : normals,
199023
- indices: indices,
199024
- color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],
199025
- opacity: placedGeometry.color.w
199026
- });
199027
- meshIds.push(meshId);
199028
- }
199029
- const entityId = ctx.options.globalizeObjectIds ? math.globalizeObjectId(ctx.sceneModel.id, globalId) : globalId;
199030
- ctx.sceneModel.createEntity({
199031
- id: entityId,
199032
- meshIds: meshIds,
199033
- isObject: true
199034
- });
199035
- ctx.stats.numObjects++;
199036
- });
199037
- }
200609
+ _parseGeometry(ctx) {
200610
+ this._ifcAPI.StreamAllMeshes(ctx.modelID, (flatMesh) => {
200611
+ // TODO: Can we do geometry reuse with web-ifc?
200612
+ const flatMeshExpressID = flatMesh.expressID;
200613
+ const placedGeometries = flatMesh.geometries;
200614
+ const meshIds = [];
200615
+ const properties = this._ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);
200616
+ const globalId = properties.GlobalId.value;
200617
+ if (ctx.loadMetadata) {
200618
+ const metaObjectId = globalId;
200619
+ const metaObject = ctx.metaObjects[metaObjectId];
200620
+ if (ctx.includeTypes && (!metaObject || !ctx.includeTypes[metaObject.type])) {
200621
+ return;
200622
+ }
200623
+ if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.type])) {
200624
+ return;
200625
+ }
200626
+ }
200627
+ const matrix = math.mat4();
200628
+ const origin = math.vec3();
200629
+ for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {
200630
+ const placedGeometry = placedGeometries.get(j);
200631
+ const geometry = this._ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);
200632
+ const vertexData = this._ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());
200633
+ const indices = this._ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());
200634
+ // De-interleave vertex arrays
200635
+ const positions = new Float64Array(vertexData.length / 2);
200636
+ const normals = new Float32Array(vertexData.length / 2);
200637
+ for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {
200638
+ positions[l + 0] = vertexData[k * 6 + 0];
200639
+ positions[l + 1] = vertexData[k * 6 + 1];
200640
+ positions[l + 2] = vertexData[k * 6 + 2];
200641
+ }
200642
+ matrix.set(placedGeometry.flatTransformation);
200643
+ math.transformPositions3(matrix, positions);
200644
+ const rtcNeeded = worldToRTCPositions(positions, positions, origin);
200645
+ if (!ctx.options.autoNormals) {
200646
+ for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {
200647
+ normals[l + 0] = vertexData[k * 6 + 3];
200648
+ normals[l + 1] = vertexData[k * 6 + 4];
200649
+ normals[l + 2] = vertexData[k * 6 + 5];
200650
+ }
200651
+ }
200652
+ ctx.stats.numGeometries++;
200653
+ ctx.stats.numVertices += positions.length / 3;
200654
+ ctx.stats.numTriangles += indices.length / 3;
200655
+ const meshId = "mesh" + ctx.nextId++;
200656
+ ctx.sceneModel.createMesh({
200657
+ id: meshId,
200658
+ primitive: "triangles", // TODO
200659
+ origin: rtcNeeded ? origin : null,
200660
+ positions: positions,
200661
+ normals: ctx.options.autoNormals ? null : normals,
200662
+ indices: indices,
200663
+ color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],
200664
+ opacity: placedGeometry.color.w
200665
+ });
200666
+ meshIds.push(meshId);
200667
+ }
200668
+ const entityId = ctx.options.globalizeObjectIds ? math.globalizeObjectId(ctx.sceneModel.id, globalId) : globalId;
200669
+ ctx.sceneModel.createEntity({
200670
+ id: entityId,
200671
+ meshIds: meshIds,
200672
+ isObject: true
200673
+ });
200674
+ ctx.stats.numObjects++;
200675
+ });
200676
+ }
199038
200677
  }
199039
200678
 
199040
200679
  /**
@@ -201286,4 +202925,4 @@ class CityJSONLoaderPlugin extends Plugin {
201286
202925
  }
201287
202926
  }
201288
202927
 
201289
- export { AlphaFormat, AmbientLight, AngleMeasurementsControl, AngleMeasurementsMouseControl, AngleMeasurementsPlugin, AngleMeasurementsTouchControl, AnnotationsPlugin, AxisGizmoPlugin, BCFViewpointsPlugin, Bitmap, ByteType, CameraMemento, CameraPath, CameraPathAnimation, CityJSONLoaderPlugin, ClampToEdgeWrapping, Component, CompressedMediaType, Configs, ContextMenu, CubicBezierCurve, Curve, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DirLight, DistanceMeasurementsControl, DistanceMeasurementsMouseControl, DistanceMeasurementsPlugin, DistanceMeasurementsTouchControl, EdgeMaterial, EmphasisMaterial, FaceAlignedSectionPlanesPlugin, FastNavPlugin, FloatType, Fresnel, Frustum$1 as Frustum, FrustumPlane, GIFMediaType, GLTFDefaultDataSource, GLTFLoaderPlugin, HalfFloatType, ImagePlane, IntType, JPEGMediaType, KTX2TextureTranscoder, LASLoaderPlugin, LambertMaterial, LightMap, LineSet, LinearEncoding, LinearFilter, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoadingManager, LocaleService, LuminanceAlphaFormat, LuminanceFormat, Map$1 as Map, Marker, MarqueePicker, MarqueePickerMouseControl, Mesh, MetallicMaterial, MirroredRepeatWrapping, ModelMemento, NavCubePlugin, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, Node$2 as Node, OBJLoaderPlugin, ObjectsKdTree3, ObjectsMemento, PNGMediaType, Path, PerformanceModel, PhongMaterial, Plugin, PointLight, PointerLens, QuadraticBezierCurve, Queue, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, ReadableGeometry, RedFormat, RedIntegerFormat, ReflectionMap, RepeatWrapping, STLDefaultDataSource, STLLoaderPlugin, SceneModel, SceneModelMesh, SceneModelTransform, SectionPlane, SectionPlanesPlugin, ShortType, Skybox, SkyboxesPlugin, SpecularMaterial, SplineCurve, SpriteMarker, StoreyViewsPlugin, Texture, TextureTranscoder, TreeViewPlugin, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VBOGeometry, ViewCullPlugin, Viewer, WebIFCLoaderPlugin, WorkerPool$1 as WorkerPool, XKTDefaultDataSource, XKTLoaderPlugin, XML3DLoaderPlugin, buildBoxGeometry, buildBoxLinesGeometry, buildCylinderGeometry, buildGridGeometry, buildPlaneGeometry, buildSphereGeometry, buildTorusGeometry, buildVectorTextGeometry, createRTCViewMat, frustumIntersectsAABB3, getKTX2TextureTranscoder, getPlaneRTCPos, load3DSGeometry, loadOBJGeometry, math, rtcToWorldPos, sRGBEncoding, setFrustum, stats, utils, worldToRTCPos, worldToRTCPositions };
202928
+ export { AlphaFormat, AmbientLight, AngleMeasurementsControl, AngleMeasurementsMouseControl, AngleMeasurementsPlugin, AngleMeasurementsTouchControl, AnnotationsPlugin, AxisGizmoPlugin, BCFViewpointsPlugin, Bitmap, ByteType, CameraMemento, CameraPath, CameraPathAnimation, CityJSONLoaderPlugin, ClampToEdgeWrapping, Component, CompressedMediaType, Configs, ContextMenu, CubicBezierCurve, Curve, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DirLight, DistanceMeasurementsControl, DistanceMeasurementsMouseControl, DistanceMeasurementsPlugin, DistanceMeasurementsTouchControl, EdgeMaterial, EmphasisMaterial, FaceAlignedSectionPlanesPlugin, FastNavPlugin, FloatType, Fresnel, Frustum$1 as Frustum, FrustumPlane, GIFMediaType, GLTFDefaultDataSource, GLTFLoaderPlugin, HalfFloatType, ImagePlane, IntType, JPEGMediaType, KTX2TextureTranscoder, LASLoaderPlugin, LambertMaterial, LightMap, LineSet, LinearEncoding, LinearFilter, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoadingManager, LocaleService, LuminanceAlphaFormat, LuminanceFormat, Map$1 as Map, Marker, MarqueePicker, MarqueePickerMouseControl, Mesh, MetallicMaterial, MirroredRepeatWrapping, ModelMemento, NavCubePlugin, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, Node$2 as Node, OBJLoaderPlugin, ObjectsKdTree3, ObjectsMemento, PNGMediaType, Path, PerformanceModel, PhongMaterial, Plugin, PointLight, PointerLens, QuadraticBezierCurve, Queue, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, ReadableGeometry, RedFormat, RedIntegerFormat, ReflectionMap, RepeatWrapping, STLDefaultDataSource, STLLoaderPlugin, SceneModel, SceneModelMesh, SceneModelTransform, SectionBox, SectionPlane, SectionPlanesPlugin, ShortType, Skybox, SkyboxesPlugin, SpecularMaterial, SplineCurve, SpriteMarker, StoreyViewsPlugin, Texture, TextureTranscoder, TreeViewPlugin, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VBOGeometry, ViewCullPlugin, Viewer, WebIFCLoaderPlugin, WorkerPool$1 as WorkerPool, XKTDefaultDataSource, XKTLoaderPlugin, XML3DLoaderPlugin, buildBoxGeometry, buildBoxLinesGeometry, buildCylinderGeometry, buildGridGeometry, buildPlaneGeometry, buildSphereGeometry, buildTorusGeometry, buildVectorTextGeometry, createRTCViewMat, frustumIntersectsAABB3, getKTX2TextureTranscoder, getPlaneRTCPos, load3DSGeometry, loadOBJGeometry, math, rtcToWorldPos, sRGBEncoding, setFrustum, stats, utils, worldToRTCPos, worldToRTCPositions };