@ifc-lite/create 2.2.1 → 2.5.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/ifc-creator-math.d.ts +14 -0
- package/dist/ifc-creator-math.d.ts.map +1 -1
- package/dist/ifc-creator-math.js +36 -0
- package/dist/ifc-creator-math.js.map +1 -1
- package/dist/ifc-creator-scheduling.d.ts +27 -0
- package/dist/ifc-creator-scheduling.d.ts.map +1 -0
- package/dist/ifc-creator-scheduling.js +131 -0
- package/dist/ifc-creator-scheduling.js.map +1 -0
- package/dist/ifc-creator.d.ts +23 -6
- package/dist/ifc-creator.d.ts.map +1 -1
- package/dist/ifc-creator.js +39 -59
- package/dist/ifc-creator.js.map +1 -1
- package/dist/in-store/anchor.d.ts +16 -1
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/anchor.js +20 -0
- package/dist/in-store/anchor.js.map +1 -1
- package/dist/in-store/drawing-markup-geometry.d.ts +46 -0
- package/dist/in-store/drawing-markup-geometry.d.ts.map +1 -0
- package/dist/in-store/drawing-markup-geometry.js +80 -0
- package/dist/in-store/drawing-markup-geometry.js.map +1 -0
- package/dist/in-store/drawing-markup-tags.d.ts +29 -0
- package/dist/in-store/drawing-markup-tags.d.ts.map +1 -0
- package/dist/in-store/drawing-markup-tags.js +31 -0
- package/dist/in-store/drawing-markup-tags.js.map +1 -0
- package/dist/in-store/drawing-markup.d.ts +184 -0
- package/dist/in-store/drawing-markup.d.ts.map +1 -0
- package/dist/in-store/drawing-markup.js +196 -0
- package/dist/in-store/drawing-markup.js.map +1 -0
- package/dist/in-store/extract-walls.d.ts +16 -16
- package/dist/in-store/extract-walls.d.ts.map +1 -1
- package/dist/in-store/extract-walls.js +31 -289
- package/dist/in-store/extract-walls.js.map +1 -1
- package/dist/in-store/length-unit-scale.d.ts +34 -0
- package/dist/in-store/length-unit-scale.d.ts.map +1 -0
- package/dist/in-store/length-unit-scale.js +44 -0
- package/dist/in-store/length-unit-scale.js.map +1 -0
- package/dist/in-store/placement-frame.d.ts +132 -0
- package/dist/in-store/placement-frame.d.ts.map +1 -0
- package/dist/in-store/placement-frame.js +266 -0
- package/dist/in-store/placement-frame.js.map +1 -0
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +7 -14
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +3 -10
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/in-store/spatial-zone.js +1 -1
- package/dist/in-store/storey-plan-frame.d.ts +69 -0
- package/dist/in-store/storey-plan-frame.d.ts.map +1 -0
- package/dist/in-store/storey-plan-frame.js +157 -0
- package/dist/in-store/storey-plan-frame.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types-scheduling.d.ts +169 -0
- package/dist/types-scheduling.d.ts.map +1 -0
- package/dist/types-scheduling.js +5 -0
- package/dist/types-scheduling.js.map +1 -0
- package/dist/types.d.ts +1 -96
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -41,4 +41,18 @@ export declare function assertPositiveFinite(values: Record<string, number>, con
|
|
|
41
41
|
export declare function assertFinitePoint3(points: Record<string, Point3D>, context: string): void;
|
|
42
42
|
/** Cross product */
|
|
43
43
|
export declare function vecCross(a: Point3D, b: Point3D): Point3D;
|
|
44
|
+
/** Emit an optional STEP string: `'value'` when present, `$` otherwise. */
|
|
45
|
+
export declare function optStr(v: string | undefined | null): string;
|
|
46
|
+
/** Emit an optional STEP enum: `.VALUE.` when present, `$` otherwise. */
|
|
47
|
+
export declare function optEnum(v: string | undefined | null): string;
|
|
48
|
+
/** Emit an optional STEP boolean: `.T.`/`.F.`/`$`. */
|
|
49
|
+
export declare function optBool(v: boolean | undefined | null): string;
|
|
50
|
+
/** Emit an optional STEP real number; `$` when absent. */
|
|
51
|
+
export declare function optReal(v: number | undefined | null): string;
|
|
52
|
+
/** Emit an optional STEP integer; `$` when absent. */
|
|
53
|
+
export declare function optInt(v: number | undefined | null): string;
|
|
54
|
+
/** Emit a STEP entity-reference list `(#1,#2)`, or `$` when empty. */
|
|
55
|
+
export declare function refList(ids: number[]): string;
|
|
56
|
+
/** Emit a STEP integer list `(1,2)`, or `$` when absent/empty. */
|
|
57
|
+
export declare function intList(values: number[] | undefined): string;
|
|
44
58
|
//# sourceMappingURL=ifc-creator-math.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-creator-math.d.ts","sourceRoot":"","sources":["../src/ifc-creator-math.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,0CAA0C;AAC1C,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,0FAA0F;AAC1F,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKrC;AAED,oBAAoB;AACpB,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,aAG5B,CAAC;AAEH,2FAA2F;AAC3F,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAI3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMzF;AAED,oBAAoB;AACpB,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD"}
|
|
1
|
+
{"version":3,"file":"ifc-creator-math.d.ts","sourceRoot":"","sources":["../src/ifc-creator-math.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,0CAA0C;AAC1C,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,0FAA0F;AAC1F,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKrC;AAED,oBAAoB;AACpB,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,aAG5B,CAAC;AAEH,2FAA2F;AAC3F,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAI3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMzF;AAED,oBAAoB;AACpB,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD;AASD,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE3D;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE5D;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE7D;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE5D;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE3D;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7C;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAI5D"}
|
package/dist/ifc-creator-math.js
CHANGED
|
@@ -80,4 +80,40 @@ export function vecCross(a, b) {
|
|
|
80
80
|
a[0] * b[1] - a[1] * b[0],
|
|
81
81
|
];
|
|
82
82
|
}
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// STEP attribute helpers (optional strings / enums / booleans / reals)
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Live here rather than in `ifc-creator.ts` so the entity-emitting modules
|
|
87
|
+
// split out of it (`ifc-creator-calendar.ts`) can share one copy instead of
|
|
88
|
+
// each carrying its own `$`-vs-value convention.
|
|
89
|
+
/** Emit an optional STEP string: `'value'` when present, `$` otherwise. */
|
|
90
|
+
export function optStr(v) {
|
|
91
|
+
return v === undefined || v === null || v === '' ? '$' : `'${esc(v)}'`;
|
|
92
|
+
}
|
|
93
|
+
/** Emit an optional STEP enum: `.VALUE.` when present, `$` otherwise. */
|
|
94
|
+
export function optEnum(v) {
|
|
95
|
+
return v === undefined || v === null || v === '' ? '$' : `.${v}.`;
|
|
96
|
+
}
|
|
97
|
+
/** Emit an optional STEP boolean: `.T.`/`.F.`/`$`. */
|
|
98
|
+
export function optBool(v) {
|
|
99
|
+
return v === undefined || v === null ? '$' : v ? '.T.' : '.F.';
|
|
100
|
+
}
|
|
101
|
+
/** Emit an optional STEP real number; `$` when absent. */
|
|
102
|
+
export function optReal(v) {
|
|
103
|
+
return v === undefined || v === null || !Number.isFinite(v) ? '$' : num(v);
|
|
104
|
+
}
|
|
105
|
+
/** Emit an optional STEP integer; `$` when absent. */
|
|
106
|
+
export function optInt(v) {
|
|
107
|
+
return v === undefined || v === null || !Number.isFinite(v) ? '$' : String(Math.trunc(v));
|
|
108
|
+
}
|
|
109
|
+
/** Emit a STEP entity-reference list `(#1,#2)`, or `$` when empty. */
|
|
110
|
+
export function refList(ids) {
|
|
111
|
+
return ids.length === 0 ? '$' : `(${ids.map(i => `#${i}`).join(',')})`;
|
|
112
|
+
}
|
|
113
|
+
/** Emit a STEP integer list `(1,2)`, or `$` when absent/empty. */
|
|
114
|
+
export function intList(values) {
|
|
115
|
+
return values === undefined || values.length === 0
|
|
116
|
+
? '$'
|
|
117
|
+
: `(${values.map(v => String(Math.trunc(v))).join(',')})`;
|
|
118
|
+
}
|
|
83
119
|
//# sourceMappingURL=ifc-creator-math.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-creator-math.js","sourceRoot":"","sources":["../src/ifc-creator-math.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifc-creator-math.js","sourceRoot":"","sources":["../src/ifc-creator-math.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STEP emission for the 4D scheduling entities that carry no attributes of
|
|
3
|
+
* their own on `IfcCreator` — IfcTaskTime, and IfcWorkCalendar with the
|
|
4
|
+
* entities its WorkingTimes / ExceptionTimes lists reference (IfcWorkTime,
|
|
5
|
+
* IfcRecurrencePattern, IfcTimePeriod).
|
|
6
|
+
*
|
|
7
|
+
* Split out of `ifc-creator.ts` so that file doesn't grow past its recorded
|
|
8
|
+
* module-size budget (see `scripts/module-size-allowlist.txt`). The
|
|
9
|
+
* dependency on the creator is narrowed to one `EmitEntity` callback — it
|
|
10
|
+
* allocates the next express id, writes the `#N=TYPE(attrs);` line, and
|
|
11
|
+
* returns the id — so nothing here needs the creator's private state.
|
|
12
|
+
*/
|
|
13
|
+
import type { WorkCalendarParams, TaskParams } from './types.js';
|
|
14
|
+
/** Allocate an express id, emit `#id=TYPE(attrs);`, and return the id. */
|
|
15
|
+
export type EmitEntity = (type: string, attrs: string) => number;
|
|
16
|
+
/**
|
|
17
|
+
* Emit an IfcWorkCalendar and every nested IfcWorkTime in its WorkingTimes
|
|
18
|
+
* and ExceptionTimes lists. Returns the calendar's express id.
|
|
19
|
+
*/
|
|
20
|
+
export declare function emitWorkCalendar(params: WorkCalendarParams, globalId: string, ownerRef: string, emit: EmitEntity): number;
|
|
21
|
+
/**
|
|
22
|
+
* Emit an IfcTaskTime from an `addIfcTask` call's time fields. Callers only
|
|
23
|
+
* reach this when at least one of those fields is set — see
|
|
24
|
+
* `IfcCreator.addIfcTask`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function emitTaskTime(params: TaskParams, emit: EmitEntity): number;
|
|
27
|
+
//# sourceMappingURL=ifc-creator-scheduling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-creator-scheduling.d.ts","sourceRoot":"","sources":["../src/ifc-creator-scheduling.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAA2C,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1G,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAmFjE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GACf,MAAM,CAYR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CA8BzE"}
|
|
@@ -0,0 +1,131 @@
|
|
|
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 { esc, optStr, optEnum, optBool, optReal, optInt, refList, intList } from './ifc-creator-math.js';
|
|
5
|
+
function assertInteger(value, attribute) {
|
|
6
|
+
if (!Number.isFinite(value) || !Number.isInteger(value)) {
|
|
7
|
+
throw new Error(`IfcRecurrencePattern.${attribute} values must be finite integers`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function validateComponent(values, attribute, min, max) {
|
|
11
|
+
for (const value of values ?? []) {
|
|
12
|
+
assertInteger(value, attribute);
|
|
13
|
+
if (value < min || value > max) {
|
|
14
|
+
throw new Error(`IfcRecurrencePattern.${attribute} values must be between ${min} and ${max}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function validateRecurrencePattern(params) {
|
|
19
|
+
validateComponent(params.DayComponent, 'DayComponent', 1, 31);
|
|
20
|
+
validateComponent(params.WeekdayComponent, 'WeekdayComponent', 1, 7);
|
|
21
|
+
validateComponent(params.MonthComponent, 'MonthComponent', 1, 12);
|
|
22
|
+
if (params.Position !== undefined)
|
|
23
|
+
assertInteger(params.Position, 'Position');
|
|
24
|
+
if (params.Interval !== undefined) {
|
|
25
|
+
assertInteger(params.Interval, 'Interval');
|
|
26
|
+
if (params.Interval <= 0) {
|
|
27
|
+
throw new Error('IfcRecurrencePattern.Interval must be a positive integer');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (params.Occurrences !== undefined)
|
|
31
|
+
assertInteger(params.Occurrences, 'Occurrences');
|
|
32
|
+
const allowedByType = {
|
|
33
|
+
DAILY: new Set(),
|
|
34
|
+
WEEKLY: new Set(['WeekdayComponent']),
|
|
35
|
+
MONTHLY_BY_DAY_OF_MONTH: new Set(['DayComponent']),
|
|
36
|
+
MONTHLY_BY_POSITION: new Set(['WeekdayComponent', 'Position']),
|
|
37
|
+
BY_DAY_COUNT: new Set(),
|
|
38
|
+
BY_WEEKDAY_COUNT: new Set(['WeekdayComponent']),
|
|
39
|
+
YEARLY_BY_DAY_OF_MONTH: new Set(['DayComponent', 'MonthComponent']),
|
|
40
|
+
YEARLY_BY_POSITION: new Set(['WeekdayComponent', 'MonthComponent', 'Position']),
|
|
41
|
+
};
|
|
42
|
+
const supplied = [
|
|
43
|
+
['DayComponent', (params.DayComponent?.length ?? 0) > 0],
|
|
44
|
+
['WeekdayComponent', (params.WeekdayComponent?.length ?? 0) > 0],
|
|
45
|
+
['MonthComponent', (params.MonthComponent?.length ?? 0) > 0],
|
|
46
|
+
['Position', params.Position !== undefined],
|
|
47
|
+
];
|
|
48
|
+
const allowed = allowedByType[params.RecurrenceType];
|
|
49
|
+
for (const [attribute, isSupplied] of supplied) {
|
|
50
|
+
if (isSupplied && !allowed.has(attribute)) {
|
|
51
|
+
throw new Error(`IfcRecurrencePattern.${attribute} is not valid for ${params.RecurrenceType}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Emit an IfcRecurrencePattern, plus any IfcTimePeriod entities it references. */
|
|
56
|
+
function emitRecurrencePattern(params, emit) {
|
|
57
|
+
validateRecurrencePattern(params);
|
|
58
|
+
const periodIds = (params.TimePeriods ?? []).map(tp => emit('IFCTIMEPERIOD', `'${esc(tp.StartTime)}','${esc(tp.EndTime)}'`));
|
|
59
|
+
// [0] RecurrenceType, [1] DayComponent, [2] WeekdayComponent,
|
|
60
|
+
// [3] MonthComponent, [4] Position, [5] Interval, [6] Occurrences,
|
|
61
|
+
// [7] TimePeriods
|
|
62
|
+
return emit('IFCRECURRENCEPATTERN', `${optEnum(params.RecurrenceType)},${intList(params.DayComponent)},${intList(params.WeekdayComponent)},`
|
|
63
|
+
+ `${intList(params.MonthComponent)},${optInt(params.Position)},${optInt(params.Interval)},`
|
|
64
|
+
+ `${optInt(params.Occurrences)},${refList(periodIds)}`);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Emit one IfcWorkTime, preceded by its IfcRecurrencePattern (and that
|
|
68
|
+
* pattern's IfcTimePeriod entities) when the entry carries one.
|
|
69
|
+
*/
|
|
70
|
+
function emitWorkTime(params, emit) {
|
|
71
|
+
const recurrenceRef = params.RecurrencePattern !== undefined
|
|
72
|
+
? `#${emitRecurrencePattern(params.RecurrencePattern, emit)}`
|
|
73
|
+
: '$';
|
|
74
|
+
// IfcWorkTime = IfcSchedulingTime(Name, DataOrigin, UDDataOrigin) +
|
|
75
|
+
// RecurrencePattern, Start, Finish (both IfcDate).
|
|
76
|
+
return emit('IFCWORKTIME', `${optStr(params.Name)},${optEnum(params.DataOrigin)},${optStr(params.UserDefinedDataOrigin)},`
|
|
77
|
+
+ `${recurrenceRef},${optStr(params.Start)},${optStr(params.Finish)}`);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Emit an IfcWorkCalendar and every nested IfcWorkTime in its WorkingTimes
|
|
81
|
+
* and ExceptionTimes lists. Returns the calendar's express id.
|
|
82
|
+
*/
|
|
83
|
+
export function emitWorkCalendar(params, globalId, ownerRef, emit) {
|
|
84
|
+
const workingIds = (params.WorkingTimes ?? []).map(wt => emitWorkTime(wt, emit));
|
|
85
|
+
const exceptionIds = (params.ExceptionTimes ?? []).map(wt => emitWorkTime(wt, emit));
|
|
86
|
+
// IFC4 IfcWorkCalendar (IfcControl, NOT IfcWorkControl — so no
|
|
87
|
+
// CreationDate / StartTime / FinishTime that IfcWorkSchedule carries):
|
|
88
|
+
// [0] GlobalId, [1] OwnerHistory, [2] Name, [3] Description,
|
|
89
|
+
// [4] ObjectType, [5] Identification, [6] WorkingTimes,
|
|
90
|
+
// [7] ExceptionTimes, [8] PredefinedType
|
|
91
|
+
return emit('IFCWORKCALENDAR', `'${globalId}',${ownerRef},'${esc(params.Name)}',${optStr(params.Description)},`
|
|
92
|
+
+ `${optStr(params.ObjectType)},${optStr(params.Identification)},`
|
|
93
|
+
+ `${refList(workingIds)},${refList(exceptionIds)},${optEnum(params.PredefinedType)}`);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Emit an IfcTaskTime from an `addIfcTask` call's time fields. Callers only
|
|
97
|
+
* reach this when at least one of those fields is set — see
|
|
98
|
+
* `IfcCreator.addIfcTask`.
|
|
99
|
+
*/
|
|
100
|
+
export function emitTaskTime(params, emit) {
|
|
101
|
+
// [0] Name, [1] DataOrigin, [2] UserDefinedDataOrigin,
|
|
102
|
+
// [3] DurationType, [4] ScheduleDuration, [5] ScheduleStart, [6] ScheduleFinish,
|
|
103
|
+
// [7..10] Early/Late Start/Finish, [11] FreeFloat, [12] TotalFloat,
|
|
104
|
+
// [13] IsCritical, [14] StatusTime,
|
|
105
|
+
// [15] ActualDuration, [16] ActualStart, [17] ActualFinish,
|
|
106
|
+
// [18] RemainingTime, [19] Completion
|
|
107
|
+
const attrs = [
|
|
108
|
+
'$', // Name
|
|
109
|
+
'$', // DataOrigin
|
|
110
|
+
'$', // UserDefinedDataOrigin
|
|
111
|
+
optEnum(params.DurationType), // DurationType
|
|
112
|
+
optStr(params.ScheduleDuration), // ScheduleDuration
|
|
113
|
+
optStr(params.ScheduleStart), // ScheduleStart
|
|
114
|
+
optStr(params.ScheduleFinish), // ScheduleFinish
|
|
115
|
+
optStr(params.EarlyStart), // EarlyStart
|
|
116
|
+
optStr(params.EarlyFinish), // EarlyFinish
|
|
117
|
+
optStr(params.LateStart), // LateStart
|
|
118
|
+
optStr(params.LateFinish), // LateFinish
|
|
119
|
+
optStr(params.FreeFloat), // FreeFloat
|
|
120
|
+
optStr(params.TotalFloat), // TotalFloat
|
|
121
|
+
optBool(params.IsCritical), // IsCritical
|
|
122
|
+
optStr(params.StatusTime), // StatusTime
|
|
123
|
+
optStr(params.ActualDuration), // ActualDuration
|
|
124
|
+
optStr(params.ActualStart), // ActualStart
|
|
125
|
+
optStr(params.ActualFinish), // ActualFinish
|
|
126
|
+
optStr(params.RemainingTime), // RemainingTime
|
|
127
|
+
optReal(params.Completion), // Completion
|
|
128
|
+
];
|
|
129
|
+
return emit('IFCTASKTIME', attrs.join(','));
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=ifc-creator-scheduling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-creator-scheduling.js","sourceRoot":"","sources":["../src/ifc-creator-scheduling.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAgB/D,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKzG,SAAS,aAAa,CAAC,KAAa,EAAE,SAAiB;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,wBAAwB,SAAS,iCAAiC,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA4B,EAAE,SAAiB,EAAE,GAAW,EAAE,GAAW;IAClG,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,SAAS,2BAA2B,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA+B;IAChE,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,iBAAiB,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;QAAE,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEvF,MAAM,aAAa,GAA2E;QAC5F,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACrC,uBAAuB,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;QAClD,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC9D,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC/C,sBAAsB,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACnE,kBAAkB,EAAE,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;KAChF,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;KACnC,CAAC;IACX,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACrD,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/C,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,SAAS,qBAAqB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,qBAAqB,CAAC,MAA+B,EAAE,IAAgB;IAC9E,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACpD,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,8DAA8D;IAC9D,mEAAmE;IACnE,kBAAkB;IAClB,OAAO,IAAI,CAAC,sBAAsB,EAChC,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG;UACtG,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;UAC1F,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAsB,EAAE,IAAgB;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,KAAK,SAAS;QAC1D,CAAC,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAC7D,CAAC,CAAC,GAAG,CAAC;IACR,oEAAoE;IACpE,iEAAiE;IACjE,OAAO,IAAI,CAAC,aAAa,EACvB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG;UAC7F,GAAG,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA0B,EAC1B,QAAgB,EAChB,QAAgB,EAChB,IAAgB;IAEhB,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,+DAA+D;IAC/D,uEAAuE;IACvE,6DAA6D;IAC7D,wDAAwD;IACxD,yCAAyC;IACzC,OAAO,IAAI,CAAC,iBAAiB,EAC3B,IAAI,QAAQ,KAAK,QAAQ,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;UAC9E,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG;UAChE,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAgB;IAC/D,uDAAuD;IACvD,iFAAiF;IACjF,oEAAoE;IACpE,oCAAoC;IACpC,4DAA4D;IAC5D,sCAAsC;IACtC,MAAM,KAAK,GAAa;QACtB,GAAG,EAAuC,OAAO;QACjD,GAAG,EAAuC,aAAa;QACvD,GAAG,EAAuC,wBAAwB;QAClE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAc,eAAe;QACzD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAW,mBAAmB;QAC7D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAc,gBAAgB;QAC1D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAa,iBAAiB;QAC3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAiB,aAAa;QACvD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAgB,cAAc;QACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAkB,YAAY;QACtD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAiB,aAAa;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAkB,YAAY;QACtD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAiB,aAAa;QACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAgB,aAAa;QACvD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAiB,aAAa;QACvD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAa,iBAAiB;QAC3D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAgB,cAAc;QACxD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAe,eAAe;QACzD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAc,gBAAgB;QAC1D,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAgB,aAAa;KACxD,CAAC;IACF,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/ifc-creator.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* All values in metres unless LengthUnit is overridden.
|
|
15
15
|
*/
|
|
16
|
-
import type { Point3D, Point2D, Placement3D, ElementAttributes, ProfileDef, GenericElementParams, AxisElementParams, WallParams, SlabParams, ColumnParams, BeamParams, StairParams, RoofParams, GableRoofParams, WallDoorParams, WallWindowParams, DoorParams, WindowParams, RampParams, RailingParams, PlateParams, MemberParams, FootingParams, PileParams, SpaceParams, CurtainWallParams, FurnishingParams, ProxyParams, ProjectParams, StoreyParams, PropertySetDef, QuantitySetDef, MaterialDef, WorkScheduleParams, WorkPlanParams, TaskParams, SequenceParams, CreateResult } from './types.js';
|
|
16
|
+
import type { Point3D, Point2D, Placement3D, ElementAttributes, ProfileDef, GenericElementParams, AxisElementParams, WallParams, SlabParams, ColumnParams, BeamParams, StairParams, RoofParams, GableRoofParams, WallDoorParams, WallWindowParams, DoorParams, WindowParams, RampParams, RailingParams, PlateParams, MemberParams, FootingParams, PileParams, SpaceParams, CurtainWallParams, FurnishingParams, ProxyParams, ProjectParams, StoreyParams, PropertySetDef, QuantitySetDef, MaterialDef, WorkScheduleParams, WorkPlanParams, TaskParams, SequenceParams, WorkCalendarParams, CreateResult } from './types.js';
|
|
17
17
|
/**
|
|
18
18
|
* PLACEMENT CONTRACT
|
|
19
19
|
*
|
|
@@ -318,17 +318,27 @@ export declare class IfcCreator {
|
|
|
318
318
|
* Attach schedules to the plan with `assignSchedulesToWorkPlan(planId, scheduleIds)`.
|
|
319
319
|
*/
|
|
320
320
|
addIfcWorkPlan(params: WorkPlanParams): number;
|
|
321
|
+
/**
|
|
322
|
+
* Create an IfcWorkCalendar — the working / non-working time calendar an
|
|
323
|
+
* IfcTask or IfcWorkSchedule can be assigned to. `WorkingTimes` /
|
|
324
|
+
* `ExceptionTimes` entries become nested IfcWorkTime entities (with their
|
|
325
|
+
* IfcRecurrencePattern / IfcTimePeriod when the entry carries a
|
|
326
|
+
* recurrence), the same way `addIfcTask` emits its IfcTaskTime. Assign it
|
|
327
|
+
* with `assignCalendarToTasks`. Returns the calendar expressId.
|
|
328
|
+
*/
|
|
329
|
+
addIfcWorkCalendar(params: WorkCalendarParams): number;
|
|
330
|
+
/**
|
|
331
|
+
* Allocate an express id, write its STEP line, and hand the id back — the
|
|
332
|
+
* one hook `ifc-creator-scheduling.ts`'s emitters need from the creator.
|
|
333
|
+
* An arrow property so it can be passed by reference without binding.
|
|
334
|
+
*/
|
|
335
|
+
private emitEntity;
|
|
321
336
|
/**
|
|
322
337
|
* Create an IfcTask. If any Schedule/Actual/Early/Late time field, IsCritical,
|
|
323
338
|
* or Completion attribute is present, an IfcTaskTime is created and linked.
|
|
324
339
|
* Returns the task expressId.
|
|
325
340
|
*/
|
|
326
341
|
addIfcTask(params: TaskParams): number;
|
|
327
|
-
/**
|
|
328
|
-
* Build an IfcTaskTime from the task params (internal helper — prefer
|
|
329
|
-
* setting the time fields on the task itself via `addIfcTask`).
|
|
330
|
-
*/
|
|
331
|
-
private addIfcTaskTime;
|
|
332
342
|
/**
|
|
333
343
|
* Create an IfcRelSequence between two tasks. The predecessor is `RelatingProcess`
|
|
334
344
|
* and the successor is `RelatedProcess`. SequenceType defaults to FINISH_START.
|
|
@@ -350,6 +360,13 @@ export declare class IfcCreator {
|
|
|
350
360
|
* {@link addIfcRelAssignsToControl}.
|
|
351
361
|
*/
|
|
352
362
|
assignSchedulesToWorkPlan(planId: number, scheduleIds: number[]): number;
|
|
363
|
+
/**
|
|
364
|
+
* Ergonomic alias — assign an IfcWorkCalendar to tasks (or work
|
|
365
|
+
* schedules; same relation either way). Delegates to
|
|
366
|
+
* {@link addIfcRelAssignsToControl}, which accepts a calendar because
|
|
367
|
+
* IfcWorkCalendar is an IfcControl.
|
|
368
|
+
*/
|
|
369
|
+
assignCalendarToTasks(calendarId: number, taskIds: number[]): number;
|
|
353
370
|
/**
|
|
354
371
|
* Emit an IfcRelAssignsToProcess — binds products (walls, slabs, ...) to an
|
|
355
372
|
* IfcProcess (usually an IfcTask). These drive the Gantt 4D animation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-creator.d.ts","sourceRoot":"","sources":["../src/ifc-creator.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,OAAO,EAAE,OAAO,EAAE,WAAW,EAC7B,iBAAiB,EAAE,UAAU,EAC7B,oBAAoB,EAAE,iBAAiB,EACvC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAC1F,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EACrF,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EACpD,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAC7D,aAAa,EAA8B,YAAY,EACvD,cAAc,EAAe,cAAc,EAC3C,WAAW,EACX,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"ifc-creator.d.ts","sourceRoot":"","sources":["../src/ifc-creator.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc-creator.js
CHANGED
|
@@ -1,28 +1,10 @@
|
|
|
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 { esc, stepLine, num, vecLen, vecNorm, vecCross, NON_ELEMENT_TYPES, assertPositiveFinite, assertFinitePoint3, } from './ifc-creator-math.js';
|
|
4
|
+
import { esc, stepLine, num, vecLen, vecNorm, vecCross, optStr, optEnum, NON_ELEMENT_TYPES, assertPositiveFinite, assertFinitePoint3, } from './ifc-creator-math.js';
|
|
5
|
+
import { emitWorkCalendar, emitTaskTime } from './ifc-creator-scheduling.js';
|
|
5
6
|
import { generateIfcGuid, isValidIfcGuid } from '@ifc-lite/encoding';
|
|
6
7
|
// ============================================================================
|
|
7
|
-
// STEP attribute helpers (scheduling — optional strings / enums / numbers)
|
|
8
|
-
// ============================================================================
|
|
9
|
-
/** Emit an optional STEP string: `'value'` when present, `$` otherwise. */
|
|
10
|
-
function optStr(v) {
|
|
11
|
-
return v === undefined || v === null || v === '' ? '$' : `'${esc(v)}'`;
|
|
12
|
-
}
|
|
13
|
-
/** Emit an optional STEP enum: `.VALUE.` when present, `$` otherwise. */
|
|
14
|
-
function optEnum(v) {
|
|
15
|
-
return v === undefined || v === null || v === '' ? '$' : `.${v}.`;
|
|
16
|
-
}
|
|
17
|
-
/** Emit an optional STEP boolean: `.T.`/`.F.`/`$`. */
|
|
18
|
-
function optBool(v) {
|
|
19
|
-
return v === undefined || v === null ? '$' : v ? '.T.' : '.F.';
|
|
20
|
-
}
|
|
21
|
-
/** Emit an optional STEP real number; `$` when absent. */
|
|
22
|
-
function optReal(v) {
|
|
23
|
-
return v === undefined || v === null || !Number.isFinite(v) ? '$' : num(v);
|
|
24
|
-
}
|
|
25
|
-
// ============================================================================
|
|
26
8
|
// IfcCreator
|
|
27
9
|
// ============================================================================
|
|
28
10
|
/**
|
|
@@ -1283,7 +1265,7 @@ export class IfcCreator {
|
|
|
1283
1265
|
this.elementMaterials.set(elementId, materialRefId);
|
|
1284
1266
|
}
|
|
1285
1267
|
// ============================================================================
|
|
1286
|
-
// Public API — Scheduling / 4D (IfcWorkSchedule, IfcTask, IfcRelSequence)
|
|
1268
|
+
// Public API — Scheduling / 4D (IfcWorkSchedule, IfcTask, IfcRelSequence, IfcWorkCalendar)
|
|
1287
1269
|
// ============================================================================
|
|
1288
1270
|
/**
|
|
1289
1271
|
* Create an IfcWorkSchedule. Returns its expressId for assigning tasks
|
|
@@ -1299,6 +1281,32 @@ export class IfcCreator {
|
|
|
1299
1281
|
addIfcWorkPlan(params) {
|
|
1300
1282
|
return this.buildWorkControl('IFCWORKPLAN', params);
|
|
1301
1283
|
}
|
|
1284
|
+
/**
|
|
1285
|
+
* Create an IfcWorkCalendar — the working / non-working time calendar an
|
|
1286
|
+
* IfcTask or IfcWorkSchedule can be assigned to. `WorkingTimes` /
|
|
1287
|
+
* `ExceptionTimes` entries become nested IfcWorkTime entities (with their
|
|
1288
|
+
* IfcRecurrencePattern / IfcTimePeriod when the entry carries a
|
|
1289
|
+
* recurrence), the same way `addIfcTask` emits its IfcTaskTime. Assign it
|
|
1290
|
+
* with `assignCalendarToTasks`. Returns the calendar expressId.
|
|
1291
|
+
*/
|
|
1292
|
+
addIfcWorkCalendar(params) {
|
|
1293
|
+
if (this.schema === 'IFC2X3') {
|
|
1294
|
+
throw new Error('addIfcWorkCalendar is not supported for IFC2X3');
|
|
1295
|
+
}
|
|
1296
|
+
const id = emitWorkCalendar(params, this.newGlobalId(), `#${this.ownerHistoryId}`, this.emitEntity);
|
|
1297
|
+
this.entities.push({ expressId: id, type: 'IfcWorkCalendar', Name: params.Name });
|
|
1298
|
+
return id;
|
|
1299
|
+
}
|
|
1300
|
+
/**
|
|
1301
|
+
* Allocate an express id, write its STEP line, and hand the id back — the
|
|
1302
|
+
* one hook `ifc-creator-scheduling.ts`'s emitters need from the creator.
|
|
1303
|
+
* An arrow property so it can be passed by reference without binding.
|
|
1304
|
+
*/
|
|
1305
|
+
emitEntity = (type, attrs) => {
|
|
1306
|
+
const entityId = this.id();
|
|
1307
|
+
this.line(entityId, type, attrs);
|
|
1308
|
+
return entityId;
|
|
1309
|
+
};
|
|
1302
1310
|
/**
|
|
1303
1311
|
* Create an IfcTask. If any Schedule/Actual/Early/Late time field, IsCritical,
|
|
1304
1312
|
* or Completion attribute is present, an IfcTaskTime is created and linked.
|
|
@@ -1322,7 +1330,7 @@ export class IfcCreator {
|
|
|
1322
1330
|
params.IsCritical !== undefined ||
|
|
1323
1331
|
params.DurationType !== undefined ||
|
|
1324
1332
|
params.Completion !== undefined;
|
|
1325
|
-
const taskTimeId = hasTaskTime ? this.
|
|
1333
|
+
const taskTimeId = hasTaskTime ? emitTaskTime(params, this.emitEntity) : 0;
|
|
1326
1334
|
const taskId = this.id();
|
|
1327
1335
|
const globalId = this.newGlobalId();
|
|
1328
1336
|
const name = params.Name;
|
|
@@ -1340,43 +1348,6 @@ export class IfcCreator {
|
|
|
1340
1348
|
this.entities.push({ expressId: taskId, type: 'IfcTask', Name: name });
|
|
1341
1349
|
return taskId;
|
|
1342
1350
|
}
|
|
1343
|
-
/**
|
|
1344
|
-
* Build an IfcTaskTime from the task params (internal helper — prefer
|
|
1345
|
-
* setting the time fields on the task itself via `addIfcTask`).
|
|
1346
|
-
*/
|
|
1347
|
-
addIfcTaskTime(params) {
|
|
1348
|
-
const ttId = this.id();
|
|
1349
|
-
// [0] Name, [1] DataOrigin, [2] UserDefinedDataOrigin,
|
|
1350
|
-
// [3] DurationType, [4] ScheduleDuration, [5] ScheduleStart, [6] ScheduleFinish,
|
|
1351
|
-
// [7..10] Early/Late Start/Finish, [11] FreeFloat, [12] TotalFloat,
|
|
1352
|
-
// [13] IsCritical, [14] StatusTime,
|
|
1353
|
-
// [15] ActualDuration, [16] ActualStart, [17] ActualFinish,
|
|
1354
|
-
// [18] RemainingTime, [19] Completion
|
|
1355
|
-
const attrs = [
|
|
1356
|
-
'$', // Name
|
|
1357
|
-
'$', // DataOrigin
|
|
1358
|
-
'$', // UserDefinedDataOrigin
|
|
1359
|
-
optEnum(params.DurationType), // DurationType
|
|
1360
|
-
optStr(params.ScheduleDuration), // ScheduleDuration
|
|
1361
|
-
optStr(params.ScheduleStart), // ScheduleStart
|
|
1362
|
-
optStr(params.ScheduleFinish), // ScheduleFinish
|
|
1363
|
-
optStr(params.EarlyStart), // EarlyStart
|
|
1364
|
-
optStr(params.EarlyFinish), // EarlyFinish
|
|
1365
|
-
optStr(params.LateStart), // LateStart
|
|
1366
|
-
optStr(params.LateFinish), // LateFinish
|
|
1367
|
-
optStr(params.FreeFloat), // FreeFloat
|
|
1368
|
-
optStr(params.TotalFloat), // TotalFloat
|
|
1369
|
-
optBool(params.IsCritical), // IsCritical
|
|
1370
|
-
optStr(params.StatusTime), // StatusTime
|
|
1371
|
-
optStr(params.ActualDuration), // ActualDuration
|
|
1372
|
-
optStr(params.ActualStart), // ActualStart
|
|
1373
|
-
optStr(params.ActualFinish), // ActualFinish
|
|
1374
|
-
optStr(params.RemainingTime), // RemainingTime
|
|
1375
|
-
optReal(params.Completion), // Completion
|
|
1376
|
-
];
|
|
1377
|
-
this.line(ttId, 'IFCTASKTIME', attrs.join(','));
|
|
1378
|
-
return ttId;
|
|
1379
|
-
}
|
|
1380
1351
|
/**
|
|
1381
1352
|
* Create an IfcRelSequence between two tasks. The predecessor is `RelatingProcess`
|
|
1382
1353
|
* and the successor is `RelatedProcess`. SequenceType defaults to FINISH_START.
|
|
@@ -1427,6 +1398,15 @@ export class IfcCreator {
|
|
|
1427
1398
|
assignSchedulesToWorkPlan(planId, scheduleIds) {
|
|
1428
1399
|
return this.addIfcRelAssignsToControl(planId, scheduleIds);
|
|
1429
1400
|
}
|
|
1401
|
+
/**
|
|
1402
|
+
* Ergonomic alias — assign an IfcWorkCalendar to tasks (or work
|
|
1403
|
+
* schedules; same relation either way). Delegates to
|
|
1404
|
+
* {@link addIfcRelAssignsToControl}, which accepts a calendar because
|
|
1405
|
+
* IfcWorkCalendar is an IfcControl.
|
|
1406
|
+
*/
|
|
1407
|
+
assignCalendarToTasks(calendarId, taskIds) {
|
|
1408
|
+
return this.addIfcRelAssignsToControl(calendarId, taskIds);
|
|
1409
|
+
}
|
|
1430
1410
|
/**
|
|
1431
1411
|
* Emit an IfcRelAssignsToProcess — binds products (walls, slabs, ...) to an
|
|
1432
1412
|
* IfcProcess (usually an IfcTask). These drive the Gantt 4D animation.
|