@ifc-lite/drawing-2d 1.4.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/LICENSE +373 -0
- package/dist/drawing-generator.d.ts +80 -0
- package/dist/drawing-generator.d.ts.map +1 -0
- package/dist/drawing-generator.js +281 -0
- package/dist/drawing-generator.js.map +1 -0
- package/dist/edge-extractor.d.ts +47 -0
- package/dist/edge-extractor.d.ts.map +1 -0
- package/dist/edge-extractor.js +204 -0
- package/dist/edge-extractor.js.map +1 -0
- package/dist/gpu-section-cutter.d.ts +42 -0
- package/dist/gpu-section-cutter.d.ts.map +1 -0
- package/dist/gpu-section-cutter.js +405 -0
- package/dist/gpu-section-cutter.js.map +1 -0
- package/dist/graphic-overrides/index.d.ts +10 -0
- package/dist/graphic-overrides/index.d.ts.map +1 -0
- package/dist/graphic-overrides/index.js +8 -0
- package/dist/graphic-overrides/index.js.map +1 -0
- package/dist/graphic-overrides/presets.d.ts +22 -0
- package/dist/graphic-overrides/presets.d.ts.map +1 -0
- package/dist/graphic-overrides/presets.js +283 -0
- package/dist/graphic-overrides/presets.js.map +1 -0
- package/dist/graphic-overrides/rule-engine.d.ts +64 -0
- package/dist/graphic-overrides/rule-engine.d.ts.map +1 -0
- package/dist/graphic-overrides/rule-engine.js +438 -0
- package/dist/graphic-overrides/rule-engine.js.map +1 -0
- package/dist/graphic-overrides/types.d.ts +200 -0
- package/dist/graphic-overrides/types.d.ts.map +1 -0
- package/dist/graphic-overrides/types.js +5 -0
- package/dist/graphic-overrides/types.js.map +1 -0
- package/dist/hatch-generator.d.ts +76 -0
- package/dist/hatch-generator.d.ts.map +1 -0
- package/dist/hatch-generator.js +282 -0
- package/dist/hatch-generator.js.map +1 -0
- package/dist/hidden-line.d.ts +64 -0
- package/dist/hidden-line.d.ts.map +1 -0
- package/dist/hidden-line.js +318 -0
- package/dist/hidden-line.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/line-merger.d.ts +35 -0
- package/dist/line-merger.d.ts.map +1 -0
- package/dist/line-merger.js +265 -0
- package/dist/line-merger.js.map +1 -0
- package/dist/math.d.ts +90 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +284 -0
- package/dist/math.js.map +1 -0
- package/dist/openings/index.d.ts +7 -0
- package/dist/openings/index.d.ts.map +1 -0
- package/dist/openings/index.js +10 -0
- package/dist/openings/index.js.map +1 -0
- package/dist/openings/opening-filter.d.ts +61 -0
- package/dist/openings/opening-filter.d.ts.map +1 -0
- package/dist/openings/opening-filter.js +244 -0
- package/dist/openings/opening-filter.js.map +1 -0
- package/dist/openings/opening-relationship-builder.d.ts +35 -0
- package/dist/openings/opening-relationship-builder.d.ts.map +1 -0
- package/dist/openings/opening-relationship-builder.js +121 -0
- package/dist/openings/opening-relationship-builder.js.map +1 -0
- package/dist/openings/opening-utils.d.ts +55 -0
- package/dist/openings/opening-utils.d.ts.map +1 -0
- package/dist/openings/opening-utils.js +128 -0
- package/dist/openings/opening-utils.js.map +1 -0
- package/dist/polygon-builder.d.ts +62 -0
- package/dist/polygon-builder.d.ts.map +1 -0
- package/dist/polygon-builder.js +261 -0
- package/dist/polygon-builder.js.map +1 -0
- package/dist/section-cutter.d.ts +49 -0
- package/dist/section-cutter.d.ts.map +1 -0
- package/dist/section-cutter.js +220 -0
- package/dist/section-cutter.js.map +1 -0
- package/dist/sheet/frame-renderer.d.ts +28 -0
- package/dist/sheet/frame-renderer.d.ts.map +1 -0
- package/dist/sheet/frame-renderer.js +199 -0
- package/dist/sheet/frame-renderer.js.map +1 -0
- package/dist/sheet/frame-types.d.ts +57 -0
- package/dist/sheet/frame-types.d.ts.map +1 -0
- package/dist/sheet/frame-types.js +88 -0
- package/dist/sheet/frame-types.js.map +1 -0
- package/dist/sheet/index.d.ts +26 -0
- package/dist/sheet/index.d.ts.map +1 -0
- package/dist/sheet/index.js +12 -0
- package/dist/sheet/index.js.map +1 -0
- package/dist/sheet/paper-sizes.d.ts +36 -0
- package/dist/sheet/paper-sizes.d.ts.map +1 -0
- package/dist/sheet/paper-sizes.js +252 -0
- package/dist/sheet/paper-sizes.js.map +1 -0
- package/dist/sheet/scale-bar-renderer.d.ts +29 -0
- package/dist/sheet/scale-bar-renderer.d.ts.map +1 -0
- package/dist/sheet/scale-bar-renderer.js +287 -0
- package/dist/sheet/scale-bar-renderer.js.map +1 -0
- package/dist/sheet/scale-bar-types.d.ts +82 -0
- package/dist/sheet/scale-bar-types.d.ts.map +1 -0
- package/dist/sheet/scale-bar-types.js +66 -0
- package/dist/sheet/scale-bar-types.js.map +1 -0
- package/dist/sheet/sheet-types.d.ts +84 -0
- package/dist/sheet/sheet-types.d.ts.map +1 -0
- package/dist/sheet/sheet-types.js +77 -0
- package/dist/sheet/sheet-types.js.map +1 -0
- package/dist/sheet/title-block-renderer.d.ts +44 -0
- package/dist/sheet/title-block-renderer.d.ts.map +1 -0
- package/dist/sheet/title-block-renderer.js +335 -0
- package/dist/sheet/title-block-renderer.js.map +1 -0
- package/dist/sheet/title-block-types.d.ts +100 -0
- package/dist/sheet/title-block-types.d.ts.map +1 -0
- package/dist/sheet/title-block-types.js +174 -0
- package/dist/sheet/title-block-types.js.map +1 -0
- package/dist/styles.d.ts +77 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +347 -0
- package/dist/styles.js.map +1 -0
- package/dist/styling/index.d.ts +7 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/index.js +10 -0
- package/dist/styling/index.js.map +1 -0
- package/dist/styling/layer-mapping.d.ts +57 -0
- package/dist/styling/layer-mapping.d.ts.map +1 -0
- package/dist/styling/layer-mapping.js +303 -0
- package/dist/styling/layer-mapping.js.map +1 -0
- package/dist/styling/line-styles.d.ts +49 -0
- package/dist/styling/line-styles.d.ts.map +1 -0
- package/dist/styling/line-styles.js +123 -0
- package/dist/styling/line-styles.js.map +1 -0
- package/dist/styling/line-weights.d.ts +61 -0
- package/dist/styling/line-weights.d.ts.map +1 -0
- package/dist/styling/line-weights.js +183 -0
- package/dist/styling/line-weights.js.map +1 -0
- package/dist/svg-exporter.d.ts +63 -0
- package/dist/svg-exporter.d.ts.map +1 -0
- package/dist/svg-exporter.js +278 -0
- package/dist/svg-exporter.js.map +1 -0
- package/dist/symbols/door-symbol.d.ts +82 -0
- package/dist/symbols/door-symbol.d.ts.map +1 -0
- package/dist/symbols/door-symbol.js +390 -0
- package/dist/symbols/door-symbol.js.map +1 -0
- package/dist/symbols/index.d.ts +8 -0
- package/dist/symbols/index.d.ts.map +1 -0
- package/dist/symbols/index.js +11 -0
- package/dist/symbols/index.js.map +1 -0
- package/dist/symbols/symbol-renderer.d.ts +29 -0
- package/dist/symbols/symbol-renderer.d.ts.map +1 -0
- package/dist/symbols/symbol-renderer.js +173 -0
- package/dist/symbols/symbol-renderer.js.map +1 -0
- package/dist/symbols/symbol-utils.d.ts +48 -0
- package/dist/symbols/symbol-utils.d.ts.map +1 -0
- package/dist/symbols/symbol-utils.js +129 -0
- package/dist/symbols/symbol-utils.js.map +1 -0
- package/dist/symbols/window-symbol.d.ts +57 -0
- package/dist/symbols/window-symbol.d.ts.map +1 -0
- package/dist/symbols/window-symbol.js +209 -0
- package/dist/symbols/window-symbol.js.map +1 -0
- package/dist/types.d.ts +443 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,438 @@
|
|
|
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
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
5
|
+
// CONSTANTS
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
7
|
+
/** Line weight presets in mm */
|
|
8
|
+
const LINE_WEIGHT_VALUES = {
|
|
9
|
+
heavy: 0.5,
|
|
10
|
+
medium: 0.35,
|
|
11
|
+
light: 0.25,
|
|
12
|
+
hairline: 0.18,
|
|
13
|
+
};
|
|
14
|
+
/** Dash pattern presets [dash, gap, ...] in mm */
|
|
15
|
+
const DASH_PATTERNS = {
|
|
16
|
+
solid: [],
|
|
17
|
+
dashed: [2, 1],
|
|
18
|
+
dotted: [0.5, 0.5],
|
|
19
|
+
dashdot: [3, 1, 0.5, 1],
|
|
20
|
+
center: [6, 1, 1, 1],
|
|
21
|
+
};
|
|
22
|
+
/** Default resolved style */
|
|
23
|
+
const DEFAULT_STYLE = {
|
|
24
|
+
fillColor: '#CCCCCC',
|
|
25
|
+
strokeColor: '#000000',
|
|
26
|
+
backgroundColor: '#FFFFFF',
|
|
27
|
+
lineWeight: 0.25,
|
|
28
|
+
lineCap: 'round',
|
|
29
|
+
lineJoin: 'round',
|
|
30
|
+
dashPattern: [],
|
|
31
|
+
hatchPattern: 'none',
|
|
32
|
+
hatchSpacing: 3,
|
|
33
|
+
hatchAngle: 45,
|
|
34
|
+
hatchSecondaryAngle: -45,
|
|
35
|
+
hatchColor: '#000000',
|
|
36
|
+
hatchLineWeight: 0.13,
|
|
37
|
+
visible: true,
|
|
38
|
+
opacity: 1,
|
|
39
|
+
drawOrder: 0,
|
|
40
|
+
};
|
|
41
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
42
|
+
// IFC TYPE HIERARCHY (for subtype matching)
|
|
43
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
44
|
+
const IFC_TYPE_HIERARCHY = {
|
|
45
|
+
IfcWall: ['IfcWallStandardCase', 'IfcWallElementedCase'],
|
|
46
|
+
IfcSlab: ['IfcSlabStandardCase', 'IfcSlabElementedCase'],
|
|
47
|
+
IfcBeam: ['IfcBeamStandardCase'],
|
|
48
|
+
IfcColumn: ['IfcColumnStandardCase'],
|
|
49
|
+
IfcDoor: ['IfcDoorStandardCase'],
|
|
50
|
+
IfcWindow: ['IfcWindowStandardCase'],
|
|
51
|
+
IfcMember: ['IfcMemberStandardCase'],
|
|
52
|
+
IfcPlate: ['IfcPlateStandardCase'],
|
|
53
|
+
IfcStair: ['IfcStairFlight'],
|
|
54
|
+
IfcRamp: ['IfcRampFlight'],
|
|
55
|
+
IfcBuildingElement: [
|
|
56
|
+
'IfcWall', 'IfcSlab', 'IfcBeam', 'IfcColumn', 'IfcDoor', 'IfcWindow',
|
|
57
|
+
'IfcStair', 'IfcRamp', 'IfcRoof', 'IfcRailing', 'IfcCovering',
|
|
58
|
+
],
|
|
59
|
+
IfcDistributionElement: [
|
|
60
|
+
'IfcDistributionFlowElement', 'IfcDistributionControlElement',
|
|
61
|
+
],
|
|
62
|
+
IfcFlowElement: [
|
|
63
|
+
'IfcFlowTerminal', 'IfcFlowSegment', 'IfcFlowFitting', 'IfcFlowController',
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
function getIfcSubtypes(ifcType) {
|
|
67
|
+
const subtypes = IFC_TYPE_HIERARCHY[ifcType] || [];
|
|
68
|
+
const allSubtypes = [...subtypes];
|
|
69
|
+
// Recursively get subtypes of subtypes
|
|
70
|
+
for (const subtype of subtypes) {
|
|
71
|
+
allSubtypes.push(...getIfcSubtypes(subtype));
|
|
72
|
+
}
|
|
73
|
+
return allSubtypes;
|
|
74
|
+
}
|
|
75
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
76
|
+
// CRITERION EVALUATION
|
|
77
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
78
|
+
/**
|
|
79
|
+
* Evaluate a comparison operator
|
|
80
|
+
*/
|
|
81
|
+
function evaluateOperator(actual, operator, expected) {
|
|
82
|
+
switch (operator) {
|
|
83
|
+
case 'equals':
|
|
84
|
+
return actual === expected;
|
|
85
|
+
case 'notEquals':
|
|
86
|
+
return actual !== expected;
|
|
87
|
+
case 'contains':
|
|
88
|
+
if (typeof actual === 'string' && typeof expected === 'string') {
|
|
89
|
+
return actual.toLowerCase().includes(expected.toLowerCase());
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
case 'notContains':
|
|
93
|
+
if (typeof actual === 'string' && typeof expected === 'string') {
|
|
94
|
+
return !actual.toLowerCase().includes(expected.toLowerCase());
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
case 'startsWith':
|
|
98
|
+
if (typeof actual === 'string' && typeof expected === 'string') {
|
|
99
|
+
return actual.toLowerCase().startsWith(expected.toLowerCase());
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
case 'endsWith':
|
|
103
|
+
if (typeof actual === 'string' && typeof expected === 'string') {
|
|
104
|
+
return actual.toLowerCase().endsWith(expected.toLowerCase());
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
case 'greaterThan':
|
|
108
|
+
if (typeof actual === 'number' && typeof expected === 'number') {
|
|
109
|
+
return actual > expected;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
case 'lessThan':
|
|
113
|
+
if (typeof actual === 'number' && typeof expected === 'number') {
|
|
114
|
+
return actual < expected;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
case 'greaterOrEqual':
|
|
118
|
+
if (typeof actual === 'number' && typeof expected === 'number') {
|
|
119
|
+
return actual >= expected;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
case 'lessOrEqual':
|
|
123
|
+
if (typeof actual === 'number' && typeof expected === 'number') {
|
|
124
|
+
return actual <= expected;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
case 'exists':
|
|
128
|
+
return actual !== undefined && actual !== null;
|
|
129
|
+
case 'notExists':
|
|
130
|
+
return actual === undefined || actual === null;
|
|
131
|
+
case 'in':
|
|
132
|
+
if (Array.isArray(expected)) {
|
|
133
|
+
return expected.includes(actual);
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
case 'notIn':
|
|
137
|
+
if (Array.isArray(expected)) {
|
|
138
|
+
return !expected.includes(actual);
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
default:
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Evaluate a single criterion against element data
|
|
147
|
+
*/
|
|
148
|
+
function evaluateCriterion(criterion, element) {
|
|
149
|
+
switch (criterion.type) {
|
|
150
|
+
case 'all':
|
|
151
|
+
return true;
|
|
152
|
+
case 'ifcType': {
|
|
153
|
+
if (!criterion.ifcTypes || criterion.ifcTypes.length === 0) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
const typesToMatch = criterion.includeSubtypes
|
|
157
|
+
? criterion.ifcTypes.flatMap((t) => [t, ...getIfcSubtypes(t)])
|
|
158
|
+
: criterion.ifcTypes;
|
|
159
|
+
return typesToMatch.some((t) => t.toLowerCase() === element.ifcType.toLowerCase());
|
|
160
|
+
}
|
|
161
|
+
case 'property': {
|
|
162
|
+
if (!criterion.propertyName)
|
|
163
|
+
return false;
|
|
164
|
+
const operator = criterion.operator || 'equals';
|
|
165
|
+
let actualValue;
|
|
166
|
+
if (criterion.propertySet && element.properties) {
|
|
167
|
+
const pset = element.properties[criterion.propertySet];
|
|
168
|
+
actualValue = pset?.[criterion.propertyName];
|
|
169
|
+
}
|
|
170
|
+
else if (element.properties) {
|
|
171
|
+
// Search all property sets
|
|
172
|
+
for (const pset of Object.values(element.properties)) {
|
|
173
|
+
if (criterion.propertyName in pset) {
|
|
174
|
+
actualValue = pset[criterion.propertyName];
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return evaluateOperator(actualValue, operator, criterion.value);
|
|
180
|
+
}
|
|
181
|
+
case 'propertySet': {
|
|
182
|
+
if (!criterion.propertySet || !element.properties) {
|
|
183
|
+
return criterion.operator === 'notExists';
|
|
184
|
+
}
|
|
185
|
+
const exists = criterion.propertySet in element.properties;
|
|
186
|
+
const operator = criterion.operator || 'exists';
|
|
187
|
+
if (operator === 'exists')
|
|
188
|
+
return exists;
|
|
189
|
+
if (operator === 'notExists')
|
|
190
|
+
return !exists;
|
|
191
|
+
return exists;
|
|
192
|
+
}
|
|
193
|
+
case 'material': {
|
|
194
|
+
if (!criterion.materialNames || !element.materials) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return criterion.materialNames.some((pattern) => element.materials.some((m) => m.toLowerCase().includes(pattern.toLowerCase())));
|
|
198
|
+
}
|
|
199
|
+
case 'layer': {
|
|
200
|
+
if (!criterion.layerNames || !element.layers) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
return criterion.layerNames.some((pattern) => element.layers.some((l) => l.toLowerCase().includes(pattern.toLowerCase())));
|
|
204
|
+
}
|
|
205
|
+
case 'expressId': {
|
|
206
|
+
if (!criterion.expressIds)
|
|
207
|
+
return false;
|
|
208
|
+
return criterion.expressIds.includes(element.expressId);
|
|
209
|
+
}
|
|
210
|
+
case 'modelId': {
|
|
211
|
+
if (!criterion.modelIds || !element.modelId)
|
|
212
|
+
return false;
|
|
213
|
+
return criterion.modelIds.includes(element.modelId);
|
|
214
|
+
}
|
|
215
|
+
default:
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check if an object is compound criteria
|
|
221
|
+
*/
|
|
222
|
+
function isCompoundCriteria(criteria) {
|
|
223
|
+
return 'logic' in criteria && 'conditions' in criteria;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Evaluate criteria (simple or compound) against element data
|
|
227
|
+
*/
|
|
228
|
+
function evaluateCriteria(criteria, element) {
|
|
229
|
+
if (isCompoundCriteria(criteria)) {
|
|
230
|
+
const results = criteria.conditions.map((c) => evaluateCriteria(c, element));
|
|
231
|
+
if (criteria.logic === 'and') {
|
|
232
|
+
return results.every(Boolean);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
return results.some(Boolean);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return evaluateCriterion(criteria, element);
|
|
239
|
+
}
|
|
240
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
241
|
+
// STYLE RESOLUTION
|
|
242
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
243
|
+
/**
|
|
244
|
+
* Resolve line weight to mm value
|
|
245
|
+
*/
|
|
246
|
+
function resolveLineWeight(weight) {
|
|
247
|
+
if (weight === undefined)
|
|
248
|
+
return DEFAULT_STYLE.lineWeight;
|
|
249
|
+
if (typeof weight === 'number')
|
|
250
|
+
return weight;
|
|
251
|
+
const value = LINE_WEIGHT_VALUES[weight];
|
|
252
|
+
return value !== undefined ? value : DEFAULT_STYLE.lineWeight;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Resolve dash pattern to array
|
|
256
|
+
*/
|
|
257
|
+
function resolveDashPattern(style) {
|
|
258
|
+
if (style === undefined)
|
|
259
|
+
return DEFAULT_STYLE.dashPattern;
|
|
260
|
+
if (typeof style === 'string') {
|
|
261
|
+
return DASH_PATTERNS[style] ?? DEFAULT_STYLE.dashPattern;
|
|
262
|
+
}
|
|
263
|
+
if (style.custom) {
|
|
264
|
+
return style.custom;
|
|
265
|
+
}
|
|
266
|
+
if (style.preset) {
|
|
267
|
+
return DASH_PATTERNS[style.preset] ?? DEFAULT_STYLE.dashPattern;
|
|
268
|
+
}
|
|
269
|
+
return DEFAULT_STYLE.dashPattern;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Merge a partial style into a resolved style
|
|
273
|
+
*/
|
|
274
|
+
function mergeStyle(base, override) {
|
|
275
|
+
return {
|
|
276
|
+
fillColor: override.fillColor ?? base.fillColor,
|
|
277
|
+
strokeColor: override.strokeColor ?? base.strokeColor,
|
|
278
|
+
backgroundColor: override.backgroundColor ?? base.backgroundColor,
|
|
279
|
+
lineWeight: override.lineWeight !== undefined ? resolveLineWeight(override.lineWeight) : base.lineWeight,
|
|
280
|
+
lineCap: override.lineCap ?? base.lineCap,
|
|
281
|
+
lineJoin: override.lineJoin ?? base.lineJoin,
|
|
282
|
+
dashPattern: override.lineStyle ? resolveDashPattern(override.lineStyle) : base.dashPattern,
|
|
283
|
+
hatchPattern: override.hatchPattern ?? base.hatchPattern,
|
|
284
|
+
hatchSpacing: override.hatchSpacing ?? base.hatchSpacing,
|
|
285
|
+
hatchAngle: override.hatchAngle ?? base.hatchAngle,
|
|
286
|
+
hatchSecondaryAngle: override.hatchSecondaryAngle ?? base.hatchSecondaryAngle,
|
|
287
|
+
hatchColor: override.hatchColor ?? base.hatchColor,
|
|
288
|
+
hatchLineWeight: override.hatchLineWeight ?? base.hatchLineWeight,
|
|
289
|
+
visible: override.visible ?? base.visible,
|
|
290
|
+
opacity: override.opacity ?? base.opacity,
|
|
291
|
+
drawOrder: override.drawOrder ?? base.drawOrder,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
295
|
+
// RULE ENGINE
|
|
296
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
297
|
+
export class GraphicOverrideEngine {
|
|
298
|
+
rules = [];
|
|
299
|
+
constructor(rules) {
|
|
300
|
+
if (rules) {
|
|
301
|
+
this.setRules(rules);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Set the active rules
|
|
306
|
+
*/
|
|
307
|
+
setRules(rules) {
|
|
308
|
+
// Sort by priority (ascending - lower priority applied first)
|
|
309
|
+
this.rules = [...rules].sort((a, b) => a.priority - b.priority);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Add a rule
|
|
313
|
+
*/
|
|
314
|
+
addRule(rule) {
|
|
315
|
+
this.rules.push(rule);
|
|
316
|
+
this.rules.sort((a, b) => a.priority - b.priority);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Remove a rule by ID
|
|
320
|
+
*/
|
|
321
|
+
removeRule(ruleId) {
|
|
322
|
+
this.rules = this.rules.filter((r) => r.id !== ruleId);
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Get all active rules
|
|
326
|
+
*/
|
|
327
|
+
getRules() {
|
|
328
|
+
return [...this.rules];
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Apply overrides to an element and get resolved style
|
|
332
|
+
*/
|
|
333
|
+
applyOverrides(element, baseStyle) {
|
|
334
|
+
// Start with default style merged with any base style
|
|
335
|
+
let resolvedStyle = baseStyle
|
|
336
|
+
? mergeStyle(DEFAULT_STYLE, baseStyle)
|
|
337
|
+
: { ...DEFAULT_STYLE };
|
|
338
|
+
const matchedRules = [];
|
|
339
|
+
// Apply rules in priority order
|
|
340
|
+
for (const rule of this.rules) {
|
|
341
|
+
if (!rule.enabled)
|
|
342
|
+
continue;
|
|
343
|
+
if (evaluateCriteria(rule.criteria, element)) {
|
|
344
|
+
resolvedStyle = mergeStyle(resolvedStyle, rule.style);
|
|
345
|
+
matchedRules.push(rule);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return {
|
|
349
|
+
element,
|
|
350
|
+
style: resolvedStyle,
|
|
351
|
+
matchedRules,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Apply overrides to multiple elements
|
|
356
|
+
*/
|
|
357
|
+
applyOverridesToMany(elements, baseStyles) {
|
|
358
|
+
const results = new Map();
|
|
359
|
+
for (const element of elements) {
|
|
360
|
+
const baseStyle = baseStyles?.get(element.expressId);
|
|
361
|
+
results.set(element.expressId, this.applyOverrides(element, baseStyle));
|
|
362
|
+
}
|
|
363
|
+
return results;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Check which rules match an element (for debugging/preview)
|
|
367
|
+
*/
|
|
368
|
+
getMatchingRules(element) {
|
|
369
|
+
return this.rules.filter((rule) => rule.enabled && evaluateCriteria(rule.criteria, element));
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Validate a rule's criteria syntax
|
|
373
|
+
*/
|
|
374
|
+
static validateCriteria(criteria) {
|
|
375
|
+
const errors = [];
|
|
376
|
+
if (isCompoundCriteria(criteria)) {
|
|
377
|
+
if (!criteria.conditions || criteria.conditions.length === 0) {
|
|
378
|
+
errors.push('Compound criteria must have at least one condition');
|
|
379
|
+
}
|
|
380
|
+
for (const condition of criteria.conditions) {
|
|
381
|
+
errors.push(...GraphicOverrideEngine.validateCriteria(condition));
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
if (!criteria.type) {
|
|
386
|
+
errors.push('Criterion must have a type');
|
|
387
|
+
}
|
|
388
|
+
if (criteria.type === 'property' && !criteria.propertyName) {
|
|
389
|
+
errors.push('Property criterion requires propertyName');
|
|
390
|
+
}
|
|
391
|
+
if (criteria.type === 'ifcType' && (!criteria.ifcTypes || criteria.ifcTypes.length === 0)) {
|
|
392
|
+
errors.push('IFC type criterion requires at least one type');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return errors;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Create a default override engine
|
|
400
|
+
*/
|
|
401
|
+
export function createOverrideEngine(rules) {
|
|
402
|
+
return new GraphicOverrideEngine(rules);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Helper to create a simple IFC type criterion
|
|
406
|
+
*/
|
|
407
|
+
export function ifcTypeCriterion(types, includeSubtypes = true) {
|
|
408
|
+
return {
|
|
409
|
+
type: 'ifcType',
|
|
410
|
+
ifcTypes: types,
|
|
411
|
+
includeSubtypes,
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Helper to create a property criterion
|
|
416
|
+
*/
|
|
417
|
+
export function propertyCriterion(propertyName, operator, value, propertySet) {
|
|
418
|
+
return {
|
|
419
|
+
type: 'property',
|
|
420
|
+
propertyName,
|
|
421
|
+
propertySet,
|
|
422
|
+
operator,
|
|
423
|
+
value: value,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Helper to combine criteria with AND
|
|
428
|
+
*/
|
|
429
|
+
export function andCriteria(...conditions) {
|
|
430
|
+
return { logic: 'and', conditions };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Helper to combine criteria with OR
|
|
434
|
+
*/
|
|
435
|
+
export function orCriteria(...conditions) {
|
|
436
|
+
return { logic: 'or', conditions };
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=rule-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/graphic-overrides/rule-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphic Overrides Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the data model for parametric graphic overrides in 2D drawings.
|
|
5
|
+
* Allows users to customize colors, line weights, hatches based on
|
|
6
|
+
* IFC types, properties, or custom criteria.
|
|
7
|
+
*/
|
|
8
|
+
import type { HatchPatternType } from '../styles';
|
|
9
|
+
export type LineWeightPreset = 'heavy' | 'medium' | 'light' | 'hairline';
|
|
10
|
+
export type LineStylePreset = 'solid' | 'dashed' | 'dotted' | 'dashdot' | 'center';
|
|
11
|
+
export interface DashPattern {
|
|
12
|
+
/** Pattern name for presets */
|
|
13
|
+
preset?: LineStylePreset;
|
|
14
|
+
/** Custom dash array [dash, gap, ...] in mm */
|
|
15
|
+
custom?: number[];
|
|
16
|
+
}
|
|
17
|
+
export type CriteriaOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'greaterThan' | 'lessThan' | 'greaterOrEqual' | 'lessOrEqual' | 'exists' | 'notExists' | 'in' | 'notIn';
|
|
18
|
+
export type CriteriaType = 'ifcType' | 'property' | 'propertySet' | 'material' | 'layer' | 'expressId' | 'modelId' | 'all';
|
|
19
|
+
/**
|
|
20
|
+
* Single criterion for matching elements
|
|
21
|
+
*/
|
|
22
|
+
export interface OverrideCriterion {
|
|
23
|
+
/** Type of criterion */
|
|
24
|
+
type: CriteriaType;
|
|
25
|
+
/** IFC types to match (for type='ifcType') */
|
|
26
|
+
ifcTypes?: string[];
|
|
27
|
+
/** Include subtypes (e.g., IfcWall includes IfcWallStandardCase) */
|
|
28
|
+
includeSubtypes?: boolean;
|
|
29
|
+
/** Property set name (for type='property' or 'propertySet') */
|
|
30
|
+
propertySet?: string;
|
|
31
|
+
/** Property name (for type='property') */
|
|
32
|
+
propertyName?: string;
|
|
33
|
+
/** Comparison operator */
|
|
34
|
+
operator?: CriteriaOperator;
|
|
35
|
+
/** Value to compare against */
|
|
36
|
+
value?: string | number | boolean | string[] | number[];
|
|
37
|
+
/** Material name patterns (for type='material') */
|
|
38
|
+
materialNames?: string[];
|
|
39
|
+
/** Layer/presentation layer names (for type='layer') */
|
|
40
|
+
layerNames?: string[];
|
|
41
|
+
/** Express IDs to match (for type='expressId') */
|
|
42
|
+
expressIds?: number[];
|
|
43
|
+
/** Model IDs to match (for type='modelId') */
|
|
44
|
+
modelIds?: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Compound criteria with logical operators
|
|
48
|
+
*/
|
|
49
|
+
export interface OverrideCriteria {
|
|
50
|
+
/** Logical operator for combining conditions */
|
|
51
|
+
logic: 'and' | 'or';
|
|
52
|
+
/** List of conditions */
|
|
53
|
+
conditions: (OverrideCriterion | OverrideCriteria)[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Complete graphic style that can be applied to elements
|
|
57
|
+
*/
|
|
58
|
+
export interface GraphicStyle {
|
|
59
|
+
/** Fill color for cut polygons (hex with optional alpha: #RRGGBB or #RRGGBBAA) */
|
|
60
|
+
fillColor?: string;
|
|
61
|
+
/** Stroke/line color (hex) */
|
|
62
|
+
strokeColor?: string;
|
|
63
|
+
/** Background color for patterns */
|
|
64
|
+
backgroundColor?: string;
|
|
65
|
+
/** Line weight (preset name or custom mm value) */
|
|
66
|
+
lineWeight?: LineWeightPreset | number;
|
|
67
|
+
/** Line style (dash pattern) */
|
|
68
|
+
lineStyle?: LineStylePreset | DashPattern;
|
|
69
|
+
/** Line cap style */
|
|
70
|
+
lineCap?: 'butt' | 'round' | 'square';
|
|
71
|
+
/** Line join style */
|
|
72
|
+
lineJoin?: 'miter' | 'round' | 'bevel';
|
|
73
|
+
/** Hatch pattern type */
|
|
74
|
+
hatchPattern?: HatchPatternType;
|
|
75
|
+
/** Hatch line spacing in mm */
|
|
76
|
+
hatchSpacing?: number;
|
|
77
|
+
/** Hatch angle in degrees */
|
|
78
|
+
hatchAngle?: number;
|
|
79
|
+
/** Secondary hatch angle for cross-hatch */
|
|
80
|
+
hatchSecondaryAngle?: number;
|
|
81
|
+
/** Hatch line color */
|
|
82
|
+
hatchColor?: string;
|
|
83
|
+
/** Hatch line weight in mm */
|
|
84
|
+
hatchLineWeight?: number;
|
|
85
|
+
/** Whether element is visible */
|
|
86
|
+
visible?: boolean;
|
|
87
|
+
/** Opacity (0-1) */
|
|
88
|
+
opacity?: number;
|
|
89
|
+
/** Z-order for overlapping elements (higher = on top) */
|
|
90
|
+
drawOrder?: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Complete override rule combining criteria and style
|
|
94
|
+
*/
|
|
95
|
+
export interface GraphicOverrideRule {
|
|
96
|
+
/** Unique identifier */
|
|
97
|
+
id: string;
|
|
98
|
+
/** Display name */
|
|
99
|
+
name: string;
|
|
100
|
+
/** Optional description */
|
|
101
|
+
description?: string;
|
|
102
|
+
/** Whether rule is active */
|
|
103
|
+
enabled: boolean;
|
|
104
|
+
/** Priority (higher = applied later, wins conflicts) */
|
|
105
|
+
priority: number;
|
|
106
|
+
/** Match criteria */
|
|
107
|
+
criteria: OverrideCriteria | OverrideCriterion;
|
|
108
|
+
/** Style to apply */
|
|
109
|
+
style: GraphicStyle;
|
|
110
|
+
/** Category for organization */
|
|
111
|
+
category?: string;
|
|
112
|
+
/** Tags for filtering */
|
|
113
|
+
tags?: string[];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Named collection of override rules
|
|
117
|
+
*/
|
|
118
|
+
export interface GraphicOverridePreset {
|
|
119
|
+
/** Unique identifier */
|
|
120
|
+
id: string;
|
|
121
|
+
/** Display name */
|
|
122
|
+
name: string;
|
|
123
|
+
/** Description */
|
|
124
|
+
description?: string;
|
|
125
|
+
/** Icon name or emoji */
|
|
126
|
+
icon?: string;
|
|
127
|
+
/** List of rules in this preset */
|
|
128
|
+
rules: GraphicOverrideRule[];
|
|
129
|
+
/** Whether this is a built-in preset */
|
|
130
|
+
builtIn?: boolean;
|
|
131
|
+
/** Category (e.g., "Safety", "Structural", "MEP") */
|
|
132
|
+
category?: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Element data used for matching override rules
|
|
136
|
+
*/
|
|
137
|
+
export interface ElementData {
|
|
138
|
+
/** Express ID */
|
|
139
|
+
expressId: number;
|
|
140
|
+
/** Model ID (for federation) */
|
|
141
|
+
modelId?: string;
|
|
142
|
+
/** IFC type (e.g., 'IfcWall') */
|
|
143
|
+
ifcType: string;
|
|
144
|
+
/** Properties organized by property set */
|
|
145
|
+
properties?: Record<string, Record<string, unknown>>;
|
|
146
|
+
/** Material names */
|
|
147
|
+
materials?: string[];
|
|
148
|
+
/** Layer/presentation layer assignments */
|
|
149
|
+
layers?: string[];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Fully resolved style with all defaults filled in
|
|
153
|
+
* Note: lineWeight is resolved to a number (mm), not a preset name
|
|
154
|
+
*/
|
|
155
|
+
export interface ResolvedGraphicStyle {
|
|
156
|
+
/** Fill color for cut polygons (hex) */
|
|
157
|
+
fillColor: string;
|
|
158
|
+
/** Stroke/line color (hex) */
|
|
159
|
+
strokeColor: string;
|
|
160
|
+
/** Background color for patterns */
|
|
161
|
+
backgroundColor: string;
|
|
162
|
+
/** Line weight in mm (resolved from preset or custom) */
|
|
163
|
+
lineWeight: number;
|
|
164
|
+
/** Line cap style */
|
|
165
|
+
lineCap: 'butt' | 'round' | 'square';
|
|
166
|
+
/** Line join style */
|
|
167
|
+
lineJoin: 'miter' | 'round' | 'bevel';
|
|
168
|
+
/** Resolved dash pattern as array [dash, gap, ...] in mm */
|
|
169
|
+
dashPattern: number[];
|
|
170
|
+
/** Hatch pattern type */
|
|
171
|
+
hatchPattern: HatchPatternType;
|
|
172
|
+
/** Hatch line spacing in mm */
|
|
173
|
+
hatchSpacing: number;
|
|
174
|
+
/** Hatch angle in degrees */
|
|
175
|
+
hatchAngle: number;
|
|
176
|
+
/** Secondary hatch angle for cross-hatch */
|
|
177
|
+
hatchSecondaryAngle: number;
|
|
178
|
+
/** Hatch line color */
|
|
179
|
+
hatchColor: string;
|
|
180
|
+
/** Hatch line weight in mm */
|
|
181
|
+
hatchLineWeight: number;
|
|
182
|
+
/** Whether element is visible */
|
|
183
|
+
visible: boolean;
|
|
184
|
+
/** Opacity (0-1) */
|
|
185
|
+
opacity: number;
|
|
186
|
+
/** Z-order for overlapping elements */
|
|
187
|
+
drawOrder: number;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Result of applying overrides to an element
|
|
191
|
+
*/
|
|
192
|
+
export interface OverrideResult {
|
|
193
|
+
/** The element data */
|
|
194
|
+
element: ElementData;
|
|
195
|
+
/** Resolved style */
|
|
196
|
+
style: ResolvedGraphicStyle;
|
|
197
|
+
/** Rules that matched (in order of application) */
|
|
198
|
+
matchedRules: GraphicOverrideRule[];
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graphic-overrides/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graphic-overrides/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|