planscript 1.0.0 → 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.
@@ -0,0 +1,397 @@
1
+ # Casa Moderna - Terreno 20m x 60m
2
+ # v5: Diseño limpio, coordenadas verificadas
3
+ #
4
+ # Layout conceptual (vista desde arriba, norte = arriba):
5
+ #
6
+ # NORTE (fondo terreno)
7
+ # +------------------+
8
+ # | MASTER |VEST|BAÑ| Y=28-32
9
+ # +---------+----+---+
10
+ # | BED3 | PASILLO | Y=23-28
11
+ # +---------+---------+
12
+ # | BED2 | BAÑO | | Y=18-23
13
+ # +---------+------+ |
14
+ # | COCINA | COMEDOR | Y=12-18
15
+ # +---------+---------+
16
+ # | OFIC | LIVING | Y=6-12
17
+ # +-------+-----------+
18
+ # |GARAGE |FOYER|LAVAD| Y=1-6
19
+ # +-------+-----+-----+
20
+ # SUR (frente/calle)
21
+
22
+ units m
23
+
24
+ defaults {
25
+ door_width 0.9
26
+ window_width 1.5
27
+ }
28
+
29
+ plan "Casa Moderna" {
30
+ footprint rect (1, 1) (19, 32)
31
+
32
+ # ============================================
33
+ # FRENTE - Sur (Y = 1 a 6)
34
+ # ============================================
35
+
36
+ room garage {
37
+ rect (1, 1) (7, 6)
38
+ label "Cochera"
39
+ }
40
+
41
+ room foyer {
42
+ rect (7, 1) (13, 6)
43
+ label "Hall"
44
+ }
45
+
46
+ room laundry {
47
+ rect (13, 1) (19, 6)
48
+ label "Lavadero"
49
+ }
50
+
51
+ # ============================================
52
+ # ZONA SOCIAL - Centro (Y = 6 a 18)
53
+ # ============================================
54
+
55
+ room office {
56
+ rect (1, 6) (6, 12)
57
+ label "Oficina"
58
+ }
59
+
60
+ room living {
61
+ rect (6, 6) (19, 12)
62
+ label "Living"
63
+ }
64
+
65
+ room kitchen {
66
+ rect (1, 12) (8, 18)
67
+ label "Cocina"
68
+ }
69
+
70
+ room dining {
71
+ rect (8, 12) (19, 18)
72
+ label "Comedor"
73
+ }
74
+
75
+ # ============================================
76
+ # ZONA PRIVADA - Norte (Y = 18 a 32)
77
+ # ============================================
78
+
79
+ # Pasillo central que conecta todo
80
+ room hallway {
81
+ rect (8, 18) (12, 28)
82
+ label "Pasillo"
83
+ }
84
+
85
+ room bedroom2 {
86
+ rect (1, 18) (8, 23)
87
+ label "Dormitorio 2"
88
+ }
89
+
90
+ room bath_shared {
91
+ rect (12, 18) (16, 22)
92
+ label "Baño"
93
+ }
94
+
95
+ room bedroom3 {
96
+ rect (1, 23) (8, 28)
97
+ label "Dormitorio 3"
98
+ }
99
+
100
+ room storage {
101
+ rect (16, 18) (19, 22)
102
+ label "Placard"
103
+ }
104
+
105
+ room sitting {
106
+ rect (12, 22) (19, 28)
107
+ label "Estar Íntimo"
108
+ }
109
+
110
+ # ============================================
111
+ # SUITE MASTER - Fondo Norte (Y = 28 a 32)
112
+ # ============================================
113
+
114
+ room master {
115
+ rect (1, 28) (10, 32)
116
+ label "Suite Principal"
117
+ }
118
+
119
+ room walkin {
120
+ rect (10, 28) (14, 32)
121
+ label "Vestidor"
122
+ }
123
+
124
+ room bath_master {
125
+ rect (14, 28) (19, 32)
126
+ label "Baño Suite"
127
+ }
128
+
129
+ # ============================================
130
+ # PUERTAS - Acceso
131
+ # ============================================
132
+
133
+ opening door d_entrada {
134
+ on foyer.edge south
135
+ at 50%
136
+ width 1.2
137
+ }
138
+
139
+ opening door d_garage_ext {
140
+ on garage.edge south
141
+ at 50%
142
+ width 5.0
143
+ }
144
+
145
+ opening door d_garage_int {
146
+ between garage and foyer
147
+ on shared_edge
148
+ at 50%
149
+ }
150
+
151
+ opening door d_laundry_ext {
152
+ on laundry.edge south
153
+ at 50%
154
+ }
155
+
156
+ opening door d_foyer_laundry {
157
+ between foyer and laundry
158
+ on shared_edge
159
+ at 50%
160
+ }
161
+
162
+ # ============================================
163
+ # PUERTAS - Zona Social
164
+ # ============================================
165
+
166
+ opening door d_foyer_living {
167
+ between foyer and living
168
+ on shared_edge
169
+ at 50%
170
+ width 1.5
171
+ }
172
+
173
+ opening door d_foyer_office {
174
+ between foyer and office
175
+ on shared_edge
176
+ at 50%
177
+ }
178
+
179
+ opening door d_office_living {
180
+ between office and living
181
+ on shared_edge
182
+ at 50%
183
+ }
184
+
185
+ opening door d_living_dining {
186
+ between living and dining
187
+ on shared_edge
188
+ at 50%
189
+ width 2.5
190
+ }
191
+
192
+ opening door d_living_kitchen {
193
+ between living and kitchen
194
+ on shared_edge
195
+ at 50%
196
+ width 1.2
197
+ }
198
+
199
+ opening door d_kitchen_dining {
200
+ between kitchen and dining
201
+ on shared_edge
202
+ at 50%
203
+ width 1.2
204
+ }
205
+
206
+ # ============================================
207
+ # PUERTAS - Circulación a zona privada
208
+ # ============================================
209
+
210
+ opening door d_dining_hall {
211
+ between dining and hallway
212
+ on shared_edge
213
+ at 50%
214
+ }
215
+
216
+ opening door d_kitchen_hall {
217
+ between kitchen and hallway
218
+ on shared_edge
219
+ at 50%
220
+ }
221
+
222
+ # ============================================
223
+ # PUERTAS - Zona Privada
224
+ # ============================================
225
+
226
+ opening door d_hall_bed2 {
227
+ between hallway and bedroom2
228
+ on shared_edge
229
+ at 50%
230
+ }
231
+
232
+ opening door d_hall_bed3 {
233
+ between hallway and bedroom3
234
+ on shared_edge
235
+ at 50%
236
+ }
237
+
238
+ opening door d_hall_bath {
239
+ between hallway and bath_shared
240
+ on shared_edge
241
+ at 50%
242
+ width 0.8
243
+ }
244
+
245
+ opening door d_hall_sitting {
246
+ between hallway and sitting
247
+ on shared_edge
248
+ at 50%
249
+ }
250
+
251
+ opening door d_hall_master {
252
+ between hallway and master
253
+ on shared_edge
254
+ at 50%
255
+ }
256
+
257
+ # ============================================
258
+ # PUERTAS - Suite Master
259
+ # ============================================
260
+
261
+ opening door d_master_walkin {
262
+ between master and walkin
263
+ on shared_edge
264
+ at 50%
265
+ }
266
+
267
+ opening door d_walkin_bath {
268
+ between walkin and bath_master
269
+ on shared_edge
270
+ at 50%
271
+ width 0.8
272
+ }
273
+
274
+ # ============================================
275
+ # VENTANAS - Fachada Sur
276
+ # ============================================
277
+
278
+ opening window w_office_s {
279
+ on office.edge south
280
+ at 2.5
281
+ width 2.0
282
+ }
283
+
284
+ # ============================================
285
+ # VENTANAS - Fachada Oeste
286
+ # ============================================
287
+
288
+ opening window w_garage_w {
289
+ on garage.edge west
290
+ at 2.5
291
+ width 1.5
292
+ }
293
+
294
+ opening window w_office_w {
295
+ on office.edge west
296
+ at 3.0
297
+ width 2.0
298
+ }
299
+
300
+ opening window w_kitchen_w {
301
+ on kitchen.edge west
302
+ at 3.0
303
+ width 2.0
304
+ }
305
+
306
+ opening window w_bed2_w {
307
+ on bedroom2.edge west
308
+ at 3.5
309
+ width 2.0
310
+ }
311
+
312
+ opening window w_bed3_w {
313
+ on bedroom3.edge west
314
+ at 2.5
315
+ width 2.0
316
+ }
317
+
318
+ opening window w_master_w {
319
+ on master.edge west
320
+ at 4.5
321
+ width 3.0
322
+ }
323
+
324
+ # ============================================
325
+ # VENTANAS - Fachada Este
326
+ # ============================================
327
+
328
+ opening window w_laundry_e {
329
+ on laundry.edge east
330
+ at 2.5
331
+ width 1.2
332
+ }
333
+
334
+ opening window w_living_e {
335
+ on living.edge east
336
+ at 6.5
337
+ width 3.0
338
+ }
339
+
340
+ opening window w_dining_e {
341
+ on dining.edge east
342
+ at 5.5
343
+ width 3.0
344
+ }
345
+
346
+ opening window w_storage_e {
347
+ on storage.edge east
348
+ at 2.0
349
+ width 1.0
350
+ }
351
+
352
+ opening window w_sitting_e {
353
+ on sitting.edge east
354
+ at 3.0
355
+ width 2.5
356
+ }
357
+
358
+ opening window w_bath_master_e {
359
+ on bath_master.edge east
360
+ at 2.5
361
+ width 1.2
362
+ }
363
+
364
+ # ============================================
365
+ # VENTANAS - Fachada Norte
366
+ # ============================================
367
+
368
+ opening window w_master_n {
369
+ on master.edge north
370
+ at 4.5
371
+ width 3.0
372
+ }
373
+
374
+ opening window w_walkin_n {
375
+ on walkin.edge north
376
+ at 2.0
377
+ width 1.5
378
+ }
379
+
380
+ opening window w_bath_master_n {
381
+ on bath_master.edge north
382
+ at 2.5
383
+ width 1.2
384
+ }
385
+
386
+ # ============================================
387
+ # VALIDACIONES
388
+ # ============================================
389
+
390
+ assert no_overlap rooms
391
+ assert inside footprint all_rooms
392
+ assert min_room_area master >= 25
393
+ assert min_room_area living >= 40
394
+ assert min_room_area bedroom2 >= 15
395
+ assert min_room_area bedroom3 >= 15
396
+ assert min_room_area garage >= 25
397
+ }
@@ -0,0 +1,156 @@
1
+ units m
2
+ origin (0, 0)
3
+
4
+ defaults {
5
+ door_width 0.9
6
+ window_width 1.8
7
+ }
8
+
9
+ plan "Modern 3BR + Ensuite + Office + 2-Car Garage" {
10
+ # Building footprint (lot is 20x60; we only occupy 20x18)
11
+ footprint rect (0, 0) (20, 18)
12
+
13
+ # --- FRONT / STREET ZONE --------------------------------------------------
14
+
15
+ room garage {
16
+ rect (0, 0) (7.2, 6.2)
17
+ label "2-Car Garage"
18
+ }
19
+
20
+ room office {
21
+ rect (12.5, 0) (20, 5.0)
22
+ label "Office"
23
+ }
24
+
25
+ room foyer {
26
+ rect (7.2, 0) (12.5, 5.0)
27
+ label "Entry / Foyer"
28
+ }
29
+
30
+ # --- CORE / CIRCULATION (gallery hall, not oversized) ----------------------
31
+
32
+ room hall {
33
+ rect (7.2, 5.0) (12.5, 12.8)
34
+ label "Gallery Hall"
35
+ }
36
+
37
+ # --- GREAT ROOM (modern open-plan, facing garden) --------------------------
38
+
39
+ room great_room {
40
+ rect (12.5, 5.0) (20, 18)
41
+ label "Great Room (Living/Dining/Kitchen)"
42
+ }
43
+
44
+ # --- PRIVATE WING (LEFT) ---------------------------------------------------
45
+
46
+ room bedroom3 {
47
+ rect (0, 6.2) (7.2, 10.2)
48
+ label "Bedroom 3"
49
+ }
50
+
51
+ room bathroom {
52
+ rect (0, 10.2) (3.4, 12.8)
53
+ label "Bathroom"
54
+ }
55
+
56
+ room laundry {
57
+ rect (3.4, 10.2) (7.2, 12.8)
58
+ label "Laundry / Storage"
59
+ }
60
+
61
+ room bedroom2 {
62
+ rect (0, 12.8) (7.2, 14.8)
63
+ label "Bedroom 2"
64
+ }
65
+
66
+ # Master suite at the back-left corner (has exterior walls on west + north)
67
+ room master {
68
+ rect (0, 14.8) (7.2, 18)
69
+ label "Master Bedroom"
70
+ }
71
+
72
+ room ensuite {
73
+ rect (0, 12.8) (3.4, 14.8)
74
+ label "Ensuite Bath"
75
+ }
76
+
77
+ room closet {
78
+ rect (3.4, 12.8) (7.2, 14.8)
79
+ label "Walk-in Closet"
80
+ }
81
+
82
+ # NOTE: closet overlaps bedroom2 if we keep bedroom2 at (0,12.8)-(7.2,14.8)
83
+ # So bedroom2 is moved to the right side of the private wing:
84
+ room bedroom2 {
85
+ rect (0, 10.2) (7.2, 12.8)
86
+ label "Bedroom 2"
87
+ }
88
+
89
+ # And Bedroom 3 becomes smaller + shifted:
90
+ room bedroom3 {
91
+ rect (0, 6.2) (7.2, 10.2)
92
+ label "Bedroom 3"
93
+ }
94
+
95
+ # Bathroom/Laundry stay as above (0..12.8 range) — consistent.
96
+
97
+ # --- DOORS ----------------------------------------------------------------
98
+
99
+ # Exterior front door (clear entry)
100
+ opening door d_front { on foyer.edge south at 50% width 1.1 }
101
+
102
+ # Garage internal access
103
+ opening door d_garage_foyer { between garage and foyer on shared_edge at 50% }
104
+
105
+ # Foyer to hall and to great room
106
+ opening door d_foyer_hall { between foyer and hall on shared_edge at 50% }
107
+ opening door d_hall_great { between hall and great_room on shared_edge at 55% width 1.6 }
108
+
109
+ # Office access from foyer (optional: could also be from hall)
110
+ opening door d_foyer_office { between foyer and office on shared_edge at 50% }
111
+
112
+ # Private wing connections from hall
113
+ opening door d_hall_bed3 { between hall and bedroom3 on shared_edge at 30% }
114
+ opening door d_hall_bed2 { between hall and bedroom2 on shared_edge at 55% }
115
+ opening door d_hall_bath { between hall and bathroom on shared_edge at 75% }
116
+
117
+ # Master suite connections
118
+ opening door d_hall_master { between hall and master on shared_edge at 85% }
119
+ opening door d_master_ensuite { between master and ensuite on shared_edge at 50% }
120
+ opening door d_master_closet { between master and closet on shared_edge at 50% }
121
+
122
+ # --- WINDOWS (make it feel modern) ----------------------------------------
123
+
124
+ # Office: street-facing
125
+ opening window w_office_s1 { on office.edge south at 2.0 width 2.0 }
126
+ opening window w_office_s2 { on office.edge south at 5.5 width 2.0 }
127
+
128
+ # Great room: BIG glazing to garden (north edge)
129
+ opening window w_great_n1 { on great_room.edge north at 2.0 width 3.0 }
130
+ opening window w_great_n2 { on great_room.edge north at 6.0 width 3.0 }
131
+
132
+ # Great room: side glazing (east)
133
+ opening window w_great_e1 { on great_room.edge east at 6.0 width 2.0 }
134
+ opening window w_great_e2 { on great_room.edge east at 11.5 width 2.0 }
135
+
136
+ # Bedrooms: exterior windows (no more “boxed master”)
137
+ opening window w_bed3_w { on bedroom3.edge west at 2.0 width 1.8 }
138
+ opening window w_bed2_w { on bedroom2.edge west at 1.5 width 1.8 }
139
+
140
+ # Master gets corner light (west + north)
141
+ opening window w_master_w { on master.edge west at 1.0 width 2.4 }
142
+ opening window w_master_n { on master.edge north at 3.0 width 2.8 }
143
+
144
+ # Bathrooms/laundry: small exterior windows (optional but realistic)
145
+ opening window w_bath_w { on bathroom.edge west at 1.0 width 0.8 }
146
+ opening window w_ensuite_w { on ensuite.edge west at 1.0 width 0.8 }
147
+
148
+ # --- VALIDATION ------------------------------------------------------------
149
+
150
+ assert no_overlap rooms
151
+ assert inside footprint all_rooms
152
+
153
+ assert min_room_area master >= 14.0
154
+ assert min_room_area bedroom2 >= 10.0
155
+ assert min_room_area bedroom3 >= 10.0
156
+ }
@@ -0,0 +1,103 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="800" viewBox="0 0 1000 800">
3
+ <defs>
4
+ <style>
5
+ .room-label { font-family: Arial, sans-serif; font-weight: 500; }
6
+ </style>
7
+ </defs>
8
+
9
+ <!-- Background -->
10
+ <rect width="1000" height="800" fill="#ffffff" />
11
+
12
+ <!-- Footprint (boundary) -->
13
+ <path d="M 122.22 740.00 L 877.78 740.00 L 877.78 60.00 L 122.22 60.00 Z" fill="none" stroke="#7f8c8d" stroke-width="2" stroke-dasharray="8,4" />
14
+
15
+ <!-- Rooms -->
16
+ <path d="M 122.22 740.00 L 394.22 740.00 L 394.22 505.78 L 122.22 505.78 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
17
+ <path d="M 594.44 740.00 L 877.78 740.00 L 877.78 551.11 L 594.44 551.11 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
18
+ <path d="M 394.22 740.00 L 594.44 740.00 L 594.44 551.11 L 394.22 551.11 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
19
+ <path d="M 394.22 551.11 L 594.44 551.11 L 594.44 256.44 L 394.22 256.44 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
20
+ <path d="M 594.44 551.11 L 877.78 551.11 L 877.78 60.00 L 594.44 60.00 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
21
+ <path d="M 122.22 505.78 L 394.22 505.78 L 394.22 354.67 L 122.22 354.67 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
22
+ <path d="M 122.22 354.67 L 250.67 354.67 L 250.67 256.44 L 122.22 256.44 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
23
+ <path d="M 250.67 354.67 L 394.22 354.67 L 394.22 256.44 L 250.67 256.44 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
24
+ <path d="M 122.22 354.67 L 394.22 354.67 L 394.22 256.44 L 122.22 256.44 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
25
+ <path d="M 122.22 180.89 L 394.22 180.89 L 394.22 60.00 L 122.22 60.00 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
26
+ <path d="M 122.22 256.44 L 250.67 256.44 L 250.67 180.89 L 122.22 180.89 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
27
+ <path d="M 250.67 256.44 L 394.22 256.44 L 394.22 180.89 L 250.67 180.89 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
28
+
29
+ <!-- Walls -->
30
+ <line x1="394.22" y1="740.00" x2="394.22" y2="551.11" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
31
+ <line x1="394.22" y1="551.11" x2="394.22" y2="505.78" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
32
+ <line x1="122.22" y1="505.78" x2="394.22" y2="505.78" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
33
+ <line x1="594.44" y1="551.11" x2="877.78" y2="551.11" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
34
+ <line x1="594.44" y1="740.00" x2="594.44" y2="551.11" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
35
+ <line x1="394.22" y1="551.11" x2="594.44" y2="551.11" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
36
+ <line x1="594.44" y1="551.11" x2="594.44" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
37
+ <line x1="394.22" y1="505.78" x2="394.22" y2="354.67" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
38
+ <line x1="394.22" y1="354.67" x2="394.22" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
39
+ <line x1="122.22" y1="354.67" x2="250.67" y2="354.67" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
40
+ <line x1="250.67" y1="354.67" x2="394.22" y2="354.67" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
41
+ <line x1="122.22" y1="354.67" x2="394.22" y2="354.67" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
42
+ <line x1="250.67" y1="354.67" x2="250.67" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
43
+ <line x1="122.22" y1="256.44" x2="250.67" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
44
+ <line x1="122.22" y1="354.67" x2="122.22" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
45
+ <line x1="250.67" y1="256.44" x2="394.22" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
46
+ <line x1="122.22" y1="180.89" x2="250.67" y2="180.89" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
47
+ <line x1="250.67" y1="180.89" x2="394.22" y2="180.89" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
48
+ <line x1="250.67" y1="256.44" x2="250.67" y2="180.89" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
49
+ <line x1="122.22" y1="740.00" x2="394.22" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
50
+ <line x1="122.22" y1="740.00" x2="122.22" y2="505.78" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
51
+ <line x1="594.44" y1="740.00" x2="877.78" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
52
+ <line x1="877.78" y1="740.00" x2="877.78" y2="551.11" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
53
+ <line x1="394.22" y1="740.00" x2="594.44" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
54
+ <line x1="394.22" y1="256.44" x2="594.44" y2="256.44" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
55
+ <line x1="877.78" y1="551.11" x2="877.78" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
56
+ <line x1="594.44" y1="60.00" x2="877.78" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
57
+ <line x1="594.44" y1="256.44" x2="594.44" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
58
+ <line x1="122.22" y1="505.78" x2="122.22" y2="354.67" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
59
+ <line x1="394.22" y1="180.89" x2="394.22" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
60
+ <line x1="122.22" y1="60.00" x2="394.22" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
61
+ <line x1="122.22" y1="180.89" x2="122.22" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
62
+ <line x1="122.22" y1="256.44" x2="122.22" y2="180.89" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
63
+ <line x1="394.22" y1="256.44" x2="394.22" y2="180.89" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
64
+
65
+ <!-- Openings (doors/windows) -->
66
+ <line x1="473.56" y1="740.00" x2="515.11" y2="740.00" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
67
+ <line x1="394.22" y1="662.56" x2="394.22" y2="628.56" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
68
+ <line x1="477.33" y1="551.11" x2="511.33" y2="551.11" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
69
+ <line x1="594.44" y1="419.27" x2="594.44" y2="358.82" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
70
+ <line x1="594.44" y1="662.56" x2="594.44" y2="628.56" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
71
+ <line x1="394.22" y1="477.44" x2="394.22" y2="443.44" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
72
+ <line x1="169.44" y1="180.89" x2="203.44" y2="180.89" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
73
+ <line x1="305.44" y1="180.89" x2="339.44" y2="180.89" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
74
+ <line x1="632.22" y1="740.00" x2="707.78" y2="740.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
75
+ <line x1="764.44" y1="740.00" x2="840.00" y2="740.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
76
+ <line x1="613.33" y1="60.00" x2="726.67" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
77
+ <line x1="764.44" y1="60.00" x2="877.78" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
78
+ <line x1="877.78" y1="362.22" x2="877.78" y2="286.67" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
79
+ <line x1="877.78" y1="154.44" x2="877.78" y2="78.89" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
80
+ <line x1="122.22" y1="464.22" x2="122.22" y2="396.22" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
81
+ <line x1="122.22" y1="332.00" x2="122.22" y2="264.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
82
+ <line x1="122.22" y1="188.44" x2="122.22" y2="97.78" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
83
+ <line x1="182.67" y1="60.00" x2="288.44" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
84
+ <line x1="122.22" y1="332.00" x2="122.22" y2="301.78" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
85
+ <line x1="122.22" y1="233.78" x2="122.22" y2="203.56" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
86
+
87
+ <!-- Labels -->
88
+ <text x="258.22" y="622.89" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">2-Car Garage</text>
89
+ <text x="736.11" y="645.56" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Office</text>
90
+ <text x="494.33" y="645.56" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Entry / Foyer</text>
91
+ <text x="494.33" y="403.78" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Gallery Hall</text>
92
+ <text x="736.11" y="305.56" font-size="11" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Great Room (Living/Dining/Kitchen)</text>
93
+ <text x="258.22" y="430.22" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Bedroom 3</text>
94
+ <text x="186.44" y="305.56" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Bathroom</text>
95
+ <text x="322.44" y="305.56" font-size="11" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Laundry / Storage</text>
96
+ <text x="258.22" y="305.56" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Bedroom 2</text>
97
+ <text x="258.22" y="120.44" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Master Bedroom</text>
98
+ <text x="186.44" y="218.67" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Ensuite Bath</text>
99
+ <text x="322.44" y="218.67" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Walk-in Closet</text>
100
+
101
+ <!-- Dimensions -->
102
+
103
+ </svg>