@ifc-lite/drawing-2d 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +373 -0
- package/dist/drawing-generator.d.ts +80 -0
- package/dist/drawing-generator.d.ts.map +1 -0
- package/dist/drawing-generator.js +281 -0
- package/dist/drawing-generator.js.map +1 -0
- package/dist/edge-extractor.d.ts +47 -0
- package/dist/edge-extractor.d.ts.map +1 -0
- package/dist/edge-extractor.js +204 -0
- package/dist/edge-extractor.js.map +1 -0
- package/dist/gpu-section-cutter.d.ts +42 -0
- package/dist/gpu-section-cutter.d.ts.map +1 -0
- package/dist/gpu-section-cutter.js +405 -0
- package/dist/gpu-section-cutter.js.map +1 -0
- package/dist/graphic-overrides/index.d.ts +10 -0
- package/dist/graphic-overrides/index.d.ts.map +1 -0
- package/dist/graphic-overrides/index.js +8 -0
- package/dist/graphic-overrides/index.js.map +1 -0
- package/dist/graphic-overrides/presets.d.ts +22 -0
- package/dist/graphic-overrides/presets.d.ts.map +1 -0
- package/dist/graphic-overrides/presets.js +283 -0
- package/dist/graphic-overrides/presets.js.map +1 -0
- package/dist/graphic-overrides/rule-engine.d.ts +64 -0
- package/dist/graphic-overrides/rule-engine.d.ts.map +1 -0
- package/dist/graphic-overrides/rule-engine.js +438 -0
- package/dist/graphic-overrides/rule-engine.js.map +1 -0
- package/dist/graphic-overrides/types.d.ts +200 -0
- package/dist/graphic-overrides/types.d.ts.map +1 -0
- package/dist/graphic-overrides/types.js +5 -0
- package/dist/graphic-overrides/types.js.map +1 -0
- package/dist/hatch-generator.d.ts +76 -0
- package/dist/hatch-generator.d.ts.map +1 -0
- package/dist/hatch-generator.js +282 -0
- package/dist/hatch-generator.js.map +1 -0
- package/dist/hidden-line.d.ts +64 -0
- package/dist/hidden-line.d.ts.map +1 -0
- package/dist/hidden-line.js +318 -0
- package/dist/hidden-line.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/line-merger.d.ts +35 -0
- package/dist/line-merger.d.ts.map +1 -0
- package/dist/line-merger.js +265 -0
- package/dist/line-merger.js.map +1 -0
- package/dist/math.d.ts +90 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +284 -0
- package/dist/math.js.map +1 -0
- package/dist/openings/index.d.ts +7 -0
- package/dist/openings/index.d.ts.map +1 -0
- package/dist/openings/index.js +10 -0
- package/dist/openings/index.js.map +1 -0
- package/dist/openings/opening-filter.d.ts +61 -0
- package/dist/openings/opening-filter.d.ts.map +1 -0
- package/dist/openings/opening-filter.js +244 -0
- package/dist/openings/opening-filter.js.map +1 -0
- package/dist/openings/opening-relationship-builder.d.ts +35 -0
- package/dist/openings/opening-relationship-builder.d.ts.map +1 -0
- package/dist/openings/opening-relationship-builder.js +121 -0
- package/dist/openings/opening-relationship-builder.js.map +1 -0
- package/dist/openings/opening-utils.d.ts +55 -0
- package/dist/openings/opening-utils.d.ts.map +1 -0
- package/dist/openings/opening-utils.js +128 -0
- package/dist/openings/opening-utils.js.map +1 -0
- package/dist/polygon-builder.d.ts +62 -0
- package/dist/polygon-builder.d.ts.map +1 -0
- package/dist/polygon-builder.js +261 -0
- package/dist/polygon-builder.js.map +1 -0
- package/dist/section-cutter.d.ts +49 -0
- package/dist/section-cutter.d.ts.map +1 -0
- package/dist/section-cutter.js +220 -0
- package/dist/section-cutter.js.map +1 -0
- package/dist/sheet/frame-renderer.d.ts +28 -0
- package/dist/sheet/frame-renderer.d.ts.map +1 -0
- package/dist/sheet/frame-renderer.js +199 -0
- package/dist/sheet/frame-renderer.js.map +1 -0
- package/dist/sheet/frame-types.d.ts +57 -0
- package/dist/sheet/frame-types.d.ts.map +1 -0
- package/dist/sheet/frame-types.js +88 -0
- package/dist/sheet/frame-types.js.map +1 -0
- package/dist/sheet/index.d.ts +26 -0
- package/dist/sheet/index.d.ts.map +1 -0
- package/dist/sheet/index.js +12 -0
- package/dist/sheet/index.js.map +1 -0
- package/dist/sheet/paper-sizes.d.ts +36 -0
- package/dist/sheet/paper-sizes.d.ts.map +1 -0
- package/dist/sheet/paper-sizes.js +252 -0
- package/dist/sheet/paper-sizes.js.map +1 -0
- package/dist/sheet/scale-bar-renderer.d.ts +29 -0
- package/dist/sheet/scale-bar-renderer.d.ts.map +1 -0
- package/dist/sheet/scale-bar-renderer.js +287 -0
- package/dist/sheet/scale-bar-renderer.js.map +1 -0
- package/dist/sheet/scale-bar-types.d.ts +82 -0
- package/dist/sheet/scale-bar-types.d.ts.map +1 -0
- package/dist/sheet/scale-bar-types.js +66 -0
- package/dist/sheet/scale-bar-types.js.map +1 -0
- package/dist/sheet/sheet-types.d.ts +84 -0
- package/dist/sheet/sheet-types.d.ts.map +1 -0
- package/dist/sheet/sheet-types.js +77 -0
- package/dist/sheet/sheet-types.js.map +1 -0
- package/dist/sheet/title-block-renderer.d.ts +44 -0
- package/dist/sheet/title-block-renderer.d.ts.map +1 -0
- package/dist/sheet/title-block-renderer.js +335 -0
- package/dist/sheet/title-block-renderer.js.map +1 -0
- package/dist/sheet/title-block-types.d.ts +100 -0
- package/dist/sheet/title-block-types.d.ts.map +1 -0
- package/dist/sheet/title-block-types.js +174 -0
- package/dist/sheet/title-block-types.js.map +1 -0
- package/dist/styles.d.ts +77 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +347 -0
- package/dist/styles.js.map +1 -0
- package/dist/styling/index.d.ts +7 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/index.js +10 -0
- package/dist/styling/index.js.map +1 -0
- package/dist/styling/layer-mapping.d.ts +57 -0
- package/dist/styling/layer-mapping.d.ts.map +1 -0
- package/dist/styling/layer-mapping.js +303 -0
- package/dist/styling/layer-mapping.js.map +1 -0
- package/dist/styling/line-styles.d.ts +49 -0
- package/dist/styling/line-styles.d.ts.map +1 -0
- package/dist/styling/line-styles.js +123 -0
- package/dist/styling/line-styles.js.map +1 -0
- package/dist/styling/line-weights.d.ts +61 -0
- package/dist/styling/line-weights.d.ts.map +1 -0
- package/dist/styling/line-weights.js +183 -0
- package/dist/styling/line-weights.js.map +1 -0
- package/dist/svg-exporter.d.ts +63 -0
- package/dist/svg-exporter.d.ts.map +1 -0
- package/dist/svg-exporter.js +278 -0
- package/dist/svg-exporter.js.map +1 -0
- package/dist/symbols/door-symbol.d.ts +82 -0
- package/dist/symbols/door-symbol.d.ts.map +1 -0
- package/dist/symbols/door-symbol.js +390 -0
- package/dist/symbols/door-symbol.js.map +1 -0
- package/dist/symbols/index.d.ts +8 -0
- package/dist/symbols/index.d.ts.map +1 -0
- package/dist/symbols/index.js +11 -0
- package/dist/symbols/index.js.map +1 -0
- package/dist/symbols/symbol-renderer.d.ts +29 -0
- package/dist/symbols/symbol-renderer.d.ts.map +1 -0
- package/dist/symbols/symbol-renderer.js +173 -0
- package/dist/symbols/symbol-renderer.js.map +1 -0
- package/dist/symbols/symbol-utils.d.ts +48 -0
- package/dist/symbols/symbol-utils.d.ts.map +1 -0
- package/dist/symbols/symbol-utils.js +129 -0
- package/dist/symbols/symbol-utils.js.map +1 -0
- package/dist/symbols/window-symbol.d.ts +57 -0
- package/dist/symbols/window-symbol.d.ts.map +1 -0
- package/dist/symbols/window-symbol.js +209 -0
- package/dist/symbols/window-symbol.js.map +1 -0
- package/dist/types.d.ts +443 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-renderer.js","sourceRoot":"","sources":["../../src/symbols/symbol-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for architectural symbol generation
|
|
3
|
+
*/
|
|
4
|
+
import type { ArchitecturalSymbol, OpeningInfo, Point2D, Bounds2D, DoorOperationType, WindowPartitioningType } from '../types';
|
|
5
|
+
import { type DoorSymbolResult } from './door-symbol';
|
|
6
|
+
import { type WindowSymbolResult } from './window-symbol';
|
|
7
|
+
/**
|
|
8
|
+
* Generate a door symbol from opening info
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateDoorSymbol(opening: OpeningInfo, bounds2D: Bounds2D, wallDirection: Point2D): DoorSymbolResult;
|
|
11
|
+
/**
|
|
12
|
+
* Generate a door symbol at a specific position
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateDoorSymbolAt(center: Point2D, width: number, operation: DoorOperationType, wallDirection: Point2D, swingDirection: Point2D): DoorSymbolResult;
|
|
15
|
+
/**
|
|
16
|
+
* Generate a window symbol from opening info
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateWindowSymbol(opening: OpeningInfo, bounds2D: Bounds2D, wallDirection: Point2D, wallThickness?: number): WindowSymbolResult;
|
|
19
|
+
/**
|
|
20
|
+
* Generate a window symbol at a specific position
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateWindowSymbolAt(center: Point2D, width: number, wallDirection: Point2D, wallThickness: number, partitioning?: WindowPartitioningType): WindowSymbolResult;
|
|
23
|
+
/**
|
|
24
|
+
* Generate a stair arrow symbol
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateStairArrow(position: Point2D, direction: 'up' | 'down', length: number, rotation?: number, riserCount?: number): ArchitecturalSymbol;
|
|
27
|
+
/**
|
|
28
|
+
* Generate a north arrow symbol
|
|
29
|
+
*/
|
|
30
|
+
export declare function generateNorthArrow(position: Point2D, rotation?: number, scale?: number): ArchitecturalSymbol;
|
|
31
|
+
/**
|
|
32
|
+
* Generate a section mark symbol
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateSectionMark(position: Point2D, sectionId: string, viewDirection: 'left' | 'right' | 'both', scale?: number): ArchitecturalSymbol;
|
|
35
|
+
/**
|
|
36
|
+
* Generate a level mark symbol
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateLevelMark(position: Point2D, elevation: number, label: string, scale?: number): ArchitecturalSymbol;
|
|
39
|
+
/**
|
|
40
|
+
* Determine wall direction from opening bounds
|
|
41
|
+
* Returns normalized direction along the longer axis
|
|
42
|
+
*/
|
|
43
|
+
export declare function inferWallDirection(bounds2D: Bounds2D): Point2D;
|
|
44
|
+
/**
|
|
45
|
+
* Generate symbols for all openings
|
|
46
|
+
*/
|
|
47
|
+
export declare function generateOpeningSymbols(openings: OpeningInfo[], openingBounds2D: Map<number, Bounds2D>, wallDirections?: Map<number, Point2D>): ArchitecturalSymbol[];
|
|
48
|
+
//# sourceMappingURL=symbol-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-utils.d.ts","sourceRoot":"","sources":["../../src/symbols/symbol-utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEjF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,OAAO,GACrB,gBAAgB,CAGlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,OAAO,GACtB,gBAAgB,CAGlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,OAAO,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,kBAAkB,CAGpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,sBAAuC,GACpD,kBAAkB,CAIpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAU,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB,CAYrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EACjB,QAAQ,GAAE,MAAU,EACpB,KAAK,GAAE,MAAU,GAChB,mBAAmB,CAQrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EACxC,KAAK,GAAE,MAAU,GAChB,mBAAmB,CAWrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,GAChB,mBAAmB,CAWrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAS9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,EAAE,EACvB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,mBAAmB,EAAE,CAoBvB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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 { DoorSymbolGenerator } from './door-symbol';
|
|
5
|
+
import { WindowSymbolGenerator } from './window-symbol';
|
|
6
|
+
/**
|
|
7
|
+
* Generate a door symbol from opening info
|
|
8
|
+
*/
|
|
9
|
+
export function generateDoorSymbol(opening, bounds2D, wallDirection) {
|
|
10
|
+
const generator = new DoorSymbolGenerator();
|
|
11
|
+
return generator.generateFromOpening(opening, bounds2D, wallDirection);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a door symbol at a specific position
|
|
15
|
+
*/
|
|
16
|
+
export function generateDoorSymbolAt(center, width, operation, wallDirection, swingDirection) {
|
|
17
|
+
const generator = new DoorSymbolGenerator();
|
|
18
|
+
return generator.generateSymbol(center, width, operation, wallDirection, swingDirection);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate a window symbol from opening info
|
|
22
|
+
*/
|
|
23
|
+
export function generateWindowSymbol(opening, bounds2D, wallDirection, wallThickness) {
|
|
24
|
+
const generator = new WindowSymbolGenerator();
|
|
25
|
+
return generator.generateFromOpening(opening, bounds2D, wallDirection, wallThickness);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate a window symbol at a specific position
|
|
29
|
+
*/
|
|
30
|
+
export function generateWindowSymbolAt(center, width, wallDirection, wallThickness, partitioning = 'SINGLE_PANEL') {
|
|
31
|
+
const generator = new WindowSymbolGenerator();
|
|
32
|
+
const perpDirection = { x: -wallDirection.y, y: wallDirection.x };
|
|
33
|
+
return generator.generateSymbol(center, width, wallThickness, wallDirection, perpDirection, partitioning);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate a stair arrow symbol
|
|
37
|
+
*/
|
|
38
|
+
export function generateStairArrow(position, direction, length, rotation = 0, riserCount) {
|
|
39
|
+
return {
|
|
40
|
+
type: 'stair-arrow',
|
|
41
|
+
position,
|
|
42
|
+
rotation,
|
|
43
|
+
scale: 1,
|
|
44
|
+
parameters: {
|
|
45
|
+
direction,
|
|
46
|
+
length,
|
|
47
|
+
riserCount,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a north arrow symbol
|
|
53
|
+
*/
|
|
54
|
+
export function generateNorthArrow(position, rotation = 0, scale = 1) {
|
|
55
|
+
return {
|
|
56
|
+
type: 'north-arrow',
|
|
57
|
+
position,
|
|
58
|
+
rotation,
|
|
59
|
+
scale,
|
|
60
|
+
parameters: {},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate a section mark symbol
|
|
65
|
+
*/
|
|
66
|
+
export function generateSectionMark(position, sectionId, viewDirection, scale = 1) {
|
|
67
|
+
return {
|
|
68
|
+
type: 'section-mark',
|
|
69
|
+
position,
|
|
70
|
+
rotation: 0,
|
|
71
|
+
scale,
|
|
72
|
+
parameters: {
|
|
73
|
+
sectionId,
|
|
74
|
+
viewDirection,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate a level mark symbol
|
|
80
|
+
*/
|
|
81
|
+
export function generateLevelMark(position, elevation, label, scale = 1) {
|
|
82
|
+
return {
|
|
83
|
+
type: 'level-mark',
|
|
84
|
+
position,
|
|
85
|
+
rotation: 0,
|
|
86
|
+
scale,
|
|
87
|
+
parameters: {
|
|
88
|
+
elevation,
|
|
89
|
+
label,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Determine wall direction from opening bounds
|
|
95
|
+
* Returns normalized direction along the longer axis
|
|
96
|
+
*/
|
|
97
|
+
export function inferWallDirection(bounds2D) {
|
|
98
|
+
const width = bounds2D.max.x - bounds2D.min.x;
|
|
99
|
+
const height = bounds2D.max.y - bounds2D.min.y;
|
|
100
|
+
if (width > height) {
|
|
101
|
+
return { x: 1, y: 0 };
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return { x: 0, y: 1 };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Generate symbols for all openings
|
|
109
|
+
*/
|
|
110
|
+
export function generateOpeningSymbols(openings, openingBounds2D, wallDirections) {
|
|
111
|
+
const symbols = [];
|
|
112
|
+
for (const opening of openings) {
|
|
113
|
+
const bounds = openingBounds2D.get(opening.openingId);
|
|
114
|
+
if (!bounds)
|
|
115
|
+
continue;
|
|
116
|
+
const wallDir = wallDirections?.get(opening.hostElementId) ?? inferWallDirection(bounds);
|
|
117
|
+
if (opening.type === 'door') {
|
|
118
|
+
const result = generateDoorSymbol(opening, bounds, wallDir);
|
|
119
|
+
symbols.push(result.symbol);
|
|
120
|
+
}
|
|
121
|
+
else if (opening.type === 'window') {
|
|
122
|
+
const result = generateWindowSymbol(opening, bounds, wallDir);
|
|
123
|
+
symbols.push(result.symbol);
|
|
124
|
+
}
|
|
125
|
+
// Pure openings (no door/window) don't get symbols
|
|
126
|
+
}
|
|
127
|
+
return symbols;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=symbol-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-utils.js","sourceRoot":"","sources":["../../src/symbols/symbol-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window symbol generator for architectural floor plans
|
|
3
|
+
*
|
|
4
|
+
* Generates standard window symbols including:
|
|
5
|
+
* - Frame lines (parallel lines at opening edges)
|
|
6
|
+
* - Glass line (single line in center)
|
|
7
|
+
* - Mullions (for multi-pane windows)
|
|
8
|
+
*/
|
|
9
|
+
import type { ArchitecturalSymbol, OpeningInfo, Point2D, Line2D, WindowPartitioningType, Bounds2D } from '../types';
|
|
10
|
+
/**
|
|
11
|
+
* Result of window symbol generation
|
|
12
|
+
*/
|
|
13
|
+
export interface WindowSymbolResult {
|
|
14
|
+
/** The architectural symbol */
|
|
15
|
+
symbol: ArchitecturalSymbol;
|
|
16
|
+
/** Lines to draw (frame, glass, mullions) */
|
|
17
|
+
lines: Line2D[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Configuration for window symbol generation
|
|
21
|
+
*/
|
|
22
|
+
export interface WindowSymbolConfig {
|
|
23
|
+
/** Frame depth as fraction of wall thickness (default 0.1) */
|
|
24
|
+
frameDepthRatio: number;
|
|
25
|
+
/** Show glass line in center */
|
|
26
|
+
showGlassLine: boolean;
|
|
27
|
+
/** Show frame lines */
|
|
28
|
+
showFrameLines: boolean;
|
|
29
|
+
/** Wall thickness for frame offset calculation */
|
|
30
|
+
defaultWallThickness: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generates window symbols for 2D floor plans
|
|
34
|
+
*/
|
|
35
|
+
export declare class WindowSymbolGenerator {
|
|
36
|
+
private config;
|
|
37
|
+
constructor(config?: Partial<WindowSymbolConfig>);
|
|
38
|
+
/**
|
|
39
|
+
* Generate window symbol from opening info
|
|
40
|
+
*/
|
|
41
|
+
generateFromOpening(opening: OpeningInfo, bounds2D: Bounds2D, wallDirection: Point2D, wallThickness?: number): WindowSymbolResult;
|
|
42
|
+
/**
|
|
43
|
+
* Generate a window symbol at a specific position
|
|
44
|
+
*/
|
|
45
|
+
generateSymbol(center: Point2D, width: number, wallThickness: number, wallDirection: Point2D, perpDirection: Point2D, partitioning: WindowPartitioningType): WindowSymbolResult;
|
|
46
|
+
/**
|
|
47
|
+
* Generate mullion lines based on window partitioning
|
|
48
|
+
*/
|
|
49
|
+
private generateMullions;
|
|
50
|
+
private getMullionCount;
|
|
51
|
+
private getPerpendicularDirection;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate simple window lines (frame only, no symbol object)
|
|
55
|
+
*/
|
|
56
|
+
export declare function generateSimpleWindowLines(center: Point2D, width: number, wallDirection: Point2D, wallThickness?: number): Line2D[];
|
|
57
|
+
//# sourceMappingURL=window-symbol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window-symbol.d.ts","sourceRoot":"","sources":["../../src/symbols/window-symbol.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,WAAW,EACX,OAAO,EACP,MAAM,EACN,sBAAsB,EACtB,QAAQ,EACT,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,uBAAuB;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAIpD;;OAEG;IACH,mBAAmB,CACjB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,OAAO,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,kBAAkB;IAiBrB;;OAEG;IACH,cAAc,CACZ,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,sBAAsB,GACnC,kBAAkB;IA4FrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuExB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,yBAAyB;CAGlC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,aAAa,GAAE,MAAY,GAC1B,MAAM,EAAE,CAYV"}
|
|
@@ -0,0 +1,209 @@
|
|
|
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
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
frameDepthRatio: 0.1,
|
|
6
|
+
showGlassLine: true,
|
|
7
|
+
showFrameLines: true,
|
|
8
|
+
defaultWallThickness: 0.2, // 200mm
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Generates window symbols for 2D floor plans
|
|
12
|
+
*/
|
|
13
|
+
export class WindowSymbolGenerator {
|
|
14
|
+
config;
|
|
15
|
+
constructor(config = {}) {
|
|
16
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate window symbol from opening info
|
|
20
|
+
*/
|
|
21
|
+
generateFromOpening(opening, bounds2D, wallDirection, wallThickness) {
|
|
22
|
+
const partitioning = opening.windowPartitioning ?? 'SINGLE_PANEL';
|
|
23
|
+
const width = opening.width;
|
|
24
|
+
const thickness = wallThickness ?? this.config.defaultWallThickness;
|
|
25
|
+
// Calculate center of opening
|
|
26
|
+
const center = {
|
|
27
|
+
x: (bounds2D.min.x + bounds2D.max.x) / 2,
|
|
28
|
+
y: (bounds2D.min.y + bounds2D.max.y) / 2,
|
|
29
|
+
};
|
|
30
|
+
// Determine perpendicular direction
|
|
31
|
+
const perpendicular = this.getPerpendicularDirection(wallDirection);
|
|
32
|
+
return this.generateSymbol(center, width, thickness, wallDirection, perpendicular, partitioning);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate a window symbol at a specific position
|
|
36
|
+
*/
|
|
37
|
+
generateSymbol(center, width, wallThickness, wallDirection, perpDirection, partitioning) {
|
|
38
|
+
const lines = [];
|
|
39
|
+
const halfWidth = width / 2;
|
|
40
|
+
const frameDepth = wallThickness * this.config.frameDepthRatio;
|
|
41
|
+
const halfThickness = wallThickness / 2;
|
|
42
|
+
// Frame lines (two parallel lines at opening edges along wall direction)
|
|
43
|
+
if (this.config.showFrameLines) {
|
|
44
|
+
// Outer frame line (at wall face)
|
|
45
|
+
lines.push({
|
|
46
|
+
start: {
|
|
47
|
+
x: center.x - wallDirection.x * halfWidth + perpDirection.x * halfThickness,
|
|
48
|
+
y: center.y - wallDirection.y * halfWidth + perpDirection.y * halfThickness,
|
|
49
|
+
},
|
|
50
|
+
end: {
|
|
51
|
+
x: center.x + wallDirection.x * halfWidth + perpDirection.x * halfThickness,
|
|
52
|
+
y: center.y + wallDirection.y * halfWidth + perpDirection.y * halfThickness,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
// Inner frame line (at opposite wall face)
|
|
56
|
+
lines.push({
|
|
57
|
+
start: {
|
|
58
|
+
x: center.x - wallDirection.x * halfWidth - perpDirection.x * halfThickness,
|
|
59
|
+
y: center.y - wallDirection.y * halfWidth - perpDirection.y * halfThickness,
|
|
60
|
+
},
|
|
61
|
+
end: {
|
|
62
|
+
x: center.x + wallDirection.x * halfWidth - perpDirection.x * halfThickness,
|
|
63
|
+
y: center.y + wallDirection.y * halfWidth - perpDirection.y * halfThickness,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
// Jamb lines (short lines at window edges)
|
|
67
|
+
lines.push({
|
|
68
|
+
start: {
|
|
69
|
+
x: center.x - wallDirection.x * halfWidth + perpDirection.x * halfThickness,
|
|
70
|
+
y: center.y - wallDirection.y * halfWidth + perpDirection.y * halfThickness,
|
|
71
|
+
},
|
|
72
|
+
end: {
|
|
73
|
+
x: center.x - wallDirection.x * halfWidth - perpDirection.x * halfThickness,
|
|
74
|
+
y: center.y - wallDirection.y * halfWidth - perpDirection.y * halfThickness,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
lines.push({
|
|
78
|
+
start: {
|
|
79
|
+
x: center.x + wallDirection.x * halfWidth + perpDirection.x * halfThickness,
|
|
80
|
+
y: center.y + wallDirection.y * halfWidth + perpDirection.y * halfThickness,
|
|
81
|
+
},
|
|
82
|
+
end: {
|
|
83
|
+
x: center.x + wallDirection.x * halfWidth - perpDirection.x * halfThickness,
|
|
84
|
+
y: center.y + wallDirection.y * halfWidth - perpDirection.y * halfThickness,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Glass line (single line in center of wall)
|
|
89
|
+
if (this.config.showGlassLine) {
|
|
90
|
+
lines.push({
|
|
91
|
+
start: {
|
|
92
|
+
x: center.x - wallDirection.x * halfWidth,
|
|
93
|
+
y: center.y - wallDirection.y * halfWidth,
|
|
94
|
+
},
|
|
95
|
+
end: {
|
|
96
|
+
x: center.x + wallDirection.x * halfWidth,
|
|
97
|
+
y: center.y + wallDirection.y * halfWidth,
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// Add mullions based on partitioning type
|
|
102
|
+
const mullionLines = this.generateMullions(center, width, wallThickness, wallDirection, perpDirection, partitioning);
|
|
103
|
+
lines.push(...mullionLines);
|
|
104
|
+
const params = {
|
|
105
|
+
width,
|
|
106
|
+
frameDepth,
|
|
107
|
+
mullionCount: this.getMullionCount(partitioning),
|
|
108
|
+
};
|
|
109
|
+
return {
|
|
110
|
+
symbol: {
|
|
111
|
+
type: 'window-frame',
|
|
112
|
+
position: center,
|
|
113
|
+
rotation: Math.atan2(wallDirection.y, wallDirection.x),
|
|
114
|
+
scale: 1,
|
|
115
|
+
parameters: params,
|
|
116
|
+
},
|
|
117
|
+
lines,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Generate mullion lines based on window partitioning
|
|
122
|
+
*/
|
|
123
|
+
generateMullions(center, width, wallThickness, wallDirection, perpDirection, partitioning) {
|
|
124
|
+
const lines = [];
|
|
125
|
+
const halfThickness = wallThickness / 2;
|
|
126
|
+
switch (partitioning) {
|
|
127
|
+
case 'DOUBLE_PANEL_VERTICAL':
|
|
128
|
+
// Single vertical mullion in center
|
|
129
|
+
lines.push({
|
|
130
|
+
start: {
|
|
131
|
+
x: center.x + perpDirection.x * halfThickness,
|
|
132
|
+
y: center.y + perpDirection.y * halfThickness,
|
|
133
|
+
},
|
|
134
|
+
end: {
|
|
135
|
+
x: center.x - perpDirection.x * halfThickness,
|
|
136
|
+
y: center.y - perpDirection.y * halfThickness,
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
break;
|
|
140
|
+
case 'DOUBLE_PANEL_HORIZONTAL':
|
|
141
|
+
// Single horizontal mullion in center (along wall direction)
|
|
142
|
+
// This would be a line perpendicular to the wall
|
|
143
|
+
break;
|
|
144
|
+
case 'TRIPLE_PANEL_VERTICAL':
|
|
145
|
+
// Two vertical mullions
|
|
146
|
+
const thirdWidth = width / 3;
|
|
147
|
+
for (const offset of [-thirdWidth / 2, thirdWidth / 2]) {
|
|
148
|
+
lines.push({
|
|
149
|
+
start: {
|
|
150
|
+
x: center.x + wallDirection.x * offset + perpDirection.x * halfThickness,
|
|
151
|
+
y: center.y + wallDirection.y * offset + perpDirection.y * halfThickness,
|
|
152
|
+
},
|
|
153
|
+
end: {
|
|
154
|
+
x: center.x + wallDirection.x * offset - perpDirection.x * halfThickness,
|
|
155
|
+
y: center.y + wallDirection.y * offset - perpDirection.y * halfThickness,
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
case 'TRIPLE_PANEL_BOTTOM':
|
|
161
|
+
case 'TRIPLE_PANEL_TOP':
|
|
162
|
+
// One horizontal mullion and one vertical in lower/upper section
|
|
163
|
+
lines.push({
|
|
164
|
+
start: {
|
|
165
|
+
x: center.x + perpDirection.x * halfThickness,
|
|
166
|
+
y: center.y + perpDirection.y * halfThickness,
|
|
167
|
+
},
|
|
168
|
+
end: {
|
|
169
|
+
x: center.x - perpDirection.x * halfThickness,
|
|
170
|
+
y: center.y - perpDirection.y * halfThickness,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
break;
|
|
174
|
+
default:
|
|
175
|
+
// SINGLE_PANEL and others - no mullions
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
return lines;
|
|
179
|
+
}
|
|
180
|
+
getMullionCount(partitioning) {
|
|
181
|
+
switch (partitioning) {
|
|
182
|
+
case 'DOUBLE_PANEL_VERTICAL':
|
|
183
|
+
case 'DOUBLE_PANEL_HORIZONTAL':
|
|
184
|
+
return 1;
|
|
185
|
+
case 'TRIPLE_PANEL_VERTICAL':
|
|
186
|
+
case 'TRIPLE_PANEL_HORIZONTAL':
|
|
187
|
+
case 'TRIPLE_PANEL_BOTTOM':
|
|
188
|
+
case 'TRIPLE_PANEL_TOP':
|
|
189
|
+
case 'TRIPLE_PANEL_LEFT':
|
|
190
|
+
case 'TRIPLE_PANEL_RIGHT':
|
|
191
|
+
return 2;
|
|
192
|
+
default:
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
getPerpendicularDirection(dir) {
|
|
197
|
+
return { x: -dir.y, y: dir.x };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Generate simple window lines (frame only, no symbol object)
|
|
202
|
+
*/
|
|
203
|
+
export function generateSimpleWindowLines(center, width, wallDirection, wallThickness = 0.2) {
|
|
204
|
+
const generator = new WindowSymbolGenerator();
|
|
205
|
+
const perpDirection = { x: -wallDirection.y, y: wallDirection.x };
|
|
206
|
+
const result = generator.generateSymbol(center, width, wallThickness, wallDirection, perpDirection, 'SINGLE_PANEL');
|
|
207
|
+
return result.lines;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=window-symbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window-symbol.js","sourceRoot":"","sources":["../../src/symbols/window-symbol.ts"],"names":[],"mappings":"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"}
|