@ifc-lite/parser 5.1.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classification-resolver.d.ts.map +1 -1
- package/dist/classification-resolver.js +35 -10
- package/dist/classification-resolver.js.map +1 -1
- package/dist/columnar-entity-preparation.d.ts +25 -0
- package/dist/columnar-entity-preparation.d.ts.map +1 -0
- package/dist/columnar-entity-preparation.js +282 -0
- package/dist/columnar-entity-preparation.js.map +1 -0
- package/dist/columnar-parser-indexes.d.ts +17 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +31 -21
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +66 -0
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -0
- package/dist/columnar-parser-root-attributes.js +245 -0
- package/dist/columnar-parser-root-attributes.js.map +1 -0
- package/dist/columnar-parser.d.ts +26 -63
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +384 -751
- package/dist/columnar-parser.js.map +1 -1
- package/dist/compact-entity-index-columns.d.ts +17 -0
- package/dist/compact-entity-index-columns.d.ts.map +1 -0
- package/dist/compact-entity-index-columns.js +15 -0
- package/dist/compact-entity-index-columns.js.map +1 -0
- package/dist/compact-entity-index-transport.d.ts +2 -12
- package/dist/compact-entity-index-transport.d.ts.map +1 -1
- package/dist/compact-entity-index-transport.js +1 -11
- package/dist/compact-entity-index-transport.js.map +1 -1
- package/dist/compact-entity-index.d.ts +6 -0
- package/dist/compact-entity-index.d.ts.map +1 -1
- package/dist/compact-entity-index.js +12 -20
- package/dist/compact-entity-index.js.map +1 -1
- package/dist/cost-extractor.d.ts +10 -0
- package/dist/cost-extractor.d.ts.map +1 -0
- package/dist/cost-extractor.js +369 -0
- package/dist/cost-extractor.js.map +1 -0
- package/dist/cost-schedule-2x3.d.ts +31 -0
- package/dist/cost-schedule-2x3.d.ts.map +1 -0
- package/dist/cost-schedule-2x3.js +75 -0
- package/dist/cost-schedule-2x3.js.map +1 -0
- package/dist/cost-types.d.ts +105 -0
- package/dist/cost-types.d.ts.map +1 -0
- package/dist/cost-types.js +5 -0
- package/dist/cost-types.js.map +1 -0
- package/dist/data-store-transport.d.ts +3 -2
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +10 -34
- package/dist/data-store-transport.js.map +1 -1
- package/dist/drop-census.d.ts +136 -0
- package/dist/drop-census.d.ts.map +1 -0
- package/dist/drop-census.js +53 -0
- package/dist/drop-census.js.map +1 -0
- package/dist/entity-refs-from-index.d.ts +10 -0
- package/dist/entity-refs-from-index.d.ts.map +1 -1
- package/dist/entity-refs-from-index.js +52 -36
- package/dist/entity-refs-from-index.js.map +1 -1
- package/dist/entity-scanner.d.ts +5 -0
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +30 -12
- package/dist/entity-scanner.js.map +1 -1
- package/dist/entity-type-byte-interner.d.ts +12 -0
- package/dist/entity-type-byte-interner.d.ts.map +1 -0
- package/dist/entity-type-byte-interner.js +66 -0
- package/dist/entity-type-byte-interner.js.map +1 -0
- package/dist/generated/ifc2x3/schema-registry.d.ts +50 -0
- package/dist/generated/ifc2x3/schema-registry.d.ts.map +1 -0
- package/dist/generated/ifc2x3/schema-registry.js +50052 -0
- package/dist/generated/ifc2x3/schema-registry.js.map +1 -0
- package/dist/generated/ifc4x3/schema-registry.d.ts +50 -0
- package/dist/generated/ifc4x3/schema-registry.d.ts.map +1 -0
- package/dist/generated/ifc4x3/schema-registry.js +71299 -0
- package/dist/generated/ifc4x3/schema-registry.js.map +1 -0
- package/dist/generated/schema-registry-by-version.d.ts +61 -0
- package/dist/generated/schema-registry-by-version.d.ts.map +1 -0
- package/dist/generated/schema-registry-by-version.js +86 -0
- package/dist/generated/schema-registry-by-version.js.map +1 -0
- package/dist/group-assignment-factor.d.ts +13 -0
- package/dist/group-assignment-factor.d.ts.map +1 -0
- package/dist/group-assignment-factor.js +30 -0
- package/dist/group-assignment-factor.js.map +1 -0
- package/dist/ifczip.d.ts +6 -0
- package/dist/ifczip.d.ts.map +1 -1
- package/dist/ifczip.js +20 -11
- package/dist/ifczip.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +1 -0
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +2 -1
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/parser.worker.d.ts +6 -3
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +24 -12
- package/dist/parser.worker.js.map +1 -1
- package/dist/prepass-source-fingerprint.d.ts +3 -0
- package/dist/prepass-source-fingerprint.d.ts.map +1 -0
- package/dist/prepass-source-fingerprint.js +13 -0
- package/dist/prepass-source-fingerprint.js.map +1 -0
- package/dist/property-value-parser.d.ts +10 -0
- package/dist/property-value-parser.d.ts.map +1 -1
- package/dist/property-value-parser.js +40 -1
- package/dist/property-value-parser.js.map +1 -1
- package/dist/scan-entities-balanced.d.ts.map +1 -1
- package/dist/scan-entities-balanced.js +8 -6
- package/dist/scan-entities-balanced.js.map +1 -1
- package/dist/scan-worker-lexing.d.ts +14 -0
- package/dist/scan-worker-lexing.d.ts.map +1 -0
- package/dist/scan-worker-lexing.js +101 -0
- package/dist/scan-worker-lexing.js.map +1 -0
- package/dist/scan-worker-source.d.ts +1 -1
- package/dist/scan-worker-source.d.ts.map +1 -1
- package/dist/scan-worker-source.js +61 -59
- package/dist/scan-worker-source.js.map +1 -1
- package/dist/schedule-extractor.d.ts +2 -80
- package/dist/schedule-extractor.d.ts.map +1 -1
- package/dist/schedule-extractor.js +100 -225
- package/dist/schedule-extractor.js.map +1 -1
- package/dist/schedule-serializer-builders.d.ts +28 -0
- package/dist/schedule-serializer-builders.d.ts.map +1 -0
- package/dist/schedule-serializer-builders.js +163 -0
- package/dist/schedule-serializer-builders.js.map +1 -0
- package/dist/schedule-serializer.d.ts +6 -0
- package/dist/schedule-serializer.d.ts.map +1 -1
- package/dist/schedule-serializer.js +26 -165
- package/dist/schedule-serializer.js.map +1 -1
- package/dist/schedule-types.d.ts +211 -0
- package/dist/schedule-types.d.ts.map +1 -0
- package/dist/schedule-types.js +221 -0
- package/dist/schedule-types.js.map +1 -0
- package/dist/select-entity-columns.d.ts +7 -0
- package/dist/select-entity-columns.d.ts.map +1 -0
- package/dist/select-entity-columns.js +43 -0
- package/dist/select-entity-columns.js.map +1 -0
- package/dist/spatial-hierarchy-ambiguity.d.ts +39 -0
- package/dist/spatial-hierarchy-ambiguity.d.ts.map +1 -0
- package/dist/spatial-hierarchy-ambiguity.js +25 -0
- package/dist/spatial-hierarchy-ambiguity.js.map +1 -0
- package/dist/spatial-hierarchy-attributes.d.ts +54 -0
- package/dist/spatial-hierarchy-attributes.d.ts.map +1 -0
- package/dist/spatial-hierarchy-attributes.js +145 -0
- package/dist/spatial-hierarchy-attributes.js.map +1 -0
- package/dist/spatial-hierarchy-builder.d.ts +6 -38
- package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
- package/dist/spatial-hierarchy-builder.js +48 -166
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/spatial-hierarchy-canonical-parent.d.ts +86 -0
- package/dist/spatial-hierarchy-canonical-parent.d.ts.map +1 -0
- package/dist/spatial-hierarchy-canonical-parent.js +212 -0
- package/dist/spatial-hierarchy-canonical-parent.js.map +1 -0
- package/dist/step-lexing.d.ts +1 -1
- package/dist/step-lexing.d.ts.map +1 -1
- package/dist/step-lexing.js +1 -56
- package/dist/step-lexing.js.map +1 -1
- package/dist/step-record-boundary.d.ts +28 -0
- package/dist/step-record-boundary.d.ts.map +1 -0
- package/dist/step-record-boundary.js +108 -0
- package/dist/step-record-boundary.js.map +1 -0
- package/dist/step-record-boundary.vectors.d.ts +58 -0
- package/dist/step-record-boundary.vectors.d.ts.map +1 -0
- package/dist/step-record-boundary.vectors.js +80 -0
- package/dist/step-record-boundary.vectors.js.map +1 -0
- package/dist/structural-extractor.d.ts +9 -0
- package/dist/structural-extractor.d.ts.map +1 -0
- package/dist/structural-extractor.js +310 -0
- package/dist/structural-extractor.js.map +1 -0
- package/dist/structural-load-extractor.d.ts +147 -0
- package/dist/structural-load-extractor.d.ts.map +1 -0
- package/dist/structural-load-extractor.js +178 -0
- package/dist/structural-load-extractor.js.map +1 -0
- package/dist/structural-step-values.d.ts +51 -0
- package/dist/structural-step-values.d.ts.map +1 -0
- package/dist/structural-step-values.js +109 -0
- package/dist/structural-step-values.js.map +1 -0
- package/dist/structural-types.d.ts +145 -0
- package/dist/structural-types.d.ts.map +1 -0
- package/dist/structural-types.js +5 -0
- package/dist/structural-types.js.map +1 -0
- package/dist/tokenizer.d.ts +11 -5
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +75 -21
- package/dist/tokenizer.js.map +1 -1
- package/dist/wasm-init-retry.d.ts +6 -42
- package/dist/wasm-init-retry.d.ts.map +1 -1
- package/dist/wasm-init-retry.js +6 -99
- package/dist/wasm-init-retry.js.map +1 -1
- package/dist/wasm-panic-forward.d.ts +7 -63
- package/dist/wasm-panic-forward.d.ts.map +1 -1
- package/dist/wasm-panic-forward.js +7 -100
- package/dist/wasm-panic-forward.js.map +1 -1
- package/dist/worker-index-publication.d.ts +43 -0
- package/dist/worker-index-publication.d.ts.map +1 -0
- package/dist/worker-index-publication.js +129 -0
- package/dist/worker-index-publication.js.map +1 -0
- package/dist/worker-parser.d.ts +5 -2
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +22 -10
- package/dist/worker-parser.js.map +1 -1
- package/package.json +5 -4
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
* STEP source buffer. Re-running it with the same inputs produces the same
|
|
20
20
|
* output (deterministic), which keeps round-trip exports stable and makes
|
|
21
21
|
* unit tests simple.
|
|
22
|
+
*
|
|
23
|
+
* The low-level STEP string encoding and the per-entity line builders
|
|
24
|
+
* (`buildWorkControl`, `buildTaskTime`, `buildTask`, …) live in
|
|
25
|
+
* `schedule-serializer-builders.ts` — this file owns only the orchestration:
|
|
26
|
+
* which entities and relationships to emit, in what order, and how their
|
|
27
|
+
* express IDs cross-reference each other.
|
|
22
28
|
*/
|
|
23
29
|
import type { ScheduleExtraction } from './schedule-extractor.js';
|
|
24
30
|
export interface SerializeScheduleOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-serializer.d.ts","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"schedule-serializer.d.ts","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,yBAAyB,CAAC;AAiBxF,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC3E;AAED,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAMD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CA0JzB"}
|
|
@@ -1,43 +1,9 @@
|
|
|
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
|
-
import { deterministicGlobalId } from './deterministic-global-id.js';
|
|
5
4
|
import { secondsToIso8601Duration } from './iso8601-duration.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
9
|
-
function escStr(s) {
|
|
10
|
-
return s.replace(/\\/g, '\\\\').replace(/'/g, "''");
|
|
11
|
-
}
|
|
12
|
-
function optStr(v) {
|
|
13
|
-
return v === undefined || v === null || v === '' ? '$' : `'${escStr(v)}'`;
|
|
14
|
-
}
|
|
15
|
-
function optEnum(v) {
|
|
16
|
-
return v === undefined || v === null || v === '' ? '$' : `.${v}.`;
|
|
17
|
-
}
|
|
18
|
-
function optBool(v) {
|
|
19
|
-
return v === undefined || v === null ? '$' : v ? '.T.' : '.F.';
|
|
20
|
-
}
|
|
21
|
-
function optReal(v) {
|
|
22
|
-
if (v === undefined || v === null || !Number.isFinite(v))
|
|
23
|
-
return '$';
|
|
24
|
-
// Integer-format avoids "1.0" → "1." re-import differences across viewers.
|
|
25
|
-
return Number.isInteger(v) ? `${v}.` : String(v);
|
|
26
|
-
}
|
|
27
|
-
function ownerRef(ownerHistoryId) {
|
|
28
|
-
return ownerHistoryId !== undefined ? `#${ownerHistoryId}` : '$';
|
|
29
|
-
}
|
|
30
|
-
function refList(ids) {
|
|
31
|
-
return ids.length === 0 ? '$' : `(${ids.map(id => `#${id}`).join(',')})`;
|
|
32
|
-
}
|
|
33
|
-
function ensureGlobalId(existing, seed) {
|
|
34
|
-
// Round-tripping should preserve whatever GlobalId the upstream extraction
|
|
35
|
-
// saw, even when it isn't exactly 22 chars (some authoring tools emit
|
|
36
|
-
// shorter ids). Only invent a deterministic value when the input is empty.
|
|
37
|
-
if (existing && existing.length > 0)
|
|
38
|
-
return existing;
|
|
39
|
-
return deterministicGlobalId(seed);
|
|
40
|
-
}
|
|
5
|
+
import { deterministicGlobalId } from './deterministic-global-id.js';
|
|
6
|
+
import { escStr, optStr, optEnum, ownerRef, refList, ensureGlobalId, buildWorkControl, taskHasTimeData, buildTaskTime, buildTask, resolveProductIds, } from './schedule-serializer-builders.js';
|
|
41
7
|
// ─────────────────────────────────────────────────────────────────────────
|
|
42
8
|
// Public — serializeScheduleToStep
|
|
43
9
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -117,6 +83,30 @@ export function serializeScheduleToStep(data, options) {
|
|
|
117
83
|
lines.push(`#${relId}=IFCRELNESTS('${relGid}',${owner},$,$,#${parentId},${refList(childIds)});`);
|
|
118
84
|
stats.relNests += 1;
|
|
119
85
|
}
|
|
86
|
+
// ── 4b. Work-plan → work-schedule grouping (IfcRelNests) ──────────
|
|
87
|
+
for (const plan of data.workSchedules) {
|
|
88
|
+
// `?.length` treats `undefined` and `[]` the same — both mean "emit no
|
|
89
|
+
// relation for this plan" — so any producer is free to use either for
|
|
90
|
+
// "no schedules grouped", whether that's "deliberately none" or a field
|
|
91
|
+
// it doesn't populate at all.
|
|
92
|
+
if (plan.kind !== 'WorkPlan' || !plan.childScheduleGlobalIds?.length)
|
|
93
|
+
continue;
|
|
94
|
+
const parentId = scheduleExpressIdByGlobalId.get(plan.globalId);
|
|
95
|
+
if (parentId === undefined)
|
|
96
|
+
continue;
|
|
97
|
+
const childIds = [];
|
|
98
|
+
for (const childGid of plan.childScheduleGlobalIds) {
|
|
99
|
+
const cid = scheduleExpressIdByGlobalId.get(childGid);
|
|
100
|
+
if (cid !== undefined)
|
|
101
|
+
childIds.push(cid);
|
|
102
|
+
}
|
|
103
|
+
if (childIds.length === 0)
|
|
104
|
+
continue;
|
|
105
|
+
const relId = nextId++;
|
|
106
|
+
const relGid = deterministicGlobalId(`rel-nests-plan|${plan.globalId}`);
|
|
107
|
+
lines.push(`#${relId}=IFCRELNESTS('${relGid}',${owner},$,$,#${parentId},${refList(childIds)});`);
|
|
108
|
+
stats.relNests += 1;
|
|
109
|
+
}
|
|
120
110
|
// ── 5. Products → tasks (IfcRelAssignsToProcess) ─────────────────
|
|
121
111
|
for (const task of data.tasks) {
|
|
122
112
|
if (task.productExpressIds.length === 0 && task.productGlobalIds.length === 0)
|
|
@@ -164,133 +154,4 @@ export function serializeScheduleToStep(data, options) {
|
|
|
164
154
|
}
|
|
165
155
|
return { lines, nextId, stats };
|
|
166
156
|
}
|
|
167
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
168
|
-
// Internal builders
|
|
169
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
170
|
-
function buildWorkControl(id, ws, owner) {
|
|
171
|
-
const entity = ws.kind === 'WorkPlan' ? 'IFCWORKPLAN' : 'IFCWORKSCHEDULE';
|
|
172
|
-
const globalId = ensureGlobalId(ws.globalId, `ws|${ws.kind}|${ws.name}`);
|
|
173
|
-
// Deterministic fallback ordering — don't touch `Date.now()` here, it would
|
|
174
|
-
// give identical inputs different STEP output and break diff-based export
|
|
175
|
-
// round-trips. Anchor on whatever the upstream extractor already picked,
|
|
176
|
-
// then on the schedule's own start/finish time.
|
|
177
|
-
const creationDate = ws.creationDate ?? ws.startTime ?? ws.finishTime ?? '1970-01-01T00:00:00';
|
|
178
|
-
// `StartTime` is REQUIRED on IfcWorkControl in IFC4 (ENTITY IfcWorkControl
|
|
179
|
-
// ... StartTime : IfcDateTime) — emitting `$` would fail schema
|
|
180
|
-
// validation on strict viewers. Fall back through the same deterministic
|
|
181
|
-
// chain as `creationDate`. `FinishTime` IS optional, but writing a real
|
|
182
|
-
// value is still friendlier than `$` when the schedule's own `startTime`
|
|
183
|
-
// is the only datum we have.
|
|
184
|
-
const startTime = ws.startTime ?? ws.finishTime ?? creationDate;
|
|
185
|
-
const finishTime = ws.finishTime ?? startTime;
|
|
186
|
-
// IFC4: GlobalId, OwnerHistory, Name, Description, ObjectType,
|
|
187
|
-
// Identification, CreationDate, Creators, Purpose,
|
|
188
|
-
// Duration, TotalFloat, StartTime, FinishTime, PredefinedType
|
|
189
|
-
return [
|
|
190
|
-
`#${id}=${entity}(`,
|
|
191
|
-
`'${globalId}',`,
|
|
192
|
-
`${owner},`,
|
|
193
|
-
`'${escStr(ws.name)}',`,
|
|
194
|
-
`${optStr(ws.description)},`,
|
|
195
|
-
`$,`,
|
|
196
|
-
`${optStr(ws.identification)},`,
|
|
197
|
-
`'${escStr(creationDate)}',`,
|
|
198
|
-
`$,`,
|
|
199
|
-
`${optStr(ws.purpose)},`,
|
|
200
|
-
`${optStr(ws.duration)},`,
|
|
201
|
-
`$,`,
|
|
202
|
-
`'${escStr(startTime)}',`,
|
|
203
|
-
`'${escStr(finishTime)}',`,
|
|
204
|
-
`${optEnum(ws.predefinedType)});`,
|
|
205
|
-
].join('');
|
|
206
|
-
}
|
|
207
|
-
function taskHasTimeData(task) {
|
|
208
|
-
const t = task.taskTime;
|
|
209
|
-
if (!t)
|
|
210
|
-
return false;
|
|
211
|
-
return Boolean(t.scheduleStart || t.scheduleFinish || t.scheduleDuration
|
|
212
|
-
|| t.actualStart || t.actualFinish || t.actualDuration
|
|
213
|
-
|| t.earlyStart || t.earlyFinish || t.lateStart || t.lateFinish
|
|
214
|
-
|| t.freeFloat || t.totalFloat || t.remainingTime || t.statusTime
|
|
215
|
-
|| t.durationType || t.isCritical !== undefined || t.completion !== undefined);
|
|
216
|
-
}
|
|
217
|
-
function buildTaskTime(id, task) {
|
|
218
|
-
const t = task.taskTime;
|
|
219
|
-
// IFC4: Name, DataOrigin, UDDataOrigin, DurationType,
|
|
220
|
-
// ScheduleDuration, ScheduleStart, ScheduleFinish,
|
|
221
|
-
// Early/Late Start/Finish, FreeFloat, TotalFloat, IsCritical,
|
|
222
|
-
// StatusTime, ActualDuration, ActualStart, ActualFinish,
|
|
223
|
-
// RemainingTime, Completion
|
|
224
|
-
return [
|
|
225
|
-
`#${id}=IFCTASKTIME(`,
|
|
226
|
-
`$,$,$,`,
|
|
227
|
-
`${optEnum(t.durationType)},`,
|
|
228
|
-
`${optStr(t.scheduleDuration)},`,
|
|
229
|
-
`${optStr(t.scheduleStart)},`,
|
|
230
|
-
`${optStr(t.scheduleFinish)},`,
|
|
231
|
-
`${optStr(t.earlyStart)},`,
|
|
232
|
-
`${optStr(t.earlyFinish)},`,
|
|
233
|
-
`${optStr(t.lateStart)},`,
|
|
234
|
-
`${optStr(t.lateFinish)},`,
|
|
235
|
-
`${optStr(t.freeFloat)},`,
|
|
236
|
-
`${optStr(t.totalFloat)},`,
|
|
237
|
-
`${optBool(t.isCritical)},`,
|
|
238
|
-
`${optStr(t.statusTime)},`,
|
|
239
|
-
`${optStr(t.actualDuration)},`,
|
|
240
|
-
`${optStr(t.actualStart)},`,
|
|
241
|
-
`${optStr(t.actualFinish)},`,
|
|
242
|
-
`${optStr(t.remainingTime)},`,
|
|
243
|
-
`${optReal(t.completion)});`,
|
|
244
|
-
].join('');
|
|
245
|
-
}
|
|
246
|
-
function buildTask(id, task, owner, taskTimeId) {
|
|
247
|
-
const globalId = ensureGlobalId(task.globalId, `task|${task.name}`);
|
|
248
|
-
const taskTimeRef = taskTimeId !== undefined ? `#${taskTimeId}` : '$';
|
|
249
|
-
// IFC4: GlobalId, OwnerHistory, Name, Description, ObjectType,
|
|
250
|
-
// Identification, LongDescription, Status, WorkMethod, IsMilestone,
|
|
251
|
-
// Priority, TaskTime, PredefinedType
|
|
252
|
-
return [
|
|
253
|
-
`#${id}=IFCTASK(`,
|
|
254
|
-
`'${globalId}',`,
|
|
255
|
-
`${owner},`,
|
|
256
|
-
`'${escStr(task.name)}',`,
|
|
257
|
-
`${optStr(task.description)},`,
|
|
258
|
-
`${optStr(task.objectType)},`,
|
|
259
|
-
`${optStr(task.identification)},`,
|
|
260
|
-
`${optStr(task.longDescription)},`,
|
|
261
|
-
`${optStr(task.status)},`,
|
|
262
|
-
`${optStr(task.workMethod)},`,
|
|
263
|
-
`${task.isMilestone ? '.T.' : '.F.'},`,
|
|
264
|
-
`${task.priority !== undefined ? Math.trunc(task.priority) : '$'},`,
|
|
265
|
-
`${taskTimeRef},`,
|
|
266
|
-
`${optEnum(task.predefinedType)});`,
|
|
267
|
-
].join('');
|
|
268
|
-
}
|
|
269
|
-
function resolveProductIds(task, resolver) {
|
|
270
|
-
// Prefer expressIds when they're present and non-zero (the in-memory schedule
|
|
271
|
-
// path). When only globalIds are known (e.g. round-tripping through the SDK
|
|
272
|
-
// boundary), use the caller-supplied resolver to look them up against the
|
|
273
|
-
// current model — falls back to expressIds whenever the resolver returns
|
|
274
|
-
// undefined.
|
|
275
|
-
//
|
|
276
|
-
// Walk the union of both arrays so global-id-only entries (common for
|
|
277
|
-
// generated schedules where expressId was never filled in) still hit the
|
|
278
|
-
// resolver instead of being silently dropped.
|
|
279
|
-
const out = [];
|
|
280
|
-
const count = Math.max(task.productExpressIds.length, task.productGlobalIds.length);
|
|
281
|
-
for (let i = 0; i < count; i++) {
|
|
282
|
-
const expressId = task.productExpressIds[i];
|
|
283
|
-
const globalId = task.productGlobalIds[i];
|
|
284
|
-
if (resolver && globalId) {
|
|
285
|
-
const resolved = resolver(globalId);
|
|
286
|
-
if (resolved !== undefined && resolved > 0) {
|
|
287
|
-
out.push(resolved);
|
|
288
|
-
continue;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
if (expressId !== undefined && expressId > 0)
|
|
292
|
-
out.push(expressId);
|
|
293
|
-
}
|
|
294
|
-
return out;
|
|
295
|
-
}
|
|
296
157
|
//# sourceMappingURL=schedule-serializer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-serializer.js","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schedule-serializer.js","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule (4D) shapes and sub-entity extractors — STEP attribute-index
|
|
3
|
+
* layouts for IfcTask / IfcTaskTime / IfcRelSequence / IfcRelAssignsToProcess
|
|
4
|
+
* / IfcRelAssignsToControl / IfcRelNests / IfcWorkSchedule / IfcWorkPlan /
|
|
5
|
+
* IfcLagTime, the public `ScheduleExtraction` record types built from them,
|
|
6
|
+
* and the small pure helpers (`asString` et al.) plus single-entity
|
|
7
|
+
* sub-extractors (`extractTaskTime`, `extractLagTimeSeconds`) that turn one
|
|
8
|
+
* STEP entity's attribute array into a typed field.
|
|
9
|
+
*
|
|
10
|
+
* `schedule-extractor.ts` owns the orchestration — walking `byType` arrays
|
|
11
|
+
* and wiring these records together across passes — and imports everything
|
|
12
|
+
* it needs from here. Splitting "how one entity's attributes decode" from
|
|
13
|
+
* "how entities cross-reference each other" keeps each file to one concern,
|
|
14
|
+
* the same shape as this package's `spatial-hierarchy-canonical-parent.ts`
|
|
15
|
+
* being split out of `spatial-hierarchy-builder.ts`.
|
|
16
|
+
*/
|
|
17
|
+
import { EntityExtractor } from './entity-extractor.js';
|
|
18
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
19
|
+
/** IFC4 STEP attribute indices for IfcTask. */
|
|
20
|
+
export declare const TASK_ATTR: {
|
|
21
|
+
readonly GlobalId: 0;
|
|
22
|
+
readonly Name: 2;
|
|
23
|
+
readonly Description: 3;
|
|
24
|
+
readonly ObjectType: 4;
|
|
25
|
+
readonly Identification: 5;
|
|
26
|
+
readonly LongDescription: 6;
|
|
27
|
+
readonly Status: 7;
|
|
28
|
+
readonly WorkMethod: 8;
|
|
29
|
+
readonly IsMilestone: 9;
|
|
30
|
+
readonly Priority: 10;
|
|
31
|
+
readonly TaskTime: 11;
|
|
32
|
+
readonly PredefinedType: 12;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* IFC2X3 IfcTask layout — the attributes IfcTask itself adds over IfcObject
|
|
36
|
+
* (TaskId, Status, WorkMethod, IsMilestone, Priority). IFC2X3 schedule times
|
|
37
|
+
* live on `IfcScheduleTimeControl` and link to IfcTask via `IfcRelAssignsTasks`
|
|
38
|
+
* — we don't resolve those here yet; best-effort 2x3 models only surface task
|
|
39
|
+
* metadata without dates.
|
|
40
|
+
*/
|
|
41
|
+
export declare const TASK_ATTR_2X3: {
|
|
42
|
+
readonly GlobalId: 0;
|
|
43
|
+
readonly Name: 2;
|
|
44
|
+
readonly Description: 3;
|
|
45
|
+
readonly ObjectType: 4;
|
|
46
|
+
readonly TaskId: 5;
|
|
47
|
+
readonly Status: 6;
|
|
48
|
+
readonly WorkMethod: 7;
|
|
49
|
+
readonly IsMilestone: 8;
|
|
50
|
+
readonly Priority: 9;
|
|
51
|
+
};
|
|
52
|
+
export declare const REL_SEQUENCE_ATTR: {
|
|
53
|
+
readonly GlobalId: 0;
|
|
54
|
+
readonly RelatingProcess: 4;
|
|
55
|
+
readonly RelatedProcess: 5;
|
|
56
|
+
readonly TimeLag: 6;
|
|
57
|
+
readonly SequenceType: 7;
|
|
58
|
+
readonly UserDefinedSequenceType: 8;
|
|
59
|
+
};
|
|
60
|
+
export declare const REL_ASSIGNS_TO_PROCESS_ATTR: {
|
|
61
|
+
readonly RelatedObjects: 4;
|
|
62
|
+
readonly RelatingProcess: 6;
|
|
63
|
+
};
|
|
64
|
+
export declare const REL_ASSIGNS_TO_CONTROL_ATTR: {
|
|
65
|
+
readonly RelatedObjects: 4;
|
|
66
|
+
readonly RelatingControl: 6;
|
|
67
|
+
};
|
|
68
|
+
export declare const REL_NESTS_ATTR: {
|
|
69
|
+
readonly RelatingObject: 4;
|
|
70
|
+
readonly RelatedObjects: 5;
|
|
71
|
+
};
|
|
72
|
+
export declare const WORK_SCHEDULE_ATTR: {
|
|
73
|
+
readonly GlobalId: 0;
|
|
74
|
+
readonly Name: 2;
|
|
75
|
+
readonly Description: 3;
|
|
76
|
+
readonly ObjectType: 4;
|
|
77
|
+
readonly Identification: 5;
|
|
78
|
+
readonly CreationDate: 6;
|
|
79
|
+
readonly Purpose: 8;
|
|
80
|
+
readonly Duration: 9;
|
|
81
|
+
readonly TotalFloat: 10;
|
|
82
|
+
readonly StartTime: 11;
|
|
83
|
+
readonly FinishTime: 12;
|
|
84
|
+
readonly PredefinedType: 13;
|
|
85
|
+
};
|
|
86
|
+
export declare const WORK_PLAN_ATTR: {
|
|
87
|
+
readonly GlobalId: 0;
|
|
88
|
+
readonly Name: 2;
|
|
89
|
+
readonly Description: 3;
|
|
90
|
+
readonly ObjectType: 4;
|
|
91
|
+
readonly Identification: 5;
|
|
92
|
+
readonly CreationDate: 6;
|
|
93
|
+
readonly Purpose: 8;
|
|
94
|
+
readonly Duration: 9;
|
|
95
|
+
readonly TotalFloat: 10;
|
|
96
|
+
readonly StartTime: 11;
|
|
97
|
+
readonly FinishTime: 12;
|
|
98
|
+
readonly PredefinedType: 13;
|
|
99
|
+
};
|
|
100
|
+
export type SequenceTypeEnum = 'START_START' | 'START_FINISH' | 'FINISH_START' | 'FINISH_FINISH' | 'USERDEFINED' | 'NOTDEFINED';
|
|
101
|
+
export type TaskDurationType = 'WORKTIME' | 'ELAPSEDTIME' | 'NOTDEFINED';
|
|
102
|
+
export interface ScheduleTaskTimeInfo {
|
|
103
|
+
scheduleStart?: string;
|
|
104
|
+
scheduleFinish?: string;
|
|
105
|
+
scheduleDuration?: string;
|
|
106
|
+
actualStart?: string;
|
|
107
|
+
actualFinish?: string;
|
|
108
|
+
actualDuration?: string;
|
|
109
|
+
earlyStart?: string;
|
|
110
|
+
earlyFinish?: string;
|
|
111
|
+
lateStart?: string;
|
|
112
|
+
lateFinish?: string;
|
|
113
|
+
freeFloat?: string;
|
|
114
|
+
totalFloat?: string;
|
|
115
|
+
remainingTime?: string;
|
|
116
|
+
durationType?: TaskDurationType;
|
|
117
|
+
statusTime?: string;
|
|
118
|
+
isCritical?: boolean;
|
|
119
|
+
completion?: number;
|
|
120
|
+
}
|
|
121
|
+
export interface ScheduleTaskInfo {
|
|
122
|
+
expressId: number;
|
|
123
|
+
globalId: string;
|
|
124
|
+
name: string;
|
|
125
|
+
description?: string;
|
|
126
|
+
objectType?: string;
|
|
127
|
+
identification?: string;
|
|
128
|
+
longDescription?: string;
|
|
129
|
+
status?: string;
|
|
130
|
+
workMethod?: string;
|
|
131
|
+
isMilestone: boolean;
|
|
132
|
+
priority?: number;
|
|
133
|
+
predefinedType?: string;
|
|
134
|
+
taskTime?: ScheduleTaskTimeInfo;
|
|
135
|
+
/** Parent task globalId (from IfcRelNests where this task is in RelatedObjects). */
|
|
136
|
+
parentGlobalId?: string;
|
|
137
|
+
/** Child task globalIds (from IfcRelNests where this task is RelatingObject). */
|
|
138
|
+
childGlobalIds: string[];
|
|
139
|
+
/** expressIds of products assigned to this task via IfcRelAssignsToProcess. */
|
|
140
|
+
productExpressIds: number[];
|
|
141
|
+
/** globalIds of the same products (aligned with productExpressIds by index). */
|
|
142
|
+
productGlobalIds: string[];
|
|
143
|
+
/** WorkSchedule globalIds that control this task via IfcRelAssignsToControl. */
|
|
144
|
+
controllingScheduleGlobalIds: string[];
|
|
145
|
+
}
|
|
146
|
+
export interface ScheduleSequenceInfo {
|
|
147
|
+
globalId: string;
|
|
148
|
+
relatingTaskGlobalId: string;
|
|
149
|
+
relatedTaskGlobalId: string;
|
|
150
|
+
sequenceType: SequenceTypeEnum;
|
|
151
|
+
userDefinedSequenceType?: string;
|
|
152
|
+
/** Lag value expressed in seconds if it resolves to an IfcDuration; otherwise undefined. */
|
|
153
|
+
timeLagSeconds?: number;
|
|
154
|
+
/** Original lag duration string (ISO 8601 like 'P1D'), if available. */
|
|
155
|
+
timeLagDuration?: string;
|
|
156
|
+
}
|
|
157
|
+
export interface WorkScheduleInfo {
|
|
158
|
+
expressId: number;
|
|
159
|
+
globalId: string;
|
|
160
|
+
kind: 'WorkSchedule' | 'WorkPlan';
|
|
161
|
+
name: string;
|
|
162
|
+
description?: string;
|
|
163
|
+
identification?: string;
|
|
164
|
+
creationDate?: string;
|
|
165
|
+
purpose?: string;
|
|
166
|
+
duration?: string;
|
|
167
|
+
startTime?: string;
|
|
168
|
+
finishTime?: string;
|
|
169
|
+
predefinedType?: string;
|
|
170
|
+
/** Root task globalIds directly assigned via IfcRelAssignsToControl. */
|
|
171
|
+
taskGlobalIds: string[];
|
|
172
|
+
/**
|
|
173
|
+
* Parent IfcWorkPlan globalId, when this schedule is nested under a work
|
|
174
|
+
* plan via IfcRelNests (this schedule as a RelatedObject). Undefined for
|
|
175
|
+
* a WorkPlan itself, or a WorkSchedule with no nesting parent.
|
|
176
|
+
*/
|
|
177
|
+
parentPlanGlobalId?: string;
|
|
178
|
+
/**
|
|
179
|
+
* Child IfcWorkSchedule globalIds nested under this work plan via
|
|
180
|
+
* IfcRelNests or IfcRelAssignsToControl (this record as the parent side).
|
|
181
|
+
* Empty (or absent) for a plain WorkSchedule, or a WorkPlan with no
|
|
182
|
+
* nested schedules.
|
|
183
|
+
*
|
|
184
|
+
* Optional so a `WorkScheduleInfo` built without any opinion on grouping
|
|
185
|
+
* doesn't have to populate a field it never touches. Absent and `[]` are
|
|
186
|
+
* equivalent everywhere this field is read — neither the extractor nor
|
|
187
|
+
* the serializer distinguishes "unknown/legacy" from "known and empty";
|
|
188
|
+
* both mean "no nested schedules to write or report".
|
|
189
|
+
*/
|
|
190
|
+
childScheduleGlobalIds?: string[];
|
|
191
|
+
}
|
|
192
|
+
export interface ScheduleExtraction {
|
|
193
|
+
workSchedules: WorkScheduleInfo[];
|
|
194
|
+
tasks: ScheduleTaskInfo[];
|
|
195
|
+
sequences: ScheduleSequenceInfo[];
|
|
196
|
+
/** True if we encountered any scheduling entity (useful for empty-state UI). */
|
|
197
|
+
hasSchedule: boolean;
|
|
198
|
+
}
|
|
199
|
+
export declare function asString(v: unknown): string | undefined;
|
|
200
|
+
export declare function asNumber(v: unknown): number | undefined;
|
|
201
|
+
export declare function asBoolean(v: unknown): boolean | undefined;
|
|
202
|
+
export declare function asEnum(v: unknown): string | undefined;
|
|
203
|
+
export declare function asRef(v: unknown): number | undefined;
|
|
204
|
+
export declare function asRefList(v: unknown): number[];
|
|
205
|
+
export declare function sequenceTypeFromString(s: string | undefined): SequenceTypeEnum;
|
|
206
|
+
export declare function extractTaskTime(extractor: EntityExtractor, store: IfcDataStore, taskTimeId: number): ScheduleTaskTimeInfo | undefined;
|
|
207
|
+
export declare function extractLagTimeSeconds(extractor: EntityExtractor, store: IfcDataStore, lagId: number): {
|
|
208
|
+
seconds?: number;
|
|
209
|
+
duration?: string;
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=schedule-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-types.d.ts","sourceRoot":"","sources":["../src/schedule-types.ts"],"names":[],"mappings":"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"}
|