@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.
@@ -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;AAyWpB,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
+ {"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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"}
@@ -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;AAIrB,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;AAqBD,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,gBAAgB;IA+DxB;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,cAAc;IAStB,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;IAyBxB;;;;;;;;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"}
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"}
@@ -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 { boundsSize, boundsCenter } from './math.js';
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 = this.computeTransform(drawing.bounds, paperSize, scale, padding);
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, this.scaleLabel(scale, transform));
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 = this.computeTransform(bounds, paperSize, scale, padding);
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 = this.transformPoint(line.line.start, transform);
218
- const p1 = this.transformPoint(line.line.end, transform);
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.toFixed(3)}" y1="${p0.y.toFixed(3)}" x2="${p1.x.toFixed(3)}" y2="${p1.y.toFixed(3)}"
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 = this.transformPoint(polygon.outer[0], transform);
269
- path += `M ${first.x.toFixed(3)} ${first.y.toFixed(3)}`;
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 = this.transformPoint(polygon.outer[i], transform);
272
- path += ` L ${p.x.toFixed(3)} ${p.y.toFixed(3)}`;
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 = this.transformPoint(hole[0], transform);
280
- path += ` M ${first.x.toFixed(3)} ${first.y.toFixed(3)}`;
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 = this.transformPoint(hole[i], transform);
283
- path += ` L ${p.x.toFixed(3)} ${p.y.toFixed(3)}`;
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 = this.transformPoint(hatchLine.line.start, transform);
292
- const p1 = this.transformPoint(hatchLine.line.end, transform);
293
- return ` <line x1="${p0.x.toFixed(3)}" y1="${p0.y.toFixed(3)}" x2="${p1.x.toFixed(3)}" y2="${p1.y.toFixed(3)}"
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, scaleLabel) {
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(scaleLabel)}</text>
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) => this.transformPoint(applyDxfPlacement({ x: p.x, y: -p.y }, placement), transform);
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.toFixed(3)} ${first.y.toFixed(3)}`;
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.toFixed(3)} ${p.y.toFixed(3)}`;
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.toFixed(3)},${p.y.toFixed(3)}`).join(' ');
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).toFixed(3)} ${(strokeWidth * 4).toFixed(3)}"` : '';
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.toFixed(3)}" dy="${i === 0 ? 0 : (heightMm * 1.3).toFixed(3)}">${this.escapeXml(line)}</tspan>`)
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.toFixed(3)}" y="${anchor.y.toFixed(3)}" font-family="Arial, sans-serif" font-size="${heightMm.toFixed(3)}" fill="${text.color ?? dxfLayer.color}" text-anchor="${anchorAttr}" dominant-baseline="${baseline}" transform="rotate(${angle.toFixed(2)} ${anchor.x.toFixed(3)} ${anchor.y.toFixed(3)})">${content}</text>\n`;
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
  }
@@ -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.0.0",
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.0.0"
16
+ "@ifc-lite/geometry": "^4.1.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@webgpu/types": "^0.1.71",
19
+ "@webgpu/types": "^0.1.72",
20
20
  "dxf-parser": "1.1.2",
21
21
  "typescript": "^6.0.3",
22
- "vitest": "^4.1.10"
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",