268 lines
14 KiB
XML
268 lines
14 KiB
XML
|
|
<!-- W: 2500 + 500 each side -->
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3500 3600" width="800" height="820"
|
|
font-family="monospace" font-size="48">
|
|
<!-- Background -->
|
|
<rect width="3500" height="3600" fill="#f8f8f8" />
|
|
|
|
<!-- Title -->
|
|
|
|
|
|
<!-- Room in mm. Visual: A at top, F/E (origin) at bottom-left.
|
|
SVG coords = (arch_x, 2600 - arch_y) so Y-up maps to SVG Y-down.
|
|
Polygon (SVG): A(0,0) B(2500,0) C(2500,1000) D(1500,1000) E(1500,2600) F(0,2600)
|
|
Arch coords: A(0,2600) B(2500,2600) C(2500,1600) D(1500,1600) E(1500,0) F(0,0)
|
|
-->
|
|
<!-- Make y be upwards increasing and add 500 padding -->
|
|
<g transform="translate(500, 3000) scale(1,-1)">
|
|
|
|
<!-- Fix text orientation -->
|
|
<g transform="translate(1250, 2850) scale(1,-1)">
|
|
<text text-anchor="middle" font-size="80" font-weight="bold"
|
|
fill="#333">Bathroom Blueprint (Current)</text>
|
|
|
|
</g>
|
|
|
|
|
|
<!-- Room outline — wall E split into solid (550mm wall) + dashed (door) -->
|
|
<!-- F(0,0) E(1500,0) D(1500,1600) C(2500,1600) B(2500,2600) A(0,2600) -->
|
|
<!-- Fill only -->
|
|
<polygon
|
|
points="0,0 0,2600 2500,2600 2500,1600 1500,1600 1500,0"
|
|
fill="white" stroke="none" />
|
|
<!-- All walls except E as solid path -->
|
|
<path d="M 0,0 L 0,2600 L 2500,2600 L 2500,1600 L 1500,1600 L 1500,0"
|
|
fill="none" stroke="#333" stroke-width="16" stroke-linejoin="miter" />
|
|
<!-- Wall E: solid 550mm wall segment -->
|
|
<line x1="0" y1="0" x2="550" y2="0" stroke="#333" stroke-width="16" />
|
|
<!-- Wall E: dashed door opening -->
|
|
<line x1="550" y1="0" x2="1500" y2="0" stroke="#333" stroke-width="16" stroke-dasharray="40,25" />
|
|
|
|
<!-- ========== DIMENSIONS ========== -->
|
|
<!-- Pattern: line at ±60 from wall, ticks ±25, text at ±120 flipped -->
|
|
|
|
<!-- Wall E: y=0, 1500mm -->
|
|
<line x1="0" y1="calc(0 - 60)" x2="1500" y2="calc(0 - 60)" stroke="#555" stroke-width="4" />
|
|
<line x1="0" y1="calc(0 - 60 - 25)" x2="0" y2="calc(0 - 60 + 25)" stroke="#555" stroke-width="4" />
|
|
<line x1="1500" y1="calc(0 - 60 - 25)" x2="1500" y2="calc(0 - 60 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(750, -120) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">E: 1500mm</text>
|
|
</g>
|
|
|
|
<!-- Wall A: y=2600, 2500mm -->
|
|
<line x1="0" y1="calc(2600 + 60)" x2="2500" y2="calc(2600 + 60)" stroke="#555" stroke-width="4" />
|
|
<line x1="0" y1="calc(2600 + 60 - 25)" x2="0" y2="calc(2600 + 60 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="2500" y1="calc(2600 + 60 - 25)" x2="2500" y2="calc(2600 + 60 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(1250, 2720) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">A: 2500mm</text>
|
|
</g>
|
|
|
|
<!-- Wall F: x=0, 2600mm -->
|
|
<line x1="calc(0 - 60)" y1="0" x2="calc(0 - 60)" y2="2600" stroke="#555" stroke-width="4" />
|
|
<line x1="calc(0 - 60 - 25)" y1="0" x2="calc(0 - 60 + 25)" y2="0" stroke="#555" stroke-width="4" />
|
|
<line x1="calc(0 - 60 - 25)" y1="2600" x2="calc(0 - 60 + 25)" y2="2600" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(-120, 1300) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
|
|
transform="rotate(90)">F: 2600mm</text>
|
|
</g>
|
|
|
|
<!-- Wall B: x=2500, 1000mm (y=1600 to y=2600) -->
|
|
<line x1="calc(2500 + 60)" y1="1600" x2="calc(2500 + 60)" y2="2600" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="calc(2500 + 60 - 25)" y1="1600" x2="calc(2500 + 60 + 25)" y2="1600" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="calc(2500 + 60 - 25)" y1="2600" x2="calc(2500 + 60 + 25)" y2="2600" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(2620, 2100) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
|
|
transform="rotate(-90)">B: 1000mm</text>
|
|
</g>
|
|
|
|
<!-- Wall C: y=1600, 1000mm (x=1500 to x=2500) -->
|
|
<line x1="1500" y1="calc(1600 - 60)" x2="2500" y2="calc(1600 - 60)" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="1500" y1="calc(1600 - 60 - 25)" x2="1500" y2="calc(1600 - 60 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="2500" y1="calc(1600 - 60 - 25)" x2="2500" y2="calc(1600 - 60 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(2000, 1480) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">C: 1000mm</text>
|
|
</g>
|
|
|
|
<!-- Wall D: x=1500, 1600mm (y=0 to y=1600) -->
|
|
<line x1="calc(1500 + 60)" y1="0" x2="calc(1500 + 60)" y2="1600" stroke="#555" stroke-width="4" />
|
|
<line x1="calc(1500 + 60 - 25)" y1="0" x2="calc(1500 + 60 + 25)" y2="0" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="calc(1500 + 60 - 25)" y1="1600" x2="calc(1500 + 60 + 25)" y2="1600" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(1620, 800) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
|
|
transform="rotate(-90)">D: 1600mm</text>
|
|
</g>
|
|
|
|
<!-- ========== FIXTURES ========== -->
|
|
|
|
<!-- Bath: 1850x850, corner A/F, long side along wall F -->
|
|
<rect x="25" y="750" width="800" height="1825" rx="60" fill="none" stroke="#333"
|
|
stroke-width="10" />
|
|
<rect x="75" y="800" width="700" height="1725" rx="50" fill="#d4e8f7" fill-opacity="0.3"
|
|
stroke="#999" stroke-width="5" />
|
|
<!-- Faucet: middle of bath, wall F side -->
|
|
<circle cx="40" cy="1675" r="30" fill="none" stroke="#4a90d9" stroke-width="7" />
|
|
<circle cx="40" cy="1675" r="10" fill="#4a90d9" />
|
|
<!-- Drain -->
|
|
<!-- <circle cx="425" cy="875" r="25" fill="none" stroke="#999" stroke-width="5" /> -->
|
|
<g transform="translate(425, 1675) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Bath</text>
|
|
</g>
|
|
<g transform="translate(425, 1620) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#666">1850x850</text>
|
|
</g>
|
|
|
|
<!-- Suction cup baskets: wall F, between sink and bath -->
|
|
<rect x="25" y="620" width="120" height="110" rx="8" fill="#aaa" fill-opacity="0.2"
|
|
stroke="#999" stroke-width="4" stroke-dasharray="10,6" />
|
|
<g transform="translate(200, 675) scale(1,-1)">
|
|
<text text-anchor="start" dominant-baseline="central" font-size="30" fill="#999">TISKEN
|
|
baskets</text>
|
|
</g>
|
|
|
|
<!-- Shower: nook, x=1500-2500, y=1600-2600 -->
|
|
<rect x="1500" y="1600" width="1000" height="1000" fill="#d4e8f7" fill-opacity="0.4"
|
|
stroke="#333" stroke-width="10" stroke-dasharray="30,15" />
|
|
<!-- Shower head: middle of wall B -->
|
|
<circle cx="2475" cy="2100" r="60" fill="none" stroke="#4a90d9" stroke-width="7" />
|
|
<circle cx="2475" cy="2100" r="20" fill="#4a90d9" />
|
|
<!-- Drain -->
|
|
<!-- <circle cx="2000" cy="2100" r="35" fill="none" stroke="#999" stroke-width="5" /> -->
|
|
<!-- <line x1="1980" y1="2100" x2="2020" y2="2100" stroke="#999" stroke-width="5" /> -->
|
|
<!-- <line x1="2000" y1="2080" x2="2000" y2="2120" stroke="#999" stroke-width="5" /> -->
|
|
<g transform="translate(2000, 2200) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#4a90d9">Shower</text>
|
|
</g>
|
|
<g transform="translate(2000, 2140) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#4a90d9">
|
|
(~1000x1000)</text>
|
|
</g>
|
|
|
|
<!-- Sink: 550x350, wall F, 50mm from wall E -->
|
|
<rect x="25" y="50" width="350" height="550" rx="15" fill="none" stroke="#333"
|
|
stroke-width="10" />
|
|
<ellipse cx="200" cy="325" rx="80" ry="140" fill="none" stroke="#333" stroke-width="7" />
|
|
<!-- Faucet -->
|
|
<circle cx="60" cy="325" r="18" fill="none" stroke="#4a90d9" stroke-width="7" />
|
|
<circle cx="60" cy="325" r="6" fill="#4a90d9" />
|
|
<g transform="translate(200, 325) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Sink</text>
|
|
</g>
|
|
<g transform="translate(200, 270) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="32" fill="#666">550x350</text>
|
|
</g>
|
|
|
|
<!-- Mirror light: 560mm, 60mm from wall E, on wall F above sink -->
|
|
<rect x="25" y="60" width="80" height="560" rx="10" fill="none" stroke="#f5a623"
|
|
stroke-width="5" />
|
|
<g transform="translate(160, 340) scale(1,-1)">
|
|
<text text-anchor="start" dominant-baseline="central" font-size="30" fill="#f5a623">Mirror
|
|
560mm</text>
|
|
</g>
|
|
|
|
<!-- Shelf: wall A, 800mm long, 250mm deep, 500mm from wall F -->
|
|
<rect x="500" y="calc(2600 - 250)" width="800" height="250" fill="#c8b896" fill-opacity="0.3"
|
|
stroke="#999" stroke-width="5" />
|
|
<g transform="translate(900, 2475) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#666">Shelf
|
|
800x250</text>
|
|
</g>
|
|
|
|
<!-- Ceiling light: 1100 from wall F, 700 from wall A → (1100, 2600-700) = (1100, 1900), r=210 -->
|
|
<circle cx="1100" cy="1900" r="210" fill="none" stroke="#f5a623" stroke-width="6" />
|
|
<line x1="1070" y1="1900" x2="1130" y2="1900" stroke="#f5a623" stroke-width="4" />
|
|
<line x1="1100" y1="1870" x2="1100" y2="1930" stroke="#f5a623" stroke-width="4" />
|
|
<g transform="translate(1100, 1830) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#f5a623">Light
|
|
(420mm)</text>
|
|
</g>
|
|
|
|
<!-- Vent: on wall D, 200mm wide, 750mm from wall E -->
|
|
<rect x="1400" y="750" width="100" height="200" fill="none" stroke="#888" stroke-width="5"
|
|
stroke-dasharray="15,8" />
|
|
<line x1="1400" y1="750" x2="1500" y2="950" stroke="#888" stroke-width="3" />
|
|
<line x1="1500" y1="750" x2="1400" y2="950" stroke="#888" stroke-width="3" />
|
|
<g transform="translate(1350, 850) scale(1,-1)">
|
|
<text text-anchor="end" dominant-baseline="central" font-size="35" fill="#888">Vent</text>
|
|
</g>
|
|
|
|
<!-- Radiator: wall D (x=1500), 600mm, 600mm from door -->
|
|
<rect x="1425" y="600" width="75" height="600" fill="#e85d3a" fill-opacity="0.4"
|
|
stroke="#e85d3a" stroke-width="7" />
|
|
|
|
<!-- Dimension: 600mm gap radiator to door on wall D -->
|
|
<line x1="calc(1500 + 120)" y1="0" x2="calc(1500 + 120)" y2="600" stroke="#555" stroke-width="4" />
|
|
<line x1="calc(1500 + 120 - 25)" y1="0" x2="calc(1500 + 120 + 25)" y2="0" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="calc(1500 + 120 - 25)" y1="600" x2="calc(1500 + 120 + 25)" y2="600" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(1680, 300) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555"
|
|
transform="rotate(-90)">600</text>
|
|
</g>
|
|
|
|
<!-- Dimension: 550mm wall segment left of door -->
|
|
<line x1="0" y1="calc(0 - 150)" x2="550" y2="calc(0 - 150)" stroke="#555" stroke-width="4" />
|
|
<line x1="0" y1="calc(0 - 150 - 25)" x2="0" y2="calc(0 - 150 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<line x1="550" y1="calc(0 - 150 - 25)" x2="550" y2="calc(0 - 150 + 25)" stroke="#555"
|
|
stroke-width="4" />
|
|
<g transform="translate(275, -210) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555">550</text>
|
|
</g>
|
|
|
|
<!-- Scale bar -->
|
|
<line x1="1700" y1="-200" x2="2700" y2="-200" stroke="#333" stroke-width="8" />
|
|
<line x1="1700" y1="calc(-200 - 25)" x2="1700" y2="calc(-200 + 25)" stroke="#333"
|
|
stroke-width="8" />
|
|
<line x1="2200" y1="calc(-200 - 15)" x2="2200" y2="calc(-200 + 15)" stroke="#333"
|
|
stroke-width="5" />
|
|
<line x1="2700" y1="calc(-200 - 25)" x2="2700" y2="calc(-200 + 25)" stroke="#333"
|
|
stroke-width="8" />
|
|
<g transform="translate(1700, -260) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">0</text>
|
|
</g>
|
|
<g transform="translate(2200, -260) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">500</text>
|
|
</g>
|
|
<g transform="translate(2700, -260) scale(1,-1)">
|
|
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">1000mm</text>
|
|
</g>
|
|
|
|
</g>
|
|
|
|
<!-- Legend (outside the flipped group, normal SVG coords) -->
|
|
<g transform="translate(2650, 2400)">
|
|
<text x="0" y="0" font-size="50" font-weight="bold" fill="#333">Legend</text>
|
|
<line x1="0" y1="60" x2="80" y2="60" stroke="#333" stroke-width="14" />
|
|
<text x="100" y="75" font-size="40" fill="#555">Wall</text>
|
|
<line x1="0" y1="120" x2="80" y2="120" stroke="#333" stroke-width="8" stroke-dasharray="20,10" />
|
|
<text x="100" y="135" font-size="40" fill="#555">Shower</text>
|
|
<circle cx="40" cy="180" r="18" fill="#4a90d9" />
|
|
<text x="100" y="195" font-size="40" fill="#555">Water</text>
|
|
<rect x="0" y="225" width="80" height="40" fill="#e85d3a" fill-opacity="0.4" stroke="#e85d3a"
|
|
stroke-width="4" />
|
|
<text x="100" y="255" font-size="40" fill="#555">Radiator</text>
|
|
<line x1="0" y1="300" x2="80" y2="300" stroke="#333" stroke-width="14" stroke-dasharray="20,12" />
|
|
<text x="100" y="315" font-size="40" fill="#555">Door</text>
|
|
<circle cx="40" cy="360" r="18" fill="none" stroke="#f5a623" stroke-width="4" />
|
|
<text x="100" y="375" font-size="40" fill="#555">Light</text>
|
|
<rect x="15" y="405" width="50" height="50" fill="none" stroke="#888" stroke-width="3"
|
|
stroke-dasharray="8,5" />
|
|
<line x1="15" y1="405" x2="65" y2="455" stroke="#888" stroke-width="2" />
|
|
<line x1="65" y1="405" x2="15" y2="455" stroke="#888" stroke-width="2" />
|
|
<text x="100" y="440" font-size="40" fill="#555">Vent</text>
|
|
</g>
|
|
|
|
</svg> |