@ifc-lite/sdk 2.1.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/headless-mutate.d.ts +93 -0
- package/dist/headless-mutate.d.ts.map +1 -0
- package/dist/headless-mutate.js +140 -0
- package/dist/headless-mutate.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/namespaces/bsdd.d.ts.map +1 -1
- package/dist/namespaces/bsdd.js +10 -10
- package/dist/namespaces/bsdd.js.map +1 -1
- package/dist/namespaces/drawing.d.ts +18 -2
- package/dist/namespaces/drawing.d.ts.map +1 -1
- package/dist/namespaces/drawing.js +20 -4
- package/dist/namespaces/drawing.js.map +1 -1
- package/dist/namespaces/export.d.ts +10 -7
- package/dist/namespaces/export.d.ts.map +1 -1
- package/dist/namespaces/export.js +36 -49
- package/dist/namespaces/export.js.map +1 -1
- package/dist/namespaces/ids.d.ts +9 -0
- package/dist/namespaces/ids.d.ts.map +1 -1
- package/dist/namespaces/ids.js +22 -2
- package/dist/namespaces/ids.js.map +1 -1
- package/dist/namespaces/store.d.ts +7 -3
- package/dist/namespaces/store.d.ts.map +1 -1
- package/dist/namespaces/store.js +7 -3
- package/dist/namespaces/store.js.map +1 -1
- package/dist/namespaces/style.d.ts +44 -0
- package/dist/namespaces/style.d.ts.map +1 -0
- package/dist/namespaces/style.js +83 -0
- package/dist/namespaces/style.js.map +1 -0
- package/dist/types.d.ts +27 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawing.js","sourceRoot":"","sources":["../../src/namespaces/drawing.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiE/D,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,KAAK,UAAU,aAAa;IAC1B,MAAM,IAAI,GAAG,sBAAsB,CAAC;IACpC,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAID,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,6EAA6E;AAC7E,MAAM,OAAO,gBAAgB;IAE3B,6EAA6E;IAC7E,2BAA2B;IAC3B,6EAA6E;IAE7E,iDAAiD;IACjD,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,gBAA6B,CAAC;IAC3C,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,gBAA0B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,oBAA8B,CAAC,QAAQ,CAAuB,CAAC;IAC7E,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,oBAAoB,CAAC,KAAiB;QAC1C,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,oBAA8B,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,6EAA6E;IAC7E,6BAA6B;IAC7B,6EAA6E;IAE7E,sDAAsD;IACtD,KAAK,CAAC,gBAAgB,CAAC,KAAwB,EAAE,eAAe,GAAG,IAAI;QACrE,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnD,OAAQ,GAAG,CAAC,gBAA0B,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,iBAAiB,CAAC,YAAoB,EAAE,QAAgB,EAAE,KAAe,EAAE,WAAoB;QACnG,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,iBAA2B,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACtF,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,WAAW,CAAC,GAAG,QAAmB;QACtC,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,WAAqB,CAAC,GAAG,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,UAAU,CAAC,GAAG,QAAmB;QACrC,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,UAAoB,CAAC,GAAG,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,6EAA6E;IAC7E,gBAAgB;IAChB,6EAA6E;IAE7E
|
|
1
|
+
{"version":3,"file":"drawing.js","sourceRoot":"","sources":["../../src/namespaces/drawing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bim.export — Multi-format data export
|
|
3
|
-
*
|
|
4
|
-
* Wraps @ifc-lite/export for GLTF, CSV, STEP, and Parquet export.
|
|
5
|
-
* The export namespace works with EntityRef to determine which
|
|
6
|
-
* entities to include, and delegates to the appropriate exporter.
|
|
7
|
-
*/
|
|
8
1
|
import type { BimBackend, EntityRef } from '../types.js';
|
|
9
2
|
export interface ExportCsvOptions {
|
|
10
3
|
columns: string[];
|
|
@@ -76,6 +69,16 @@ export declare class ExportNamespace {
|
|
|
76
69
|
* Trigger a browser file download with raw content.
|
|
77
70
|
*/
|
|
78
71
|
download(content: string, filename: string, mimeType?: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* RFC 4180 quoting + the CWE-1236 formula-injection guard, delegated to
|
|
74
|
+
* `@ifc-lite/export`'s single escaper.
|
|
75
|
+
*
|
|
76
|
+
* This method used to carry the repo's reference copy of the guard (#1944).
|
|
77
|
+
* It was the best of nine, but still its own: its invisible class was
|
|
78
|
+
* `\p{Zs}`, which leaves U+2028 LINE SEPARATOR and U+2029 PARAGRAPH
|
|
79
|
+
* SEPARATOR usable as hiding places for a trigger. The shared escaper uses
|
|
80
|
+
* `\p{Z}`, covering `Zl`/`Zp` too.
|
|
81
|
+
*/
|
|
79
82
|
private escapeCsv;
|
|
80
83
|
}
|
|
81
84
|
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAgD,MAAM,aAAa,CAAC;AAEvG,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mDAAmD;AACnD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAoEzD;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAoDrE;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,GAAG,UAAU;IAQ5E;;;;;;;;OAQG;IACG,MAAM,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhE;;;;;;;;OAQG;IACG,MAAM,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpE;;;;;;;;;OASG;IACH,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* bim.export — Multi-format data export
|
|
6
|
+
*
|
|
7
|
+
* Wraps @ifc-lite/export for GLTF, CSV, STEP, and Parquet export.
|
|
8
|
+
* The export namespace works with EntityRef to determine which
|
|
9
|
+
* entities to include, and delegates to the appropriate exporter.
|
|
10
|
+
*/
|
|
11
|
+
import { escapeCsvCell } from '@ifc-lite/export';
|
|
12
|
+
import { findPropertyInSets, findQuantityInSets } from '@ifc-lite/query';
|
|
4
13
|
/** bim.export — Data export in multiple formats */
|
|
5
14
|
export class ExportNamespace {
|
|
6
15
|
backend;
|
|
@@ -60,24 +69,18 @@ export class ExportNamespace {
|
|
|
60
69
|
const valueName = col.slice(dotIdx + 1);
|
|
61
70
|
// Try property sets first
|
|
62
71
|
if (psets) {
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
row.push(String(prop.value));
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
72
|
+
const prop = findPropertyInSets(psets, setName, valueName);
|
|
73
|
+
if (prop?.value != null) {
|
|
74
|
+
row.push(String(prop.value));
|
|
75
|
+
continue;
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
// Fall back to quantity sets
|
|
73
79
|
if (qsets) {
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
row.push(String(qty.value));
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
80
|
+
const qty = findQuantityInSets(qsets, setName, valueName);
|
|
81
|
+
if (qty?.value != null) {
|
|
82
|
+
row.push(String(qty.value));
|
|
83
|
+
continue;
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
row.push('');
|
|
@@ -144,24 +147,18 @@ export class ExportNamespace {
|
|
|
144
147
|
let resolved = false;
|
|
145
148
|
// Try property sets first
|
|
146
149
|
if (psets) {
|
|
147
|
-
const
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
row[col] = prop.value;
|
|
152
|
-
resolved = true;
|
|
153
|
-
}
|
|
150
|
+
const prop = findPropertyInSets(psets, setName, valueName);
|
|
151
|
+
if (prop?.value != null) {
|
|
152
|
+
row[col] = prop.value;
|
|
153
|
+
resolved = true;
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
// Fall back to quantity sets
|
|
157
157
|
if (!resolved && qsets) {
|
|
158
|
-
const
|
|
159
|
-
if (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
row[col] = qty.value;
|
|
163
|
-
resolved = true;
|
|
164
|
-
}
|
|
158
|
+
const qty = findQuantityInSets(qsets, setName, valueName);
|
|
159
|
+
if (qty?.value != null) {
|
|
160
|
+
row[col] = qty.value;
|
|
161
|
+
resolved = true;
|
|
165
162
|
}
|
|
166
163
|
}
|
|
167
164
|
if (!resolved)
|
|
@@ -227,28 +224,18 @@ export class ExportNamespace {
|
|
|
227
224
|
download(content, filename, mimeType) {
|
|
228
225
|
this.backend.export.download(content, filename, mimeType ?? 'text/plain');
|
|
229
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* RFC 4180 quoting + the CWE-1236 formula-injection guard, delegated to
|
|
229
|
+
* `@ifc-lite/export`'s single escaper.
|
|
230
|
+
*
|
|
231
|
+
* This method used to carry the repo's reference copy of the guard (#1944).
|
|
232
|
+
* It was the best of nine, but still its own: its invisible class was
|
|
233
|
+
* `\p{Zs}`, which leaves U+2028 LINE SEPARATOR and U+2029 PARAGRAPH
|
|
234
|
+
* SEPARATOR usable as hiding places for a trigger. The shared escaper uses
|
|
235
|
+
* `\p{Z}`, covering `Zl`/`Zp` too.
|
|
236
|
+
*/
|
|
230
237
|
escapeCsv(value, sep) {
|
|
231
|
-
|
|
232
|
-
// formula trigger so Excel/Sheets treat the cell as text, not a formula.
|
|
233
|
-
//
|
|
234
|
-
// The trigger is looked for past any leading INVISIBLE characters. A BOM,
|
|
235
|
-
// zero-width space, left-to-right mark or non-breaking space in front of
|
|
236
|
-
// `=` does not stop a spreadsheet reading the cell as a formula, but it
|
|
237
|
-
// does stop an anchored regex matching, so `\uFEFF=HYPERLINK(...)`, a BOM then `=`, used to
|
|
238
|
-
// sail through. IFC text properties are attacker-controllable and can
|
|
239
|
-
// carry any of them.
|
|
240
|
-
//
|
|
241
|
-
// `\p{Cf}` (format) and `\p{Zs}` (space separator) deliberately, NOT `\s`:
|
|
242
|
-
// `\s` would swallow a leading tab, and tab is itself a trigger, so
|
|
243
|
-
// "\thello" would stop being guarded.
|
|
244
|
-
let str = value;
|
|
245
|
-
if (/^[\p{Cf}\p{Zs}]*[=+\-@\t\r]/u.test(str)) {
|
|
246
|
-
str = `'${str}`;
|
|
247
|
-
}
|
|
248
|
-
if (str.includes(sep) || str.includes('"') || str.includes('\n') || str.includes('\r')) {
|
|
249
|
-
return `"${str.replace(/"/g, '""')}"`;
|
|
250
|
-
}
|
|
251
|
-
return str;
|
|
238
|
+
return escapeCsvCell(value, { delimiter: sep });
|
|
252
239
|
}
|
|
253
240
|
}
|
|
254
241
|
//# sourceMappingURL=export.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces/ids.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ export interface IDSValidationSummary {
|
|
|
9
9
|
totalSpecifications: number;
|
|
10
10
|
passedSpecifications: number;
|
|
11
11
|
failedSpecifications: number;
|
|
12
|
+
/**
|
|
13
|
+
* Specifications whose applicability matched no entities and whose
|
|
14
|
+
* cardinality does not require a match (e.g. no `minOccurs`). Neither
|
|
15
|
+
* a pass nor a fail — kept separate so `passed + failed +
|
|
16
|
+
* notApplicable === total` always holds, matching
|
|
17
|
+
* `@ifc-lite/ids`'s `IDSValidationSummary.overallPassRate` denominator
|
|
18
|
+
* semantics (not_applicable specs are never counted as passed there).
|
|
19
|
+
*/
|
|
20
|
+
notApplicableSpecifications: number;
|
|
12
21
|
totalEntities: number;
|
|
13
22
|
passedEntities: number;
|
|
14
23
|
failedEntities: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces/ids.js
CHANGED
|
@@ -132,7 +132,7 @@ export class IDSNamespace {
|
|
|
132
132
|
// --------------------------------------------------------------------------
|
|
133
133
|
/** Summarize a validation report into pass/fail counts. */
|
|
134
134
|
summarize(report) {
|
|
135
|
-
let totalSpecs = 0, passedSpecs = 0, failedSpecs = 0;
|
|
135
|
+
let totalSpecs = 0, passedSpecs = 0, failedSpecs = 0, notApplicableSpecs = 0;
|
|
136
136
|
let totalEntities = 0, passedEntities = 0, failedEntities = 0;
|
|
137
137
|
for (const spec of report.specificationResults) {
|
|
138
138
|
totalSpecs++;
|
|
@@ -151,13 +151,33 @@ export class IDSNamespace {
|
|
|
151
151
|
// entities), which entity results alone cannot express. Deriving
|
|
152
152
|
// from entities here used to make this summary disagree with the
|
|
153
153
|
// validator's report.summary for exactly those specs.
|
|
154
|
+
//
|
|
155
|
+
// A spec explicitly marked not_applicable is neither pass nor
|
|
156
|
+
// fail. It used to fall through to an unconditional `else` and get
|
|
157
|
+
// counted as passed — silently inflating the spec-level pass rate
|
|
158
|
+
// for any IDS containing a spec that matched nothing. There is no
|
|
159
|
+
// legacy-shape fallback for `status === undefined` here because
|
|
160
|
+
// `not_applicable` only ever comes from the validator, which always
|
|
161
|
+
// sets `status`.
|
|
162
|
+
if (spec.status === 'not_applicable') {
|
|
163
|
+
notApplicableSpecs++;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
154
166
|
const specFailed = spec.status !== undefined ? spec.status === 'fail' : anyEntityFailed;
|
|
155
167
|
if (specFailed)
|
|
156
168
|
failedSpecs++;
|
|
157
169
|
else
|
|
158
170
|
passedSpecs++;
|
|
159
171
|
}
|
|
160
|
-
return {
|
|
172
|
+
return {
|
|
173
|
+
totalSpecifications: totalSpecs,
|
|
174
|
+
passedSpecifications: passedSpecs,
|
|
175
|
+
failedSpecifications: failedSpecs,
|
|
176
|
+
notApplicableSpecifications: notApplicableSpecs,
|
|
177
|
+
totalEntities,
|
|
178
|
+
passedEntities,
|
|
179
|
+
failedEntities,
|
|
180
|
+
};
|
|
161
181
|
}
|
|
162
182
|
}
|
|
163
183
|
//# sourceMappingURL=ids.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/namespaces/ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,8 +35,12 @@ export declare class StoreNamespace {
|
|
|
35
35
|
* - arrays → STEP list `(a,b,c)` (recursed)
|
|
36
36
|
* - any other string → quoted STEP string
|
|
37
37
|
*
|
|
38
|
+
* `modelId` must be one the backend answers for: the headless CLI backend
|
|
39
|
+
* takes `'default'` or the file basename and throws on anything else, rather
|
|
40
|
+
* than minting a ref that `bim.mutate.*` would then refuse.
|
|
41
|
+
*
|
|
38
42
|
* @example
|
|
39
|
-
* const profile = bim.store.addEntity('
|
|
43
|
+
* const profile = bim.store.addEntity('default', {
|
|
40
44
|
* type: 'IfcRectangleProfileDef',
|
|
41
45
|
* attributes: ['.AREA.', null, '#34', 0.6, 0.4],
|
|
42
46
|
* });
|
|
@@ -73,7 +77,7 @@ export declare class StoreNamespace {
|
|
|
73
77
|
*
|
|
74
78
|
* @example
|
|
75
79
|
* const storeyId = bim.query.byType('IfcBuildingStorey')[0].ref.expressId;
|
|
76
|
-
* const col = bim.store.addColumn('
|
|
80
|
+
* const col = bim.store.addColumn('default', storeyId, {
|
|
77
81
|
* Position: [1, 1, 0],
|
|
78
82
|
* Width: 0.3, Depth: 0.4, Height: 3,
|
|
79
83
|
* Name: 'Column 1',
|
|
@@ -86,7 +90,7 @@ export declare class StoreNamespace {
|
|
|
86
90
|
* and is extruded upward by `Height`.
|
|
87
91
|
*
|
|
88
92
|
* @example
|
|
89
|
-
* bim.store.addWall('
|
|
93
|
+
* bim.store.addWall('default', storeyId, {
|
|
90
94
|
* Start: [0, 0, 0], End: [5, 0, 0],
|
|
91
95
|
* Thickness: 0.2, Height: 3, Name: 'North Wall',
|
|
92
96
|
* });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS;IA+BnF;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAIrC;;;;;;;;OAQG;IACH,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3E;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS;IAI9F;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAI1F;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAI1F;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAI1F,uEAAuE;IACvE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAI1F,yEAAyE;IACzE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS;IAI9F;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS;IAI5F;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAI1F;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS;IAI5F;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS;CAG/F"}
|
package/dist/namespaces/store.js
CHANGED
|
@@ -40,8 +40,12 @@ export class StoreNamespace {
|
|
|
40
40
|
* - arrays → STEP list `(a,b,c)` (recursed)
|
|
41
41
|
* - any other string → quoted STEP string
|
|
42
42
|
*
|
|
43
|
+
* `modelId` must be one the backend answers for: the headless CLI backend
|
|
44
|
+
* takes `'default'` or the file basename and throws on anything else, rather
|
|
45
|
+
* than minting a ref that `bim.mutate.*` would then refuse.
|
|
46
|
+
*
|
|
43
47
|
* @example
|
|
44
|
-
* const profile = bim.store.addEntity('
|
|
48
|
+
* const profile = bim.store.addEntity('default', {
|
|
45
49
|
* type: 'IfcRectangleProfileDef',
|
|
46
50
|
* attributes: ['.AREA.', null, '#34', 0.6, 0.4],
|
|
47
51
|
* });
|
|
@@ -104,7 +108,7 @@ export class StoreNamespace {
|
|
|
104
108
|
*
|
|
105
109
|
* @example
|
|
106
110
|
* const storeyId = bim.query.byType('IfcBuildingStorey')[0].ref.expressId;
|
|
107
|
-
* const col = bim.store.addColumn('
|
|
111
|
+
* const col = bim.store.addColumn('default', storeyId, {
|
|
108
112
|
* Position: [1, 1, 0],
|
|
109
113
|
* Width: 0.3, Depth: 0.4, Height: 3,
|
|
110
114
|
* Name: 'Column 1',
|
|
@@ -119,7 +123,7 @@ export class StoreNamespace {
|
|
|
119
123
|
* and is extruded upward by `Height`.
|
|
120
124
|
*
|
|
121
125
|
* @example
|
|
122
|
-
* bim.store.addWall('
|
|
126
|
+
* bim.store.addWall('default', storeyId, {
|
|
123
127
|
* Start: [0, 0, 0], End: [5, 0, 0],
|
|
124
128
|
* Thickness: 0.2, Height: 3, Name: 'North Wall',
|
|
125
129
|
* });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAgBrF;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ApplyStyleOptions, ApplyStyleResult, SurfaceStyleColor } from '@ifc-lite/create';
|
|
2
|
+
import type { BimBackend, EntityRef } from '../types.js';
|
|
3
|
+
/** One colour and the entities to paint with it. */
|
|
4
|
+
export interface ColorBatch {
|
|
5
|
+
refs: EntityRef[];
|
|
6
|
+
/** A hex string in any form `bim.viewer.colorize` takes, or channels in 0..1. */
|
|
7
|
+
color: SurfaceStyleColor | string;
|
|
8
|
+
/** `IfcSurfaceStyle.Name`, useful when the colour stands for a class. */
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* `bim.style` — colour that ends up in the exported IFC.
|
|
13
|
+
*
|
|
14
|
+
* `bim.viewer.colorize` paints the current view; the colour is an overlay and
|
|
15
|
+
* is gone the moment the model is written out. This writes real
|
|
16
|
+
* `IfcSurfaceStyle` / `IfcStyledItem` entities, so the file opens coloured
|
|
17
|
+
* anywhere. Needs direct store access: the headless CLI and MCP contexts
|
|
18
|
+
* implement it; a backend without the store, including the browser viewer's,
|
|
19
|
+
* throws rather than silently doing nothing.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* bim.style.apply(bim.query().byType('IfcDuctSegment').refs(), '#9caec9');
|
|
23
|
+
* const ifc = bim.export.ifc([], { schema: 'IFC4' }); // carries the colour
|
|
24
|
+
*/
|
|
25
|
+
export declare class StyleNamespace {
|
|
26
|
+
private backend;
|
|
27
|
+
constructor(backend: BimBackend);
|
|
28
|
+
private impl;
|
|
29
|
+
/** Colour these entities. Hex string, or channels in 0..1. */
|
|
30
|
+
apply(refs: EntityRef[], color: SurfaceStyleColor | string, options?: ApplyStyleOptions & {
|
|
31
|
+
name?: string;
|
|
32
|
+
}): ApplyStyleResult;
|
|
33
|
+
/**
|
|
34
|
+
* Colour several groups in one pass, the persistent counterpart to
|
|
35
|
+
* `bim.viewer.colorizeAll`. Batches are applied in order, so a later batch
|
|
36
|
+
* wins where two of them reach the same geometry.
|
|
37
|
+
*
|
|
38
|
+
* One call rather than a loop over `apply`: the "at most one IfcStyledItem
|
|
39
|
+
* per representation item" rule has to hold across the whole pass, and the
|
|
40
|
+
* index of already-styled geometry is built once instead of per batch.
|
|
41
|
+
*/
|
|
42
|
+
applyAll(batches: ColorBatch[], options?: ApplyStyleOptions): ApplyStyleResult[];
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/namespaces/style.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,iFAAiF;IACjF,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClC,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmCD;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC,OAAO,CAAC,IAAI;IAUZ,8DAA8D;IAC9D,KAAK,CACH,IAAI,EAAE,SAAS,EAAE,EACjB,KAAK,EAAE,iBAAiB,GAAG,MAAM,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,gBAAgB;IAKnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,EAAE;CAUjF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { hexToRgba } from '@ifc-lite/lens';
|
|
5
|
+
/** Anything `hexToRgba` resolves: `#rgb`, `#rrggbb`, `#rrggbbaa`, with or without `#`. */
|
|
6
|
+
const HEX_COLOR = /^#?(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a colour to channels.
|
|
9
|
+
*
|
|
10
|
+
* Strings go through the same `hexToRgba` that `bim.viewer.colorize` uses, so
|
|
11
|
+
* the two APIs accept exactly the same syntax rather than one of them rejecting
|
|
12
|
+
* a string the other paints with.
|
|
13
|
+
*
|
|
14
|
+
* Two deliberate differences. The failure mode: `hexToRgba` degrades an
|
|
15
|
+
* unparseable string to black, which is right for a transient overlay and wrong
|
|
16
|
+
* here, where the result is written into the file and shipped, so a typo throws
|
|
17
|
+
* rather than being baked in as black. And the alpha pair of an `#rrggbbaa`
|
|
18
|
+
* string is honoured rather than discarded — the viewer takes alpha from its
|
|
19
|
+
* own argument and ignores those digits, but here they are the only place a
|
|
20
|
+
* caller using the string form can express transparency.
|
|
21
|
+
*/
|
|
22
|
+
function resolveColor(color) {
|
|
23
|
+
if (typeof color !== 'string')
|
|
24
|
+
return color;
|
|
25
|
+
const trimmed = color.trim();
|
|
26
|
+
if (!HEX_COLOR.test(trimmed)) {
|
|
27
|
+
throw new Error(`style: "${color}" is not a hex colour (#rgb, #rrggbb or #rrggbbaa). ` +
|
|
28
|
+
'Pass { red, green, blue } channels in 0..1 for anything else.');
|
|
29
|
+
}
|
|
30
|
+
const digits = trimmed.startsWith('#') ? trimmed.slice(1) : trimmed;
|
|
31
|
+
const alpha = digits.length === 8 ? parseInt(digits.slice(6, 8), 16) / 255 : 1;
|
|
32
|
+
const [red, green, blue] = hexToRgba(trimmed, alpha);
|
|
33
|
+
return { red, green, blue, alpha };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `bim.style` — colour that ends up in the exported IFC.
|
|
37
|
+
*
|
|
38
|
+
* `bim.viewer.colorize` paints the current view; the colour is an overlay and
|
|
39
|
+
* is gone the moment the model is written out. This writes real
|
|
40
|
+
* `IfcSurfaceStyle` / `IfcStyledItem` entities, so the file opens coloured
|
|
41
|
+
* anywhere. Needs direct store access: the headless CLI and MCP contexts
|
|
42
|
+
* implement it; a backend without the store, including the browser viewer's,
|
|
43
|
+
* throws rather than silently doing nothing.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* bim.style.apply(bim.query().byType('IfcDuctSegment').refs(), '#9caec9');
|
|
47
|
+
* const ifc = bim.export.ifc([], { schema: 'IFC4' }); // carries the colour
|
|
48
|
+
*/
|
|
49
|
+
export class StyleNamespace {
|
|
50
|
+
backend;
|
|
51
|
+
constructor(backend) {
|
|
52
|
+
this.backend = backend;
|
|
53
|
+
}
|
|
54
|
+
impl() {
|
|
55
|
+
if (!this.backend.style) {
|
|
56
|
+
throw new Error('style: not available on this backend — persistent colouring needs ' +
|
|
57
|
+
'direct store access (use a headless context, not a remote transport).');
|
|
58
|
+
}
|
|
59
|
+
return this.backend.style;
|
|
60
|
+
}
|
|
61
|
+
/** Colour these entities. Hex string, or channels in 0..1. */
|
|
62
|
+
apply(refs, color, options) {
|
|
63
|
+
const { name, ...rest } = options ?? {};
|
|
64
|
+
return this.applyAll([{ refs, color, name }], rest)[0];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Colour several groups in one pass, the persistent counterpart to
|
|
68
|
+
* `bim.viewer.colorizeAll`. Batches are applied in order, so a later batch
|
|
69
|
+
* wins where two of them reach the same geometry.
|
|
70
|
+
*
|
|
71
|
+
* One call rather than a loop over `apply`: the "at most one IfcStyledItem
|
|
72
|
+
* per representation item" rule has to hold across the whole pass, and the
|
|
73
|
+
* index of already-styled geometry is built once instead of per batch.
|
|
74
|
+
*/
|
|
75
|
+
applyAll(batches, options) {
|
|
76
|
+
return this.impl().applyColors(batches.map(batch => ({
|
|
77
|
+
refs: batch.refs,
|
|
78
|
+
color: resolveColor(batch.color),
|
|
79
|
+
name: batch.name,
|
|
80
|
+
})), options);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/namespaces/style.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAa3C,0FAA0F;AAC1F,MAAM,SAAS,GAAG,sDAAsD,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AACH,SAAS,YAAY,CAAC,KAAiC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,sDAAsD;YACtE,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAEnC,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,oEAAoE;gBACpE,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,KAAK,CACH,IAAiB,EACjB,KAAiC,EACjC,OAA+C;QAE/C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAqB,EAAE,OAA2B;QACzD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC,EACH,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* These types define the public API surface of the SDK.
|
|
5
5
|
* External tools (ifc-scripts, ifc-flow) depend on these types.
|
|
6
6
|
*/
|
|
7
|
-
import type { GenerateSpacesAllOptions, GenerateSpacesAllResult, StoreyInfo } from '@ifc-lite/create';
|
|
7
|
+
import type { GenerateSpacesAllOptions, GenerateSpacesAllResult, StoreyInfo, ApplyStyleOptions, ApplyStyleResult, SurfaceStyleColor } from '@ifc-lite/create';
|
|
8
8
|
/** Reference to a specific entity within a federated model set */
|
|
9
9
|
export interface EntityRef {
|
|
10
10
|
modelId: string;
|
|
@@ -643,6 +643,30 @@ export interface SpacesBackendMethods {
|
|
|
643
643
|
*/
|
|
644
644
|
generate(options?: GenerateSpacesAllOptions): GenerateSpacesAllResult;
|
|
645
645
|
}
|
|
646
|
+
/**
|
|
647
|
+
* Colour products by writing presentation-style entities into the model, so the
|
|
648
|
+
* colour is in the exported IFC rather than in the current view. Optional on
|
|
649
|
+
* the backend for the same reason as {@link SpacesBackendMethods}: it needs
|
|
650
|
+
* direct store access, which a remote backend does not have.
|
|
651
|
+
*
|
|
652
|
+
* Distinct from `ViewerBackendMethods.colorize`, which paints the view and is
|
|
653
|
+
* gone on export.
|
|
654
|
+
*/
|
|
655
|
+
export interface StyleBackendMethods {
|
|
656
|
+
/**
|
|
657
|
+
* Give every representation item behind each batch one `IfcSurfaceStyle`,
|
|
658
|
+
* writing to the backend's mutation overlay. Persist with `bim.export.ifc()`.
|
|
659
|
+
*
|
|
660
|
+
* Batched rather than one call per colour because the "at most one
|
|
661
|
+
* IfcStyledItem per item" rule has to hold across the whole pass, and because
|
|
662
|
+
* the index of already-styled geometry is the expensive part to build.
|
|
663
|
+
*/
|
|
664
|
+
applyColors(batches: Array<{
|
|
665
|
+
refs: EntityRef[];
|
|
666
|
+
color: SurfaceStyleColor;
|
|
667
|
+
name?: string;
|
|
668
|
+
}>, options?: ApplyStyleOptions): ApplyStyleResult[];
|
|
669
|
+
}
|
|
646
670
|
export interface BimBackend {
|
|
647
671
|
readonly model: ModelBackendMethods;
|
|
648
672
|
readonly query: QueryBackendMethods;
|
|
@@ -658,6 +682,8 @@ export interface BimBackend {
|
|
|
658
682
|
readonly schedule: ScheduleBackendMethods;
|
|
659
683
|
/** Space derivation — present only on local backends with store access. */
|
|
660
684
|
readonly spaces?: SpacesBackendMethods;
|
|
685
|
+
/** Persistent colouring — present only on local backends with store access. */
|
|
686
|
+
readonly style?: StyleBackendMethods;
|
|
661
687
|
/** Subscribe to viewer events */
|
|
662
688
|
subscribe(event: BimEventType, handler: (data: unknown) => void): () => void;
|
|
663
689
|
}
|