@ifc-lite/drawing-2d 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -4
- package/dist/dxf/encoding.d.ts +14 -0
- package/dist/dxf/encoding.d.ts.map +1 -0
- package/dist/dxf/encoding.js +84 -0
- package/dist/dxf/encoding.js.map +1 -0
- package/dist/dxf/writer.js +2 -2
- package/dist/dxf/writer.js.map +1 -1
- package/dist/dxf-exporter.d.ts.map +1 -1
- package/dist/dxf-exporter.js +17 -3
- package/dist/dxf-exporter.js.map +1 -1
- package/dist/feature-elements.d.ts.map +1 -1
- package/dist/feature-elements.js +10 -3
- package/dist/feature-elements.js.map +1 -1
- package/dist/graphic-overrides/rule-engine.d.ts.map +1 -1
- package/dist/graphic-overrides/rule-engine.js +0 -12
- package/dist/graphic-overrides/rule-engine.js.map +1 -1
- package/dist/graphic-overrides/types.d.ts +1 -9
- package/dist/graphic-overrides/types.d.ts.map +1 -1
- package/dist/hatch-generator.d.ts +0 -9
- package/dist/hatch-generator.d.ts.map +1 -1
- package/dist/hatch-generator.js +87 -103
- package/dist/hatch-generator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/openings/opening-relationship-builder.d.ts +1 -0
- package/dist/openings/opening-relationship-builder.d.ts.map +1 -1
- package/dist/openings/opening-relationship-builder.js +17 -0
- package/dist/openings/opening-relationship-builder.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 +55 -104
- 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 -5
package/dist/svg-exporter.js
CHANGED
|
@@ -3,22 +3,44 @@
|
|
|
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. `NaN`/`Infinity` stringify
|
|
14
|
+
* verbatim through `toFixed`, which a conforming renderer must reject, so
|
|
15
|
+
* every coordinate/size/rotation routes through here (mirrors the DXF
|
|
16
|
+
* writer's single `fmt()`). Non-finite becomes `0`: the document stays
|
|
17
|
+
* parseable and the degenerate geometry collapses at the visible origin.
|
|
18
|
+
*/
|
|
19
|
+
function svgNum(n, digits = 3) {
|
|
20
|
+
if (!Number.isFinite(n))
|
|
21
|
+
return '0';
|
|
22
|
+
return n.toFixed(digits);
|
|
23
|
+
}
|
|
24
|
+
/** `drawing.config.scale` is any positive number, not just the ten
|
|
25
|
+
* {@link COMMON_SCALES} presets; a `.find()` miss (a custom scale) must
|
|
26
|
+
* build a synthetic `DrawingScale`, not fall to the same 1:50 as "absent". */
|
|
27
|
+
function resolveDrawingScale(configScale) {
|
|
28
|
+
const common = COMMON_SCALES.find((s) => s.factor === configScale);
|
|
29
|
+
if (common)
|
|
30
|
+
return common;
|
|
31
|
+
return Number.isFinite(configScale) && configScale > 0
|
|
32
|
+
? { name: `1:${configScale}`, factor: configScale, useCase: 'Custom scale' }
|
|
33
|
+
: COMMON_SCALES[5];
|
|
34
|
+
}
|
|
13
35
|
export class SVGExporter {
|
|
14
36
|
hatchGenerator = new HatchGenerator();
|
|
15
37
|
/**
|
|
16
38
|
* Export a 2D drawing to SVG string
|
|
17
39
|
*/
|
|
18
40
|
export(drawing, options = {}) {
|
|
19
|
-
const { paperSize = PAPER_SIZES.A3_LANDSCAPE, scale =
|
|
41
|
+
const { paperSize = PAPER_SIZES.A3_LANDSCAPE, scale = resolveDrawingScale(drawing.config.scale), 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
|
+
"version": "4.0.0",
|
|
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,14 +13,14 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/geometry": "^4.
|
|
16
|
+
"@ifc-lite/geometry": "^4.2.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.
|
|
23
|
-
"@ifc-lite/data": "^
|
|
22
|
+
"vitest": "^4.1.11",
|
|
23
|
+
"@ifc-lite/data": "^4.0.0"
|
|
24
24
|
},
|
|
25
25
|
"license": "MPL-2.0",
|
|
26
26
|
"author": "Louis True",
|