@ifc-lite/drawing-2d 3.0.0 → 3.1.1
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/graphic-overrides/ifc-type-hierarchy.d.ts +38 -0
- package/dist/graphic-overrides/ifc-type-hierarchy.d.ts.map +1 -0
- package/dist/graphic-overrides/ifc-type-hierarchy.js +156 -0
- package/dist/graphic-overrides/ifc-type-hierarchy.js.map +1 -0
- package/dist/graphic-overrides/rule-engine.d.ts.map +1 -1
- package/dist/graphic-overrides/rule-engine.js +1 -34
- package/dist/graphic-overrides/rule-engine.js.map +1 -1
- package/dist/svg-exporter.d.ts +0 -13
- package/dist/svg-exporter.d.ts.map +1 -1
- package/dist/svg-exporter.js +54 -103
- package/dist/svg-exporter.js.map +1 -1
- package/dist/svg-transform.d.ts +41 -0
- package/dist/svg-transform.d.ts.map +1 -0
- package/dist/svg-transform.js +95 -0
- package/dist/svg-transform.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IFC type hierarchy for graphic-override subtype matching.
|
|
3
|
+
*
|
|
4
|
+
* `ifcTypeCriterion` defaults `includeSubtypes` to true, so a rule naming a
|
|
5
|
+
* supertype is expected to style every element beneath it. That expansion is
|
|
6
|
+
* driven by the table below, which means anything the table omits is silently
|
|
7
|
+
* skipped: the element still draws, just without the override the rule was
|
|
8
|
+
* written to apply, and nothing warns.
|
|
9
|
+
*
|
|
10
|
+
* `SUBTYPES_BY_SUPERTYPE` is therefore mechanically derived from the IFC4
|
|
11
|
+
* (ADD2 TC1) schema rather than curated by hand — it is the direct-children
|
|
12
|
+
* map of every entity under `IfcElement` and `IfcSpatialElement`, the entities
|
|
13
|
+
* a 2D drawing can contain. `ifc-type-hierarchy.test.ts` re-derives the same
|
|
14
|
+
* map from `@ifc-lite/data`'s `ENTITIES_IFC4` and fails if the two disagree,
|
|
15
|
+
* so a schema bump cannot quietly reintroduce the gap.
|
|
16
|
+
*
|
|
17
|
+
* Do not hand-edit `SUBTYPES_BY_SUPERTYPE` to add a convenience name; put it in
|
|
18
|
+
* `AUTHORING_ALIASES` with a reason, or the parity test will reject it.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Direct subtypes of each entity, derived from IFC4 ADD2 TC1.
|
|
22
|
+
* `getIfcSubtypes` walks this transitively.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SUBTYPES_BY_SUPERTYPE: Readonly<Record<string, readonly string[]>>;
|
|
25
|
+
/**
|
|
26
|
+
* Names that are NOT IFC4 entities but that rule authors reasonably write.
|
|
27
|
+
* Kept deliberately, and separately, so the schema-parity test can hold
|
|
28
|
+
* `SUBTYPES_BY_SUPERTYPE` to the schema exactly.
|
|
29
|
+
*/
|
|
30
|
+
export declare const AUTHORING_ALIASES: Readonly<Record<string, readonly string[]>>;
|
|
31
|
+
/**
|
|
32
|
+
* Every transitive subtype of `ifcType`, or `[]` if it has none / is unknown.
|
|
33
|
+
*
|
|
34
|
+
* The returned names are unique. The walk tracks visited nodes, so an alias
|
|
35
|
+
* that points back into the table cannot spin.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getIfcSubtypes(ifcType: string): string[];
|
|
38
|
+
//# sourceMappingURL=ifc-type-hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-type-hierarchy.d.ts","sourceRoot":"","sources":["../../src/graphic-overrides/ifc-type-hierarchy.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAyEtC,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAgBzE,CAAC;AAcF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAaxD"}
|
|
@@ -0,0 +1,156 @@
|
|
|
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
|
+
* IFC type hierarchy for graphic-override subtype matching.
|
|
6
|
+
*
|
|
7
|
+
* `ifcTypeCriterion` defaults `includeSubtypes` to true, so a rule naming a
|
|
8
|
+
* supertype is expected to style every element beneath it. That expansion is
|
|
9
|
+
* driven by the table below, which means anything the table omits is silently
|
|
10
|
+
* skipped: the element still draws, just without the override the rule was
|
|
11
|
+
* written to apply, and nothing warns.
|
|
12
|
+
*
|
|
13
|
+
* `SUBTYPES_BY_SUPERTYPE` is therefore mechanically derived from the IFC4
|
|
14
|
+
* (ADD2 TC1) schema rather than curated by hand — it is the direct-children
|
|
15
|
+
* map of every entity under `IfcElement` and `IfcSpatialElement`, the entities
|
|
16
|
+
* a 2D drawing can contain. `ifc-type-hierarchy.test.ts` re-derives the same
|
|
17
|
+
* map from `@ifc-lite/data`'s `ENTITIES_IFC4` and fails if the two disagree,
|
|
18
|
+
* so a schema bump cannot quietly reintroduce the gap.
|
|
19
|
+
*
|
|
20
|
+
* Do not hand-edit `SUBTYPES_BY_SUPERTYPE` to add a convenience name; put it in
|
|
21
|
+
* `AUTHORING_ALIASES` with a reason, or the parity test will reject it.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Direct subtypes of each entity, derived from IFC4 ADD2 TC1.
|
|
25
|
+
* `getIfcSubtypes` walks this transitively.
|
|
26
|
+
*/
|
|
27
|
+
export const SUBTYPES_BY_SUPERTYPE = {
|
|
28
|
+
IfcBeam: ['IfcBeamStandardCase'],
|
|
29
|
+
IfcBuildingElement: [
|
|
30
|
+
'IfcBeam', 'IfcBuildingElementProxy', 'IfcChimney', 'IfcColumn', 'IfcCovering',
|
|
31
|
+
'IfcCurtainWall', 'IfcDoor', 'IfcFooting', 'IfcMember', 'IfcPile', 'IfcPlate', 'IfcRailing',
|
|
32
|
+
'IfcRamp', 'IfcRampFlight', 'IfcRoof', 'IfcShadingDevice', 'IfcSlab', 'IfcStair',
|
|
33
|
+
'IfcStairFlight', 'IfcWall', 'IfcWindow',
|
|
34
|
+
],
|
|
35
|
+
IfcColumn: ['IfcColumnStandardCase'],
|
|
36
|
+
IfcDistributionControlElement: [
|
|
37
|
+
'IfcActuator', 'IfcAlarm', 'IfcController', 'IfcFlowInstrument',
|
|
38
|
+
'IfcProtectiveDeviceTrippingUnit', 'IfcSensor', 'IfcUnitaryControlElement',
|
|
39
|
+
],
|
|
40
|
+
IfcDistributionElement: ['IfcDistributionControlElement', 'IfcDistributionFlowElement'],
|
|
41
|
+
IfcDistributionFlowElement: [
|
|
42
|
+
'IfcDistributionChamberElement', 'IfcEnergyConversionDevice', 'IfcFlowController',
|
|
43
|
+
'IfcFlowFitting', 'IfcFlowMovingDevice', 'IfcFlowSegment', 'IfcFlowStorageDevice',
|
|
44
|
+
'IfcFlowTerminal', 'IfcFlowTreatmentDevice',
|
|
45
|
+
],
|
|
46
|
+
IfcDoor: ['IfcDoorStandardCase'],
|
|
47
|
+
IfcElement: [
|
|
48
|
+
'IfcBuildingElement', 'IfcCivilElement', 'IfcDistributionElement', 'IfcElementAssembly',
|
|
49
|
+
'IfcElementComponent', 'IfcFeatureElement', 'IfcFurnishingElement', 'IfcGeographicElement',
|
|
50
|
+
'IfcTransportElement', 'IfcVirtualElement',
|
|
51
|
+
],
|
|
52
|
+
IfcElementComponent: [
|
|
53
|
+
'IfcBuildingElementPart', 'IfcDiscreteAccessory', 'IfcFastener', 'IfcMechanicalFastener',
|
|
54
|
+
'IfcReinforcingElement', 'IfcVibrationIsolator',
|
|
55
|
+
],
|
|
56
|
+
IfcEnergyConversionDevice: [
|
|
57
|
+
'IfcAirToAirHeatRecovery', 'IfcBoiler', 'IfcBurner', 'IfcChiller', 'IfcCoil',
|
|
58
|
+
'IfcCondenser', 'IfcCooledBeam', 'IfcCoolingTower', 'IfcElectricGenerator',
|
|
59
|
+
'IfcElectricMotor', 'IfcEngine', 'IfcEvaporativeCooler', 'IfcEvaporator',
|
|
60
|
+
'IfcHeatExchanger', 'IfcHumidifier', 'IfcMotorConnection', 'IfcSolarDevice',
|
|
61
|
+
'IfcTransformer', 'IfcTubeBundle', 'IfcUnitaryEquipment',
|
|
62
|
+
],
|
|
63
|
+
IfcExternalSpatialStructureElement: ['IfcExternalSpatialElement'],
|
|
64
|
+
IfcFeatureElement: [
|
|
65
|
+
'IfcFeatureElementAddition', 'IfcFeatureElementSubtraction', 'IfcSurfaceFeature',
|
|
66
|
+
],
|
|
67
|
+
IfcFeatureElementAddition: ['IfcProjectionElement'],
|
|
68
|
+
IfcFeatureElementSubtraction: ['IfcOpeningElement', 'IfcVoidingFeature'],
|
|
69
|
+
IfcFlowController: [
|
|
70
|
+
'IfcAirTerminalBox', 'IfcDamper', 'IfcElectricDistributionBoard', 'IfcElectricTimeControl',
|
|
71
|
+
'IfcFlowMeter', 'IfcProtectiveDevice', 'IfcSwitchingDevice', 'IfcValve',
|
|
72
|
+
],
|
|
73
|
+
IfcFlowFitting: [
|
|
74
|
+
'IfcCableCarrierFitting', 'IfcCableFitting', 'IfcDuctFitting', 'IfcJunctionBox',
|
|
75
|
+
'IfcPipeFitting',
|
|
76
|
+
],
|
|
77
|
+
IfcFlowMovingDevice: ['IfcCompressor', 'IfcFan', 'IfcPump'],
|
|
78
|
+
IfcFlowSegment: ['IfcCableCarrierSegment', 'IfcCableSegment', 'IfcDuctSegment', 'IfcPipeSegment'],
|
|
79
|
+
IfcFlowStorageDevice: ['IfcElectricFlowStorageDevice', 'IfcTank'],
|
|
80
|
+
IfcFlowTerminal: [
|
|
81
|
+
'IfcAirTerminal', 'IfcAudioVisualAppliance', 'IfcCommunicationsAppliance',
|
|
82
|
+
'IfcElectricAppliance', 'IfcFireSuppressionTerminal', 'IfcLamp', 'IfcLightFixture',
|
|
83
|
+
'IfcMedicalDevice', 'IfcOutlet', 'IfcSanitaryTerminal', 'IfcSpaceHeater',
|
|
84
|
+
'IfcStackTerminal', 'IfcWasteTerminal',
|
|
85
|
+
],
|
|
86
|
+
IfcFlowTreatmentDevice: ['IfcDuctSilencer', 'IfcFilter', 'IfcInterceptor'],
|
|
87
|
+
IfcFurnishingElement: ['IfcFurniture', 'IfcSystemFurnitureElement'],
|
|
88
|
+
IfcMember: ['IfcMemberStandardCase'],
|
|
89
|
+
IfcOpeningElement: ['IfcOpeningStandardCase'],
|
|
90
|
+
IfcPlate: ['IfcPlateStandardCase'],
|
|
91
|
+
IfcReinforcingElement: [
|
|
92
|
+
'IfcReinforcingBar', 'IfcReinforcingMesh', 'IfcTendon', 'IfcTendonAnchor',
|
|
93
|
+
],
|
|
94
|
+
IfcSlab: ['IfcSlabElementedCase', 'IfcSlabStandardCase'],
|
|
95
|
+
IfcSpatialElement: [
|
|
96
|
+
'IfcExternalSpatialStructureElement', 'IfcSpatialStructureElement', 'IfcSpatialZone',
|
|
97
|
+
],
|
|
98
|
+
IfcSpatialStructureElement: ['IfcBuilding', 'IfcBuildingStorey', 'IfcSite', 'IfcSpace'],
|
|
99
|
+
IfcWall: ['IfcWallElementedCase', 'IfcWallStandardCase'],
|
|
100
|
+
IfcWindow: ['IfcWindowStandardCase'],
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Names that are NOT IFC4 entities but that rule authors reasonably write.
|
|
104
|
+
* Kept deliberately, and separately, so the schema-parity test can hold
|
|
105
|
+
* `SUBTYPES_BY_SUPERTYPE` to the schema exactly.
|
|
106
|
+
*/
|
|
107
|
+
export const AUTHORING_ALIASES = {
|
|
108
|
+
/**
|
|
109
|
+
* Not an entity in IFC2X3, IFC4 or IFC4X3 — the real supertype of the flow
|
|
110
|
+
* entities is `IfcDistributionFlowElement`. It shipped as a table key, so a
|
|
111
|
+
* rule may already name it; mapping it keeps those rules working (and now
|
|
112
|
+
* reaches the whole flow subtree rather than four names).
|
|
113
|
+
*/
|
|
114
|
+
IfcFlowElement: ['IfcDistributionFlowElement'],
|
|
115
|
+
/**
|
|
116
|
+
* `IfcStairFlight`/`IfcRampFlight` are siblings of `IfcStair`/`IfcRamp` under
|
|
117
|
+
* `IfcBuildingElement`, not subtypes. The table has always expanded them this
|
|
118
|
+
* way and a rule on `IfcStair` that stopped covering its flights would be a
|
|
119
|
+
* silent narrowing, so the authoring convenience is kept and named.
|
|
120
|
+
*/
|
|
121
|
+
IfcStair: ['IfcStairFlight'],
|
|
122
|
+
IfcRamp: ['IfcRampFlight'],
|
|
123
|
+
};
|
|
124
|
+
/** Schema subtypes plus authoring aliases, merged. */
|
|
125
|
+
const HIERARCHY = (() => {
|
|
126
|
+
const merged = {};
|
|
127
|
+
for (const [parent, children] of Object.entries(SUBTYPES_BY_SUPERTYPE)) {
|
|
128
|
+
merged[parent] = [...children];
|
|
129
|
+
}
|
|
130
|
+
for (const [parent, children] of Object.entries(AUTHORING_ALIASES)) {
|
|
131
|
+
merged[parent] = [...new Set([...(merged[parent] ?? []), ...children])];
|
|
132
|
+
}
|
|
133
|
+
return merged;
|
|
134
|
+
})();
|
|
135
|
+
/**
|
|
136
|
+
* Every transitive subtype of `ifcType`, or `[]` if it has none / is unknown.
|
|
137
|
+
*
|
|
138
|
+
* The returned names are unique. The walk tracks visited nodes, so an alias
|
|
139
|
+
* that points back into the table cannot spin.
|
|
140
|
+
*/
|
|
141
|
+
export function getIfcSubtypes(ifcType) {
|
|
142
|
+
const seen = new Set();
|
|
143
|
+
const out = [];
|
|
144
|
+
const walk = (type) => {
|
|
145
|
+
for (const child of HIERARCHY[type] ?? []) {
|
|
146
|
+
if (seen.has(child))
|
|
147
|
+
continue;
|
|
148
|
+
seen.add(child);
|
|
149
|
+
out.push(child);
|
|
150
|
+
walk(child);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
walk(ifcType);
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=ifc-type-hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc-type-hierarchy.js","sourceRoot":"","sources":["../../src/graphic-overrides/ifc-type-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../src/graphic-overrides/rule-engine.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,YAAY,EAEZ,cAAc,EAIf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../src/graphic-overrides/rule-engine.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,YAAY,EAEZ,cAAc,EAIf,MAAM,YAAY,CAAC;AAmUpB,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAA6B;gBAE9B,KAAK,CAAC,EAAE,mBAAmB,EAAE;IAMzC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAK5C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAKxC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,QAAQ,IAAI,mBAAmB,EAAE;IAIjC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,cAAc;IAyBvF;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,GAC9C,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAW9B;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAM7D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,EAAE;CA0BlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAE,GAAG,qBAAqB,CAEzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,UAAO,GAAG,iBAAiB,CAM3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,CAAC,EAAE,OAAO,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,CAQnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,UAAU,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,GACtD,gBAAgB,CAElB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,UAAU,EAAE,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,GACtD,gBAAgB,CAElB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
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 { getIfcSubtypes } from './ifc-type-hierarchy.js';
|
|
4
5
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
5
6
|
// CONSTANTS
|
|
6
7
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -39,40 +40,6 @@ const DEFAULT_STYLE = {
|
|
|
39
40
|
drawOrder: 0,
|
|
40
41
|
};
|
|
41
42
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
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
43
|
// CRITERION EVALUATION
|
|
77
44
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
78
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/graphic-overrides/rule-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/graphic-overrides/rule-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/svg-exporter.d.ts
CHANGED
|
@@ -62,19 +62,6 @@ export declare class SVGExporter {
|
|
|
62
62
|
* Export just the cut polygons with hatching (for section fills)
|
|
63
63
|
*/
|
|
64
64
|
exportPolygons(polygons: DrawingPolygon[], bounds: Bounds2D, options?: SVGExportOptions): string;
|
|
65
|
-
private computeTransform;
|
|
66
|
-
/**
|
|
67
|
-
* Label printed in the title block's "Scale:" line.
|
|
68
|
-
*
|
|
69
|
-
* When the drawing was not clamped, the exact requested `scale.name` is
|
|
70
|
-
* returned unchanged (no floating-point round-trip on the common path, so
|
|
71
|
-
* "1:100" never regresses to something like "1:100.0000001"). When the
|
|
72
|
-
* effective scale was shrunk to honour the padding guarantee, the label is
|
|
73
|
-
* re-derived from the *actual* `worldToMm` so a clamped sheet never claims
|
|
74
|
-
* the scale it was requested at but did not render at (PR #2131 review).
|
|
75
|
-
*/
|
|
76
|
-
private scaleLabel;
|
|
77
|
-
private transformPoint;
|
|
78
65
|
private createHeader;
|
|
79
66
|
private createDefs;
|
|
80
67
|
private createPolygonDefs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-exporter.d.ts","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EAEd,QAAQ,EAET,MAAM,YAAY,CAAC;AAGpB,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"svg-exporter.d.ts","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EAEd,QAAQ,EAET,MAAM,YAAY,CAAC;AAGpB,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAQrB,OAAO,EAAyB,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM5F,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0BAA0B;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6BD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAwB;IAE9C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAyElE;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAsBpG,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,sBAAsB;IAwC9B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,gBAAgB;IA2BxB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAsE3B,OAAO,CAAC,SAAS;CAQlB;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAGlF"}
|
package/dist/svg-exporter.js
CHANGED
|
@@ -3,13 +3,35 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { HatchGenerator } from './hatch-generator.js';
|
|
5
5
|
import { getLineStyle, getHatchPattern, PAPER_SIZES, COMMON_SCALES, } from './styles.js';
|
|
6
|
-
import {
|
|
7
|
-
import { formatScaleFactorLabel } from './pdf-scale.js';
|
|
6
|
+
import { computeTransform, scaleLabel, transformPoint, } from './svg-transform.js';
|
|
8
7
|
import { applyDxfPlacement } from './dxf/convert.js';
|
|
9
8
|
import { DEFAULT_DXF_PLACEMENT } from './dxf/types.js';
|
|
10
9
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
11
10
|
// SVG EXPORTER CLASS
|
|
12
11
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
12
|
+
/**
|
|
13
|
+
* The one place a number becomes SVG text.
|
|
14
|
+
*
|
|
15
|
+
* SVG's `<number>` grammar admits a sign, digits, a decimal point and an
|
|
16
|
+
* exponent — and nothing else. `NaN`, `Infinity` and `-Infinity` stringify
|
|
17
|
+
* verbatim through `toFixed`, so an unguarded interpolation writes
|
|
18
|
+
* `x1="NaN"`, which a conforming renderer must treat as an error rather than
|
|
19
|
+
* draw. The DXF writer beside this one has always guarded the same values at
|
|
20
|
+
* its own single `fmt()` (`dxf/writer.ts`); this is the SVG half of that
|
|
21
|
+
* rule, in one function rather than at each of the coordinate, size and
|
|
22
|
+
* rotation interpolations below — so it cannot end up applied to some of
|
|
23
|
+
* them and not the others.
|
|
24
|
+
*
|
|
25
|
+
* Non-finite becomes `0`, matching the DXF writer's deterministic `'0.0'`:
|
|
26
|
+
* the document stays parseable and byte-reproducible, and the degenerate
|
|
27
|
+
* geometry collapses at the origin where it is visible, instead of taking
|
|
28
|
+
* the rest of the drawing with it.
|
|
29
|
+
*/
|
|
30
|
+
function svgNum(n, digits = 3) {
|
|
31
|
+
if (!Number.isFinite(n))
|
|
32
|
+
return '0';
|
|
33
|
+
return n.toFixed(digits);
|
|
34
|
+
}
|
|
13
35
|
export class SVGExporter {
|
|
14
36
|
hatchGenerator = new HatchGenerator();
|
|
15
37
|
/**
|
|
@@ -18,7 +40,7 @@ export class SVGExporter {
|
|
|
18
40
|
export(drawing, options = {}) {
|
|
19
41
|
const { paperSize = PAPER_SIZES.A3_LANDSCAPE, scale = COMMON_SCALES.find((s) => s.factor === drawing.config.scale) || COMMON_SCALES[5], padding = 20, showHiddenLines = true, showHatching = true, showTitleBlock = false, title = 'Section', projectName = '', backgroundColor = '#FFFFFF', underlays = [], } = options;
|
|
20
42
|
// Calculate transform from drawing coordinates to SVG coordinates
|
|
21
|
-
const transform =
|
|
43
|
+
const transform = computeTransform(drawing.bounds, paperSize, scale, padding);
|
|
22
44
|
// Build SVG
|
|
23
45
|
let svg = this.createHeader(paperSize, backgroundColor);
|
|
24
46
|
svg += this.createDefs(drawing, scale.factor);
|
|
@@ -55,7 +77,7 @@ export class SVGExporter {
|
|
|
55
77
|
}
|
|
56
78
|
// Title block
|
|
57
79
|
if (showTitleBlock) {
|
|
58
|
-
svg += this.createTitleBlock(paperSize, title, projectName,
|
|
80
|
+
svg += this.createTitleBlock(paperSize, title, projectName, scaleLabel(scale, transform));
|
|
59
81
|
}
|
|
60
82
|
svg += '</svg>';
|
|
61
83
|
return svg;
|
|
@@ -65,7 +87,7 @@ export class SVGExporter {
|
|
|
65
87
|
*/
|
|
66
88
|
exportPolygons(polygons, bounds, options = {}) {
|
|
67
89
|
const { paperSize = PAPER_SIZES.A3_LANDSCAPE, scale = COMMON_SCALES[5], padding = 20, backgroundColor = '#FFFFFF', } = options;
|
|
68
|
-
const transform =
|
|
90
|
+
const transform = computeTransform(bounds, paperSize, scale, padding);
|
|
69
91
|
let svg = this.createHeader(paperSize, backgroundColor);
|
|
70
92
|
svg += this.createPolygonDefs(scale.factor);
|
|
71
93
|
svg += this.createHatchingLayer(polygons, transform, scale.factor);
|
|
@@ -75,80 +97,6 @@ export class SVGExporter {
|
|
|
75
97
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
76
98
|
// PRIVATE METHODS
|
|
77
99
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
78
|
-
computeTransform(bounds, paperSize, scale, padding) {
|
|
79
|
-
const size = boundsSize(bounds);
|
|
80
|
-
const center = boundsCenter(bounds);
|
|
81
|
-
// `padding` is a minimum-margin guarantee: it must never consume the
|
|
82
|
-
// whole sheet. An impossible padding (padding*2 >= a paper dimension)
|
|
83
|
-
// used to disable the clamp entirely on that axis, silently falling
|
|
84
|
-
// back to rendering at the full requested scale with no margin at all
|
|
85
|
-
// — the exact failure mode this feature exists to remove, just
|
|
86
|
-
// triggered by an oversized padding instead of an absent one. Clamp
|
|
87
|
-
// `padding` itself to the largest value the shorter paper dimension can
|
|
88
|
-
// still hold (leaving a minimum sliver of usable area) and warn, so the
|
|
89
|
-
// guarantee keeps holding instead of silently lapsing.
|
|
90
|
-
const MIN_AVAILABLE_MM = 1;
|
|
91
|
-
const maxPadding = (Math.min(paperSize.width, paperSize.height) - MIN_AVAILABLE_MM) / 2;
|
|
92
|
-
let effectivePadding = padding;
|
|
93
|
-
if (padding > maxPadding) {
|
|
94
|
-
effectivePadding = Math.max(0, maxPadding);
|
|
95
|
-
// eslint-disable-next-line no-console -- deliberate: caller-visible, not a silent fallback
|
|
96
|
-
console.warn(`[drawing-2d] SVGExportOptions.padding (${padding}mm) leaves no usable area on a ` +
|
|
97
|
-
`${paperSize.width}x${paperSize.height}mm sheet; clamped to ${effectivePadding.toFixed(2)}mm.`);
|
|
98
|
-
}
|
|
99
|
-
// Available drawing area after the (possibly clamped) padding margin
|
|
100
|
-
const availableWidth = paperSize.width - effectivePadding * 2;
|
|
101
|
-
const availableHeight = paperSize.height - effectivePadding * 2;
|
|
102
|
-
// Scale: world units to mm on paper, at the caller's requested scale
|
|
103
|
-
const requestedWorldToMm = 1000 / scale.factor; // mm per world unit (assuming world is in meters)
|
|
104
|
-
// `padding` is a minimum-margin guarantee, not a forced re-fit: never
|
|
105
|
-
// render closer to the paper edge than `padding` mm. If the drawing at
|
|
106
|
-
// the requested scale already leaves at least that much margin, the
|
|
107
|
-
// exact requested scale is kept unchanged. Otherwise the effective
|
|
108
|
-
// scale is shrunk (never enlarged) just enough to respect the margin.
|
|
109
|
-
let worldToMm = requestedWorldToMm;
|
|
110
|
-
if (size.x > 0 && availableWidth > 0) {
|
|
111
|
-
worldToMm = Math.min(worldToMm, availableWidth / size.x);
|
|
112
|
-
}
|
|
113
|
-
if (size.y > 0 && availableHeight > 0) {
|
|
114
|
-
worldToMm = Math.min(worldToMm, availableHeight / size.y);
|
|
115
|
-
}
|
|
116
|
-
// Center the drawing
|
|
117
|
-
const offsetX = paperSize.width / 2 - center.x * worldToMm;
|
|
118
|
-
const offsetY = paperSize.height / 2 + center.y * worldToMm; // Flip Y
|
|
119
|
-
return {
|
|
120
|
-
scale: worldToMm,
|
|
121
|
-
offsetX,
|
|
122
|
-
offsetY,
|
|
123
|
-
flipY: true,
|
|
124
|
-
clamped: worldToMm !== requestedWorldToMm,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Label printed in the title block's "Scale:" line.
|
|
129
|
-
*
|
|
130
|
-
* When the drawing was not clamped, the exact requested `scale.name` is
|
|
131
|
-
* returned unchanged (no floating-point round-trip on the common path, so
|
|
132
|
-
* "1:100" never regresses to something like "1:100.0000001"). When the
|
|
133
|
-
* effective scale was shrunk to honour the padding guarantee, the label is
|
|
134
|
-
* re-derived from the *actual* `worldToMm` so a clamped sheet never claims
|
|
135
|
-
* the scale it was requested at but did not render at (PR #2131 review).
|
|
136
|
-
*/
|
|
137
|
-
scaleLabel(scale, transform) {
|
|
138
|
-
if (!transform.clamped) {
|
|
139
|
-
return scale.name;
|
|
140
|
-
}
|
|
141
|
-
const effectiveFactor = 1000 / transform.scale;
|
|
142
|
-
return `1:${formatScaleFactorLabel(effectiveFactor)}`;
|
|
143
|
-
}
|
|
144
|
-
transformPoint(point, transform) {
|
|
145
|
-
return {
|
|
146
|
-
x: point.x * transform.scale + transform.offsetX,
|
|
147
|
-
y: transform.flipY
|
|
148
|
-
? -point.y * transform.scale + transform.offsetY
|
|
149
|
-
: point.y * transform.scale + transform.offsetY,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
100
|
createHeader(paperSize, backgroundColor) {
|
|
153
101
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
154
102
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
@@ -214,10 +162,10 @@ export class SVGExporter {
|
|
|
214
162
|
}
|
|
215
163
|
renderLine(line, transform) {
|
|
216
164
|
const style = getLineStyle(line.category, line.ifcType);
|
|
217
|
-
const p0 =
|
|
218
|
-
const p1 =
|
|
165
|
+
const p0 = transformPoint(line.line.start, transform);
|
|
166
|
+
const p1 = transformPoint(line.line.end, transform);
|
|
219
167
|
const dashArray = style.dashPattern.length > 0 ? ` stroke-dasharray="${style.dashPattern.join(' ')}"` : '';
|
|
220
|
-
return ` <line x1="${p0.x
|
|
168
|
+
return ` <line x1="${svgNum(p0.x)}" y1="${svgNum(p0.y)}" x2="${svgNum(p1.x)}" y2="${svgNum(p1.y)}"
|
|
221
169
|
stroke="${style.color}" stroke-width="${style.weight}"
|
|
222
170
|
stroke-linecap="${style.lineCap}"${dashArray}
|
|
223
171
|
data-entity-id="${line.entityId}" data-ifc-type="${this.escapeXml(line.ifcType)}"/>\n`;
|
|
@@ -265,22 +213,22 @@ export class SVGExporter {
|
|
|
265
213
|
let path = '';
|
|
266
214
|
// Outer boundary
|
|
267
215
|
if (polygon.outer.length > 0) {
|
|
268
|
-
const first =
|
|
269
|
-
path += `M ${first.x
|
|
216
|
+
const first = transformPoint(polygon.outer[0], transform);
|
|
217
|
+
path += `M ${svgNum(first.x)} ${svgNum(first.y)}`;
|
|
270
218
|
for (let i = 1; i < polygon.outer.length; i++) {
|
|
271
|
-
const p =
|
|
272
|
-
path += ` L ${p.x
|
|
219
|
+
const p = transformPoint(polygon.outer[i], transform);
|
|
220
|
+
path += ` L ${svgNum(p.x)} ${svgNum(p.y)}`;
|
|
273
221
|
}
|
|
274
222
|
path += ' Z';
|
|
275
223
|
}
|
|
276
224
|
// Holes
|
|
277
225
|
for (const hole of polygon.holes) {
|
|
278
226
|
if (hole.length > 0) {
|
|
279
|
-
const first =
|
|
280
|
-
path += ` M ${first.x
|
|
227
|
+
const first = transformPoint(hole[0], transform);
|
|
228
|
+
path += ` M ${svgNum(first.x)} ${svgNum(first.y)}`;
|
|
281
229
|
for (let i = 1; i < hole.length; i++) {
|
|
282
|
-
const p =
|
|
283
|
-
path += ` L ${p.x
|
|
230
|
+
const p = transformPoint(hole[i], transform);
|
|
231
|
+
path += ` L ${svgNum(p.x)} ${svgNum(p.y)}`;
|
|
284
232
|
}
|
|
285
233
|
path += ' Z';
|
|
286
234
|
}
|
|
@@ -288,12 +236,15 @@ export class SVGExporter {
|
|
|
288
236
|
return path;
|
|
289
237
|
}
|
|
290
238
|
renderHatchLine(hatchLine, transform, pattern) {
|
|
291
|
-
const p0 =
|
|
292
|
-
const p1 =
|
|
293
|
-
return ` <line x1="${p0.x
|
|
239
|
+
const p0 = transformPoint(hatchLine.line.start, transform);
|
|
240
|
+
const p1 = transformPoint(hatchLine.line.end, transform);
|
|
241
|
+
return ` <line x1="${svgNum(p0.x)}" y1="${svgNum(p0.y)}" x2="${svgNum(p1.x)}" y2="${svgNum(p1.y)}"
|
|
294
242
|
stroke="${pattern.strokeColor}" stroke-width="${pattern.lineWeight}" stroke-linecap="butt"/>\n`;
|
|
295
243
|
}
|
|
296
|
-
createTitleBlock(paperSize, title, projectName,
|
|
244
|
+
createTitleBlock(paperSize, title, projectName,
|
|
245
|
+
// Not `scaleLabel`: that name now belongs to the imported function from
|
|
246
|
+
// ./svg-transform.js, and shadowing it here would read as a call site.
|
|
247
|
+
scaleText) {
|
|
297
248
|
const blockWidth = 180;
|
|
298
249
|
const blockHeight = 50;
|
|
299
250
|
const x = paperSize.width - blockWidth - 10;
|
|
@@ -306,7 +257,7 @@ export class SVGExporter {
|
|
|
306
257
|
<line x1="${x + 100}" y1="${y + 20}" x2="${x + 100}" y2="${y + blockHeight}" stroke="black" stroke-width="0.3"/>
|
|
307
258
|
<text x="${x + 5}" y="${y + 14}" font-family="Arial" font-size="10" font-weight="bold">${this.escapeXml(title)}</text>
|
|
308
259
|
<text x="${x + 5}" y="${y + 30}" font-family="Arial" font-size="8">${this.escapeXml(projectName)}</text>
|
|
309
|
-
<text x="${x + 5}" y="${y + 45}" font-family="Arial" font-size="8">Scale: ${this.escapeXml(
|
|
260
|
+
<text x="${x + 5}" y="${y + 45}" font-family="Arial" font-size="8">Scale: ${this.escapeXml(scaleText)}</text>
|
|
310
261
|
<text x="${x + 105}" y="${y + 30}" font-family="Arial" font-size="7">Date:</text>
|
|
311
262
|
<text x="${x + 105}" y="${y + 45}" font-family="Arial" font-size="7">${new Date().toLocaleDateString()}</text>
|
|
312
263
|
</g>\n`;
|
|
@@ -322,7 +273,7 @@ export class SVGExporter {
|
|
|
322
273
|
*/
|
|
323
274
|
createUnderlayLayer(options, transform) {
|
|
324
275
|
const { underlay, placement = DEFAULT_DXF_PLACEMENT, layerVisibility = {}, opacity = 1 } = options;
|
|
325
|
-
const mapPoint = (p) =>
|
|
276
|
+
const mapPoint = (p) => transformPoint(applyDxfPlacement({ x: p.x, y: -p.y }, placement), transform);
|
|
326
277
|
const groupId = `dxf-${underlay.name.replace(/[^A-Za-z0-9_-]/g, '_')}`;
|
|
327
278
|
let layer = ` <g id="${this.escapeXml(groupId)}" inkscape:label="${this.escapeXml(underlay.name)}" inkscape:groupmode="layer" opacity="${opacity}">\n`;
|
|
328
279
|
for (const dxfLayer of underlay.layers) {
|
|
@@ -337,10 +288,10 @@ export class SVGExporter {
|
|
|
337
288
|
if (ring.length === 0)
|
|
338
289
|
continue;
|
|
339
290
|
const first = mapPoint(ring[0]);
|
|
340
|
-
d += `${d ? ' ' : ''}M ${first.x
|
|
291
|
+
d += `${d ? ' ' : ''}M ${svgNum(first.x)} ${svgNum(first.y)}`;
|
|
341
292
|
for (let i = 1; i < ring.length; i++) {
|
|
342
293
|
const p = mapPoint(ring[i]);
|
|
343
|
-
d += ` L ${p.x
|
|
294
|
+
d += ` L ${svgNum(p.x)} ${svgNum(p.y)}`;
|
|
344
295
|
}
|
|
345
296
|
d += ' Z';
|
|
346
297
|
}
|
|
@@ -352,11 +303,11 @@ export class SVGExporter {
|
|
|
352
303
|
if (path.points.length < 2)
|
|
353
304
|
continue;
|
|
354
305
|
const pts = path.points.map(mapPoint);
|
|
355
|
-
const pointsAttr = pts.map((p) => `${p.x
|
|
306
|
+
const pointsAttr = pts.map((p) => `${svgNum(p.x)},${svgNum(p.y)}`).join(' ');
|
|
356
307
|
const tag = path.closed ? 'polygon' : 'polyline';
|
|
357
308
|
const strokeWidth = path.widthMm ?? 0.18;
|
|
358
|
-
const dash = path.dashed ? ` stroke-dasharray="${(strokeWidth * 6)
|
|
359
|
-
layer += ` <${tag} points="${pointsAttr}" fill="none" stroke="${path.color ?? dxfLayer.color}" stroke-width="${strokeWidth}" stroke-linecap="round"${dash}/>\n`;
|
|
309
|
+
const dash = path.dashed ? ` stroke-dasharray="${svgNum(strokeWidth * 6)} ${svgNum(strokeWidth * 4)}"` : '';
|
|
310
|
+
layer += ` <${tag} points="${pointsAttr}" fill="none" stroke="${path.color ?? dxfLayer.color}" stroke-width="${svgNum(strokeWidth)}" stroke-linecap="round"${dash}/>\n`;
|
|
360
311
|
}
|
|
361
312
|
for (const text of dxfLayer.texts) {
|
|
362
313
|
if (!text.text.trim())
|
|
@@ -375,9 +326,9 @@ export class SVGExporter {
|
|
|
375
326
|
// Multiline MTEXT stacks with tspans, matching the canvas layout.
|
|
376
327
|
const lines = text.text.split('\n');
|
|
377
328
|
const content = lines
|
|
378
|
-
.map((line, i) => `<tspan x="${anchor.x
|
|
329
|
+
.map((line, i) => `<tspan x="${svgNum(anchor.x)}" dy="${i === 0 ? 0 : svgNum(heightMm * 1.3)}">${this.escapeXml(line)}</tspan>`)
|
|
379
330
|
.join('');
|
|
380
|
-
layer += ` <text x="${anchor.x
|
|
331
|
+
layer += ` <text x="${svgNum(anchor.x)}" y="${svgNum(anchor.y)}" font-family="Arial, sans-serif" font-size="${svgNum(heightMm)}" fill="${text.color ?? dxfLayer.color}" text-anchor="${anchorAttr}" dominant-baseline="${baseline}" transform="rotate(${svgNum(angle, 2)} ${svgNum(anchor.x)} ${svgNum(anchor.y)})">${content}</text>\n`;
|
|
381
332
|
}
|
|
382
333
|
layer += ' </g>\n';
|
|
383
334
|
}
|
package/dist/svg-exporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-exporter.js","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svg-exporter.js","sourceRoot":"","sources":["../src/svg-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World-to-paper transform for the SVG exporter.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `svg-exporter.ts` unchanged: fitting a drawing's world bounds
|
|
5
|
+
* onto a sheet (and reporting the scale that was actually used) is one
|
|
6
|
+
* cohesive job, separable from turning the fitted geometry into SVG markup.
|
|
7
|
+
* None of these were ever methods in any meaningful sense — they read no
|
|
8
|
+
* `this` — so they are plain functions here.
|
|
9
|
+
*/
|
|
10
|
+
import type { Point2D, Bounds2D } from './types.js';
|
|
11
|
+
import type { PaperSize, DrawingScale } from './styles.js';
|
|
12
|
+
export interface Transform2D {
|
|
13
|
+
scale: number;
|
|
14
|
+
offsetX: number;
|
|
15
|
+
offsetY: number;
|
|
16
|
+
flipY: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* True when `scale` (worldToMm) was shrunk below the caller's requested
|
|
19
|
+
* scale to honour the padding guarantee. Drives the title block's
|
|
20
|
+
* "Scale:" label: a clamped export must never print the requested name
|
|
21
|
+
* unchanged (that would be a confidently wrong document — see PR #2131
|
|
22
|
+
* review), so the label is re-derived from the effective scale instead.
|
|
23
|
+
*/
|
|
24
|
+
clamped: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Non-finite → 0, so one bad corner of a bounding box can't move the rest. */
|
|
27
|
+
export declare function finiteOr0(n: number): number;
|
|
28
|
+
export declare function computeTransform(bounds: Bounds2D, paperSize: PaperSize, scale: DrawingScale, padding: number): Transform2D;
|
|
29
|
+
/**
|
|
30
|
+
* Label printed in the title block's "Scale:" line.
|
|
31
|
+
*
|
|
32
|
+
* When the drawing was not clamped, the exact requested `scale.name` is
|
|
33
|
+
* returned unchanged (no floating-point round-trip on the common path, so
|
|
34
|
+
* "1:100" never regresses to something like "1:100.0000001"). When the
|
|
35
|
+
* effective scale was shrunk to honour the padding guarantee, the label is
|
|
36
|
+
* re-derived from the *actual* `worldToMm` so a clamped sheet never claims
|
|
37
|
+
* the scale it was requested at but did not render at (PR #2131 review).
|
|
38
|
+
*/
|
|
39
|
+
export declare function scaleLabel(scale: DrawingScale, transform: Transform2D): string;
|
|
40
|
+
export declare function transformPoint(point: Point2D, transform: Transform2D): Point2D;
|
|
41
|
+
//# sourceMappingURL=svg-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-transform.d.ts","sourceRoot":"","sources":["../src/svg-transform.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,GACd,WAAW,CAmEb;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO,CAO9E"}
|
|
@@ -0,0 +1,95 @@
|
|
|
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 { boundsSize, boundsCenter } from './math.js';
|
|
5
|
+
import { formatScaleFactorLabel } from './pdf-scale.js';
|
|
6
|
+
/** Non-finite → 0, so one bad corner of a bounding box can't move the rest. */
|
|
7
|
+
export function finiteOr0(n) {
|
|
8
|
+
return Number.isFinite(n) ? n : 0;
|
|
9
|
+
}
|
|
10
|
+
export function computeTransform(bounds, paperSize, scale, padding) {
|
|
11
|
+
// Sanitise the bounds before anything is derived from them. `boundsSize`
|
|
12
|
+
// and `boundsCenter` are plain min/max arithmetic, so ONE non-finite
|
|
13
|
+
// corner propagates into `center`, from there into `offsetX`/`offsetY`,
|
|
14
|
+
// and from there into every coordinate in the document — a single bad
|
|
15
|
+
// bound moved a perfectly finite line to `x1="NaN"`. Dropping the bad
|
|
16
|
+
// component to 0 contains the damage to the geometry that was actually
|
|
17
|
+
// degenerate; `svgNum` is the second line of defence, not the first.
|
|
18
|
+
const safeBounds = {
|
|
19
|
+
min: { x: finiteOr0(bounds.min.x), y: finiteOr0(bounds.min.y) },
|
|
20
|
+
max: { x: finiteOr0(bounds.max.x), y: finiteOr0(bounds.max.y) },
|
|
21
|
+
};
|
|
22
|
+
const size = boundsSize(safeBounds);
|
|
23
|
+
const center = boundsCenter(safeBounds);
|
|
24
|
+
// `padding` is a minimum-margin guarantee: it must never consume the
|
|
25
|
+
// whole sheet. An impossible padding (padding*2 >= a paper dimension)
|
|
26
|
+
// used to disable the clamp entirely on that axis, silently falling
|
|
27
|
+
// back to rendering at the full requested scale with no margin at all
|
|
28
|
+
// — the exact failure mode this feature exists to remove, just
|
|
29
|
+
// triggered by an oversized padding instead of an absent one. Clamp
|
|
30
|
+
// `padding` itself to the largest value the shorter paper dimension can
|
|
31
|
+
// still hold (leaving a minimum sliver of usable area) and warn, so the
|
|
32
|
+
// guarantee keeps holding instead of silently lapsing.
|
|
33
|
+
const MIN_AVAILABLE_MM = 1;
|
|
34
|
+
const maxPadding = (Math.min(paperSize.width, paperSize.height) - MIN_AVAILABLE_MM) / 2;
|
|
35
|
+
let effectivePadding = padding;
|
|
36
|
+
if (padding > maxPadding) {
|
|
37
|
+
effectivePadding = Math.max(0, maxPadding);
|
|
38
|
+
// eslint-disable-next-line no-console -- deliberate: caller-visible, not a silent fallback
|
|
39
|
+
console.warn(`[drawing-2d] SVGExportOptions.padding (${padding}mm) leaves no usable area on a ` +
|
|
40
|
+
`${paperSize.width}x${paperSize.height}mm sheet; clamped to ${effectivePadding.toFixed(2)}mm.`);
|
|
41
|
+
}
|
|
42
|
+
// Available drawing area after the (possibly clamped) padding margin
|
|
43
|
+
const availableWidth = paperSize.width - effectivePadding * 2;
|
|
44
|
+
const availableHeight = paperSize.height - effectivePadding * 2;
|
|
45
|
+
// Scale: world units to mm on paper, at the caller's requested scale
|
|
46
|
+
const requestedWorldToMm = 1000 / scale.factor; // mm per world unit (assuming world is in meters)
|
|
47
|
+
// `padding` is a minimum-margin guarantee, not a forced re-fit: never
|
|
48
|
+
// render closer to the paper edge than `padding` mm. If the drawing at
|
|
49
|
+
// the requested scale already leaves at least that much margin, the
|
|
50
|
+
// exact requested scale is kept unchanged. Otherwise the effective
|
|
51
|
+
// scale is shrunk (never enlarged) just enough to respect the margin.
|
|
52
|
+
let worldToMm = requestedWorldToMm;
|
|
53
|
+
if (size.x > 0 && availableWidth > 0) {
|
|
54
|
+
worldToMm = Math.min(worldToMm, availableWidth / size.x);
|
|
55
|
+
}
|
|
56
|
+
if (size.y > 0 && availableHeight > 0) {
|
|
57
|
+
worldToMm = Math.min(worldToMm, availableHeight / size.y);
|
|
58
|
+
}
|
|
59
|
+
// Center the drawing
|
|
60
|
+
const offsetX = paperSize.width / 2 - center.x * worldToMm;
|
|
61
|
+
const offsetY = paperSize.height / 2 + center.y * worldToMm; // Flip Y
|
|
62
|
+
return {
|
|
63
|
+
scale: worldToMm,
|
|
64
|
+
offsetX,
|
|
65
|
+
offsetY,
|
|
66
|
+
flipY: true,
|
|
67
|
+
clamped: worldToMm !== requestedWorldToMm,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Label printed in the title block's "Scale:" line.
|
|
72
|
+
*
|
|
73
|
+
* When the drawing was not clamped, the exact requested `scale.name` is
|
|
74
|
+
* returned unchanged (no floating-point round-trip on the common path, so
|
|
75
|
+
* "1:100" never regresses to something like "1:100.0000001"). When the
|
|
76
|
+
* effective scale was shrunk to honour the padding guarantee, the label is
|
|
77
|
+
* re-derived from the *actual* `worldToMm` so a clamped sheet never claims
|
|
78
|
+
* the scale it was requested at but did not render at (PR #2131 review).
|
|
79
|
+
*/
|
|
80
|
+
export function scaleLabel(scale, transform) {
|
|
81
|
+
if (!transform.clamped) {
|
|
82
|
+
return scale.name;
|
|
83
|
+
}
|
|
84
|
+
const effectiveFactor = 1000 / transform.scale;
|
|
85
|
+
return `1:${formatScaleFactorLabel(effectiveFactor)}`;
|
|
86
|
+
}
|
|
87
|
+
export function transformPoint(point, transform) {
|
|
88
|
+
return {
|
|
89
|
+
x: point.x * transform.scale + transform.offsetX,
|
|
90
|
+
y: transform.flipY
|
|
91
|
+
? -point.y * transform.scale + transform.offsetY
|
|
92
|
+
: point.y * transform.scale + transform.offsetY,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=svg-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-transform.js","sourceRoot":"","sources":["../src/svg-transform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/drawing-2d",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "2D architectural drawing generation from IFC models - section cuts, floor plans, and elevations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/geometry": "^4.
|
|
16
|
+
"@ifc-lite/geometry": "^4.1.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@webgpu/types": "^0.1.
|
|
19
|
+
"@webgpu/types": "^0.1.72",
|
|
20
20
|
"dxf-parser": "1.1.2",
|
|
21
21
|
"typescript": "^6.0.3",
|
|
22
|
-
"vitest": "^4.1.
|
|
22
|
+
"vitest": "^4.1.11",
|
|
23
|
+
"@ifc-lite/data": "^3.5.1"
|
|
23
24
|
},
|
|
24
25
|
"license": "MPL-2.0",
|
|
25
26
|
"author": "Louis True",
|