Vai ai contenuti

GUIDA ALLA SCELTA - Piatti Idraulica Bergamo – Impianti Idraulici e Riscaldamento

Teresa
Online
00:00
Ciao come ti posso essere utile ?
H V A C pro
Salta menù
Salta menù

Trova la soluzione giusta per la tua casa

Ti guidiamo nella scelta di impianti e interventi in meno di 1 minuto
👉 Come possiamo aiutarti oggi?

Trova la soluzione giusta per la tua casa

Voglio Sostituire un Sanitario









import React, { useState, useEffect, useRef } from 'react'; import { Printer, Maximize, FileText, Info } from 'lucide-react'; const App = () => { const [entities, setEntities] = useState([]); const [blocks, setBlocks] = useState({}); const [viewBox, setViewBox] = useState({ x: 0, y: 0, width: 100, height: 100 }); const [loading, setLoading] = useState(true); const svgRef = useRef(null); // Il contenuto del file DXF fornito dall'utente const dxfContent = `0 SECTION 2 HEADER 9 $ACADVER 1 AC1009 9 $HANDLING 70 1 9 $HANDSEED 5 145 0 ENDSEC 0 SECTION 2 TABLES 0 TABLE 2 LAYER 0 LAYER 2 0 62 1 70 0 6 CONTINUOUS 0 LAYER 2 PARETI 62 1 70 0 6 CONTINUOUS 0 LAYER 2 VESTE_PARETI 62 1 70 0 6 CONTINUOUS 0 LAYER 2 ASSI_PARETI 62 -1 70 0 6 CONTINUOUS 0 LAYER 2 DATI_PARETI 62 1 70 0 6 CONTINUOUS 0 LAYER 2 TRATTEGGI_PARETI 62 1 70 0 6 CONTINUOUS 0 LAYER 2 ASSI_PARETI_NUOVO 62 -1 70 0 6 CONTINUOUS 0 LAYER 2 VESTE_PARETI_NUOVO 62 1 70 0 6 CONTINUOUS 0 ENDTAB 0 TABLE 2 STYLE 0 ENDTAB 0 ENDSEC 0 SECTION 2 BLOCKS 0 BLOCK 2 00451 3 00451 8 0 70 66 10 0.0 20 0.0 5 22 0 CIRCLE 10 11.250000 20 10.000000 40 6.250000 8 0 62 5 5 23 0 CIRCLE 10 28.750000 20 10.000000 40 6.250000 8 0 62 5 5 24 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 25 0 CIRCLE 10 20.000000 20 -20.000000 40 1.250000 8 0 62 1 5 26 0 CIRCLE 10 28.750000 20 -8.750000 40 6.250000 8 0 62 5 5 27 0 CIRCLE 10 11.250000 20 -8.750000 40 6.250000 8 0 62 5 5 28 0 LINE 10 0.000000 20 -20.000000 11 40.000000 21 -20.000000 8 0 62 5 5 29 0 LINE 10 40.000000 20 -20.000000 11 40.000000 21 20.000000 8 0 62 5 5 2A 0 LINE 10 40.000000 20 20.000000 11 0.000000 21 20.000000 8 0 62 5 5 2B 0 LINE 10 0.000000 20 20.000000 11 0.000000 21 -20.000000 8 0 62 5 5 2C 0 ARC 10 24.309632 20 -4.351633 40 0.537321 50 180.000000 51 0.000000 8 0 62 256 5 2D 0 ARC 10 24.309632 20 -4.351633 40 0.537321 50 0.000000 51 180.000000 8 0 62 256 5 2E 0 TEXT 10 14.792330 20 -1.914988 40 4.000000 1 SCF 50 0.000000 41 1.000000 72 0 73 1 11 14.792330 21 -1.914988 8 0 62 5 5 2F 0 ARC 10 15.986908 20 5.922721 40 0.537321 50 180.000000 51 0.000000 8 0 62 5 5 30 0 ARC 10 15.986908 20 5.922721 40 0.537321 50 0.000000 51 180.000000 8 0 62 5 5 31 0 ARC 10 24.189964 20 5.725825 40 0.537321 50 180.000000 51 0.000000 8 0 62 5 5 32 0 ARC 10 24.189964 20 5.725825 40 0.537321 50 0.000000 51 180.000000 8 0 62 5 5 33 0 ARC 10 15.579737 20 -4.242687 40 0.537321 50 180.000000 51 0.000000 8 0 62 5 5 34 0 ARC 10 15.579737 20 -42.42687 40 0.537321 50 0.000000 51 180.000000 8 0 62 5 5 35 0 ARC 10 24.309632 20 -4.351633 40 0.537321 50 180.000000 51 0.000000 8 0 62 5 5 36 0 ARC 10 24.309632 20 -4.351633 40 0.537321 50 0.000000 51 180.000000 8 0 62 5 5 37 0 ENDBLK 0 BLOCK 2 94005 3 94005 8 0 70 66 10 0.0 20 0.0 5 38 0 LINE 10 0.000000 20 0.000000 11 270.000000 21 0.000000 8 0 62 7 5 39 0 LINE 10 20.000000 20 10.000000 11 270.000000 21 10.000000 8 0 62 7 5 3A 0 LINE 10 20.000000 20 10.000000 11 20.000000 21 15.000000 8 0 62 7 5 3B 0 LINE 10 20.000000 20 15.000000 11 220.000000 21 60.000000 8 0 62 7 5 3C 0 LINE 10 -15.000000 20 17.125000 11 220.000000 21 70.000000 8 0 62 7 5 3D 0 LINE 10 -15.000000 20 17.125000 11 -15.000000 21 6.457338 8 0 62 7 5 3E 0 LINE 10 -15.000000 20 6.457338 11 0.000000 21 6.457338 8 0 62 7 5 3F 0 LINE 10 0.000000 20 6.457338 11 0.000000 21 0.000000 8 0 62 7 5 40 0 LINE 10 322.141582 20 47.018144 11 220.000000 21 70.000000 8 0 62 7 5 41 0 LINE 10 320.000000 20 37.500000 11 220.000000 21 60.000000 8 0 62 7 5 42 0 LINE 10 20.000000 20 0.000000 11 -0.000000 21 0.000000 8 0 62 7 5 43 0 ENDBLK 0 BLOCK 2 00870 3 00870 8 0 70 66 10 0.0 20 0.0 5 44 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 45 0 CIRCLE 10 20.000000 20 0.000000 40 1.250000 8 0 62 1 5 46 0 LINE 10 0.000000 20 0.000000 11 2.500000 21 0.000000 8 0 62 5 5 47 0 LINE 10 18.000000 20 0.000000 11 20.000000 21 0.000000 8 0 62 5 5 48 0 LINE 10 3.750000 20 2.500000 11 5.250000 21 -2.500000 8 0 62 5 5 49 0 LINE 10 5.250000 20 -2.500000 11 6.500000 21 2.500000 8 0 62 5 5 4A 0 LINE 10 6.500000 20 2.500000 11 8.000000 21 -2.500000 8 0 62 5 5 4B 0 LINE 10 8.000000 20 -2.500000 11 9.250000 21 2.500000 8 0 62 5 5 4C 0 LINE 10 9.250000 20 2.500000 11 10.750000 21 -2.500000 8 0 62 5 5 4D 0 LINE 10 10.750000 20 -2.500000 11 12.250000 21 2.500000 8 0 62 5 5 4E 0 LINE 10 12.250000 20 2.500000 11 14.000000 21 -2.500000 8 0 62 5 5 4F 0 LINE 10 14.000000 20 -2.500000 11 15.250000 21 2.500000 8 0 62 5 5 50 0 LINE 10 15.250000 20 2.500000 11 17.250000 21 -2.500000 8 0 62 5 5 51 0 LINE 10 17.250000 20 -2.500000 11 18.000000 21 0.000000 8 0 62 5 5 52 0 LINE 10 2.500000 20 0.000000 11 3.750000 21 2.500000 8 0 62 5 5 53 0 ENDBLK 0 BLOCK 2 00880 3 00880 8 0 70 66 10 0.0 20 0.0 5 54 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 55 0 CIRCLE 10 20.000000 20 0.000000 40 1.250000 8 0 62 1 5 56 0 POINT 10 11.250000 20 0.000000 8 0 62 5 5 57 0 LINE 10 3.750000 20 3.750000 11 3.750000 21 -3.750000 8 0 62 5 5 58 0 LINE 10 3.750000 20 -3.750000 11 16.250000 21 3.750000 8 0 62 5 5 59 0 LINE 10 16.250000 20 3.750000 11 16.250000 21 -3.750000 8 0 62 5 5 5A 0 LINE 10 16.250000 20 -3.750000 11 3.750000 21 3.750000 8 0 62 5 5 5B 0 LINE 10 3.750000 20 0.000000 11 0.000000 21 0.000000 8 0 62 5 5 5C 0 LINE 10 16.250000 20 0.000000 11 20.000000 21 0.000000 8 0 62 5 5 5D 0 ENDBLK 0 BLOCK 2 94007 3 94007 8 0 70 66 10 0.0 20 0.0 5 5E 0 LINE 10 -80.000000 20 0.000000 11 0.000000 21 0.000000 8 0 62 7 5 5F 0 LINE 10 20.000000 20 0.000000 11 270.000000 21 0.000000 8 0 62 7 5 60 0 LINE 10 20.000000 20 0.000000 11 20.000000 21 10.000000 8 0 62 7 5 61 0 LINE 10 0.000000 20 10.000000 11 0.000000 21 0.000000 8 0 62 7 5 62 0 LINE 10 -71.000000 20 10.000000 11 270.000000 21 10.000000 8 0 62 7 5 63 0 LINE 10 0.000000 20 4.470000 11 20.000000 21 4.470000 8 0 62 7 5 64 0 LINE 10 13.815000 20 4.470000 11 13.815000 21 10.000000 8 0 62 7 5 65 0 LINE 10 0.000000 20 143.217500 11 0.000000 21 210.000000 8 0 62 7 5 66 0 LINE 10 6.512500 20 0.000000 11 6.512500 21 4.470000 8 0 62 7 5 67 0 LINE 10 20.000000 20 210.000000 11 20.000000 21 143.217500 8 0 62 7 5 68 0 LINE 10 16.000000 20 143.217500 11 16.000000 21 10.000000 8 0 62 7 5 69 0 LINE 10 11.118281 20 143.217500 11 11.118281 21 10.000000 8 0 62 7 5 6A 0 LINE 10 -80.000000 20 0.000000 11 -80.000000 21 10.000000 8 0 62 7 5 6B 0 LINE 10 -76.000000 20 10.000000 11 -76.000000 21 90.000000 8 0 62 7 5 6C 0 LINE 10 -76.000000 20 90.000000 11 -71.000000 21 90.000000 8 0 62 7 5 6D 0 LINE 10 -71.000000 20 90.000000 11 -71.000000 21 10.000000 8 0 62 7 5 6E 0 LINE 10 -0.000000 20 143.217500 11 20.000000 21 143.217500 8 0 62 7 5 6F 0 LINE 10 -80.000000 20 10.000000 11 -76.000000 21 10.000000 8 0 62 7 5 70 0 LINE 10 6.512500 20 143.217500 11 6.512500 21 150.520000 8 0 62 7 5 71 0 LINE 10 13.815001 20 194.335000 11 13.815001 21 201.637500 8 0 62 7 5 72 0 LINE 10 0.000000 20 150.520000 11 20.000000 21 150.520000 8 0 62 7 5 73 0 LINE 10 0.000000 20 165.125000 11 20.000000 21 165.125000 8 0 62 7 5 74 0 LINE 10 0.000000 20 157.822500 11 20.000000 21 157.822500 8 0 62 7 5 75 0 LINE 10 0.000000 20 187.032500 11 20.000000 21 187.032500 8 0 62 7 5 76 0 LINE 10 0.000000 20 179.730000 11 20.000000 21 179.730000 8 0 62 7 5 77 0 LINE 10 0.000000 20 194.335000 11 20.000000 21 194.335000 8 0 62 7 5 78 0 LINE 10 0.000000 20 172.427500 11 20.000000 21 172.427500 8 0 62 7 5 79 0 LINE 10 6.512500 20 157.822500 11 6.512500 21 165.125000 8 0 62 7 5 7A 0 LINE 10 6.512500 20 172.427500 11 6.512500 21 179.730000 8 0 62 7 5 7B 0 LINE 10 6.512500 20 187.032500 11 6.512500 21 194.335000 8 0 62 7 5 7C 0 LINE 10 13.815000 20 165.125000 11 13.815000 21 172.427500 8 0 62 7 5 7D 0 LINE 10 13.815000 20 150.520000 11 13.815000 21 157.822500 8 0 62 7 5 7E 0 LINE 10 13.815000 20 179.730000 11 13.815000 21 187.032500 8 0 62 7 5 7F 0 LINE 10 0.000001 20 201.637500 11 20.000001 21 201.637500 8 0 62 7 5 80 0 LINE 10 0.000001 20 208.940000 11 20.000001 21 208.940000 8 0 62 7 5 81 0 LINE 10 6.512501 20 201.637500 11 6.512501 21 208.940000 8 0 62 7 5 82 0 LINE 10 13.815001 20 208.940000 11 13.815001 21 210.000000 8 0 62 7 5 83 0 ENDBLK 0 BLOCK 2 90400 3 90400 8 0 70 66 10 0.0 20 0.0 5 84 0 LINE 10 0.000000 20 7.357912 11 40.030548 21 7.357912 8 0 62 5 5 85 0 LINE 10 0.000000 20 7.357912 11 0.000000 21 0.000000 8 0 62 5 5 86 0 LINE 10 40.030548 20 7.357912 11 40.030548 21 0.000000 8 0 62 5 5 87 0 LINE 10 0.000000 20 0.000000 11 40.030548 21 0.000000 8 0 62 5 5 88 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 89 0 LINE 10 36.061004 20 3.288305 11 36.109398 21 2.979284 8 0 62 5 5 8A 0 LINE 10 36.109398 20 2.979284 11 36.188730 21 2.685673 8 0 62 5 5 8B 0 LINE 10 36.188730 20 2.685673 11 36.297046 21 2.414703 8 0 62 5 5 8C 0 LINE 10 36.297046 20 2.414703 11 36.431680 21 2.173044 8 0 62 5 5 8D 0 LINE 10 36.431680 20 2.173044 11 36.589315 21 1.966648 8 0 62 5 5 8E 0 LINE 10 36.589315 20 1.966648 11 36.766071 21 1.800597 8 0 62 5 5 8F 0 LINE 10 36.766071 20 1.800597 11 36.957595 21 1.678980 8 0 62 5 5 90 0 LINE 10 36.957595 20 1.678980 11 37.159172 21 1.604790 8 0 62 5 5 91 0 LINE 10 37.159172 20 1.604790 11 37.365837 21 1.579856 8 0 62 5 5 92 0 LINE 10 37.365837 20 1.579856 11 37.572502 21 1.604790 8 0 62 5 5 93 0 LINE 10 37.572502 20 1.604790 11 37.774079 21 1.678980 8 0 62 5 5 94 0 LINE 10 37.774079 20 1.678980 11 37.965603 21 1.800597 8 0 62 5 5 95 0 LINE 10 37.965603 20 1.800597 11 38.142359 21 1.966648 8 0 62 5 5 96 0 LINE 10 38.142359 20 1.966648 11 38.299995 21 2.173044 8 0 62 5 5 97 0 LINE 10 38.299995 20 2.173044 11 38.434628 21 2.414703 8 0 62 5 5 98 0 LINE 10 38.434628 20 2.414703 11 38.542944 21 2.685673 8 0 62 5 5 99 0 LINE 10 38.542944 20 2.685673 11 38.622276 21 2.979284 8 0 62 5 5 9A 0 LINE 10 38.622276 20 2.979284 11 38.670670 21 3.288305 8 0 62 5 5 9B 0 LINE 10 38.670670 20 3.288305 11 38.686935 21 3.605127 8 0 62 5 5 9C 0 LINE 10 38.686935 20 3.605127 11 38.670670 21 3.921950 8 0 62 5 5 9D 0 LINE 10 38.670670 20 3.921950 11 38.622276 21 4.230971 8 0 62 5 5 9E 0 LINE 10 38.622276 20 4.230971 11 38.542944 21 4.524581 8 0 62 5 5 9F 0 LINE 10 38.542944 20 4.524581 11 38.434628 21 4.795552 8 0 62 5 5 A0 0 LINE 10 38.434628 20 4.795552 11 38.299995 21 5.037211 8 0 62 5 5 A1 0 LINE 10 38.299995 20 5.037211 11 38.142359 21 5.243607 8 0 62 5 5 A2 0 LINE 10 38.142359 20 5.243607 11 37.965603 21 5.409658 8 0 62 5 5 A3 0 LINE 10 37.965603 20 5.409658 11 37.774079 21 5.531275 8 0 62 5 5 A4 0 LINE 10 37.774079 20 5.531275 11 37.572502 21 5.605465 8 0 62 5 5 A5 0 LINE 10 37.572502 20 5.605465 11 37.365837 21 5.630399 8 0 62 5 5 A6 0 LINE 10 37.365837 20 5.630399 11 37.159172 21 5.605465 8 0 62 5 5 A7 0 LINE 10 37.159172 20 5.605465 11 36.957595 21 5.531275 8 0 62 5 5 A8 0 LINE 10 36.957595 20 5.531275 11 36.766071 21 5.409658 8 0 62 5 5 A9 0 LINE 10 36.766071 20 5.409658 11 36.589315 21 5.243607 8 0 62 5 5 AA 0 LINE 10 36.589315 20 5.243607 11 36.431680 21 5.037211 8 0 62 5 5 AB 0 LINE 10 36.431680 20 5.037211 11 36.297046 21 4.795552 8 0 62 5 5 AC 0 LINE 10 36.297046 20 4.795552 11 36.188730 21 4.524581 8 0 62 5 5 AD 0 LINE 10 36.188730 20 4.524581 11 36.109398 21 4.230971 8 0 62 5 5 AE 0 LINE 10 36.109398 20 4.230971 11 36.061004 21 3.921950 8 0 62 5 5 AF 0 LINE 10 36.061004 20 3.921950 11 36.044739 21 3.605127 8 0 62 5 5 B0 0 LINE 10 36.044739 20 3.605127 11 36.061004 21 3.288305 8 0 62 5 5 B1 0 LINE 10 20.041745 20 10.802995 11 16.582878 21 4.873195 8 0 62 5 5 B2 0 LINE 10 23.447669 20 4.842629 11 20.041745 21 10.802995 8 0 62 5 5 B3 0 LINE 10 16.582878 20 4.873195 11 23.447669 21 4.842629 8 0 62 5 5 B4 0 ENDBLK 0 BLOCK 2 00062 3 00062 8 0 70 66 10 0.0 20 0.0 5 B5 0 LINE 10 0.000000 20 0.000000 11 20.000000 21 0.000000 8 0 62 5 5 B6 0 LINE 10 20.000000 20 0.000000 11 20.000000 21 40.000000 8 0 62 5 5 B7 0 LINE 10 20.000000 20 40.000000 11 0.000000 21 40.000000 8 0 62 5 5 B8 0 LINE 10 0.000000 20 40.000000 11 0.000000 21 0.000000 8 0 62 5 5 B9 0 LINE 10 0.000000 20 25.000000 11 20.000000 21 25.000000 8 0 62 5 5 BA 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 BB 0 CIRCLE 10 20.000000 20 0.000000 40 1.250000 8 0 62 1 5 BC 0 LINE 10 6.250000 20 21.250000 11 2.500000 21 21.250000 8 0 62 5 5 BD 0 LINE 10 2.500000 20 21.250000 11 2.500000 21 11.250000 8 0 62 5 5 BE 0 LINE 10 2.500000 20 11.250000 11 6.250000 21 11.250000 8 0 62 5 5 BF 0 LINE 10 6.250000 20 11.250000 11 6.250000 21 15.000000 8 0 62 5 5 C0 0 LINE 10 6.250000 20 15.000000 11 5.000000 21 15.000000 8 0 62 5 5 C1 0 LINE 10 8.750000 20 11.250000 11 8.750000 21 21.250000 8 0 62 5 5 C2 0 LINE 10 8.750000 20 21.250000 11 12.500000 21 21.250000 8 0 62 5 5 C3 0 LINE 10 12.500000 20 21.250000 11 12.500000 21 11.250000 8 0 62 5 5 C4 0 LINE 10 12.500000 20 11.250000 11 12.500000 21 16.250000 8 0 62 5 5 C5 0 LINE 10 12.500000 20 16.250000 11 8.750000 21 16.250000 8 0 62 5 5 C6 0 LINE 10 18.750000 20 21.250000 11 15.000000 21 21.250000 8 0 62 5 5 C7 0 LINE 10 15.000000 20 21.250000 11 15.000000 21 16.250000 8 0 62 5 5 C8 0 LINE 10 15.000000 20 16.250000 11 18.750000 21 16.250000 8 0 62 5 5 C9 0 LINE 10 18.750000 20 16.250000 11 18.750000 21 11.250000 8 0 62 5 5 CA 0 LINE 10 6.250000 20 21.250000 11 2.500000 21 21.250000 8 0 62 5 5 CB 0 LINE 10 2.500000 20 21.250000 11 2.500000 21 11.250000 8 0 62 5 5 CC 0 LINE 10 2.500000 20 11.250000 11 6.250000 21 11.250000 8 0 62 5 5 CD 0 LINE 10 6.250000 20 11.250000 11 6.250000 21 15.000000 8 0 62 5 5 CE 0 LINE 10 6.250000 20 15.000000 11 5.000000 21 15.000000 8 0 62 5 5 CF 0 LINE 10 8.750000 20 11.250000 11 8.750000 21 21.250000 8 0 62 5 5 D0 0 LINE 10 8.750000 20 21.250000 11 12.500000 21 21.250000 8 0 62 5 5 D1 0 LINE 10 12.500000 20 21.250000 11 12.500000 21 11.250000 8 0 62 5 5 D2 0 LINE 10 12.500000 20 11.250000 11 12.500000 21 16.250000 8 0 62 5 5 D3 0 LINE 10 12.500000 20 16.250000 11 8.750000 21 16.250000 8 0 62 5 5 D4 0 LINE 10 18.750000 20 21.250000 11 15.000000 21 21.250000 8 0 62 5 5 D5 0 LINE 10 15.000000 20 21.250000 11 15.000000 21 16.250000 8 0 62 5 5 D6 0 LINE 10 15.000000 20 16.250000 11 18.750000 21 16.250000 8 0 62 5 5 D7 0 LINE 10 18.750000 20 16.250000 11 18.750000 21 11.250000 8 0 62 5 5 D8 0 LINE 10 15.000000 20 11.250000 11 18.750000 21 11.250000 8 0 62 5 5 D9 0 ENDBLK 0 BLOCK 2 00882 3 00882 8 0 70 66 10 0.0 20 0.0 5 DA 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 DB 0 CIRCLE 10 20.000000 20 0.000000 40 1.250000 8 0 62 1 5 DC 0 LINE 10 3.750000 20 3.750000 11 3.750000 21 -3.750000 8 0 62 5 5 DD 0 LINE 10 3.750000 20 -3.750000 11 16.250000 21 3.750000 8 0 62 5 5 DE 0 LINE 10 16.250000 20 3.750000 11 16.250000 21 -3.750000 8 0 62 5 5 DF 0 LINE 10 16.250000 20 -3.750000 11 3.750000 21 3.750000 8 0 62 5 5 E0 0 LINE 10 3.750000 20 0.000000 11 0.000000 21 0.000000 8 0 62 5 5 E1 0 LINE 10 16.250000 20 0.000000 11 20.000000 21 0.000000 8 0 62 5 5 E2 0 LINE 10 10.000000 20 0.000000 11 10.000000 21 5.000000 8 0 62 5 5 E3 0 LINE 10 10.000000 20 5.000000 11 2.000000 21 5.000000 8 0 62 5 5 E4 0 LINE 10 10.000000 20 5.000000 11 11.000000 21 5.000000 8 0 62 5 5 E5 0 LINE 10 13.750000 20 -2.250000 11 13.750000 21 -6.850000 8 0 62 5 5 E6 0 LINE 10 16.250000 20 -6.850000 11 16.250000 21 -5.350000 8 0 62 5 5 E7 0 LINE 10 16.250000 20 -6.850000 11 11.250000 21 -6.850000 8 0 62 5 5 E8 0 LINE 10 11.250000 20 -6.850000 11 11.250000 21 -5.350000 8 0 62 5 5 E9 0 ENDBLK 0 BLOCK 2 00380 3 00380 8 0 70 66 10 0.0 20 0.0 5 EA 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 EB 0 LINE 10 0.000000 20 0.000000 11 10.000000 21 0.000000 8 0 62 5 5 EC 0 LINE 10 10.000000 20 0.000000 11 10.000000 21 10.000000 8 0 62 5 5 ED 0 CIRCLE 10 10.000000 20 10.000000 40 1.250000 8 0 62 1 5 EE 0 ENDBLK 0 BLOCK 2 00800 3 00800 8 0 70 66 10 0.0 20 0.0 5 EF 0 LINE 10 0.000000 20 0.000000 11 100.000000 21 0.000000 8 0 62 5 5 F0 0 ENDBLK 0 BLOCK 2 00390 3 00390 8 0 70 66 10 0.0 20 0.0 5 F1 0 LINE 10 0.000000 20 1.000000 11 0.000000 21 2.000000 8 0 62 5 5 F2 0 LINE 10 0.000000 20 2.000000 11 20.000000 21 2.000000 8 0 62 5 5 F3 0 LINE 10 20.000000 20 2.000000 11 20.000000 21 1.000000 8 0 62 5 5 F4 0 LINE 10 20.000000 20 1.000000 11 0.000000 21 1.000000 8 0 62 5 5 F5 0 LINE 10 0.000000 20 1.000000 11 0.000000 21 2.000000 8 0 62 5 5 F6 0 LINE 10 0.000000 20 -1.000000 11 20.000000 21 -1.000000 8 0 62 5 5 F7 0 LINE 10 20.000000 20 -1.000000 11 20.000000 21 -2.000000 8 0 62 5 5 F8 0 LINE 10 20.000000 20 -2.000000 11 0.000000 21 -2.000000 8 0 62 5 5 F9 0 LINE 10 0.000000 20 -2.000000 11 0.000000 21 -1.000000 8 0 62 5 5 FA 0 CIRCLE 10 0.000000 20 0.000000 40 1.000000 8 0 62 1 5 FB 0 LINE 10 0.000000 20 2.000000 11 0.000000 21 -2.000000 8 0 62 5 5 FC 0 LINE 10 20.000000 20 2.000000 11 20.000000 21 -2.000000 8 0 62 5 5 FD 0 LINE 10 0.000000 20 2.000000 11 20.000000 21 2.000000 8 0 62 5 5 FE 0 LINE 10 20.000000 20 1.000000 11 0.000000 21 1.000000 8 0 62 5 5 FF 0 CIRCLE 10 20.000000 20 0.000000 40 1.000000 8 0 62 1 5 100 0 LINE 10 0.000000 20 2.000000 11 20.000000 21 2.000000 8 0 62 5 5 101 0 LINE 10 20.000000 20 2.000000 11 20.000000 21 1.000000 8 0 62 5 5 102 0 LINE 10 20.000000 20 1.000000 11 0.000000 21 1.000000 8 0 62 5 5 103 0 ENDBLK 0 BLOCK 2 00930 3 00930 8 0 70 66 10 0.0 20 0.0 5 104 0 CIRCLE 10 0.000000 20 0.000000 40 1.250000 8 0 62 1 5 105 0 CIRCLE 10 20.000000 20 0.000000 40 1.250000 8 0 62 1 5 106 0 POINT 10 11.250000 20 0.000000 8 0 62 5 5 107 0 LINE 10 3.750000 20 3.750000 11 3.750000 21 -3.750000 8 0 62 5 5 108 0 LINE 10 3.750000 20 -3.750000 11 16.250000 21 3.750000 8 0 62 5 5 109 0 LINE 10 16.250000 20 3.750000 11 16.250000 21 -3.750000 8 0 62 5 5 10A 0 LINE 10 16.250000 20 -3.750000 11 3.750000 21 3.750000 8 0 62 5 5 10B 0 LINE 10 3.750000 20 0.000000 11 0.000000 21 0.000000 8 0 62 5 5 10C 0 LINE 10 16.250000 20 0.000000 11 20.000000 21 0.000000 8 0 62 5 5 10D 0 CIRCLE 10 10.000000 20 0.000000 40 2.500000 8 0 62 5 5 10E 0 ENDBLK 0 ENDSEC 0 SECTION 2 ENTITIES 0 INSERT 2 00451 66 1 10 335.000000 20 -245.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 1 0 SEQEND 5 10F 0 TEXT 10 230.392305 20 -459.000000 40 4.571429 1 P6 50 0.000000 41 1.000000 72 1 73 1 11 230.392305 21 -459.000000 8 0 62 1 5 110 0 INSERT 2 00380 66 1 10 230.000000 20 -435.000000 41 1.000000 42 1.000000 50 180.000000 8 0 62 7 5 111 0 SEQEND 5 112 0 TEXT 10 226.000000 20 -450.392305 40 4.571429 1 P7 50 0.000000 41 1.000000 72 1 73 1 11 226.000000 21 -450.392305 8 0 62 1 5 113 0 INSERT 2 00380 66 1 10 230.000000 20 -435.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 114 0 SEQEND 5 115 0 TEXT 10 236.000000 20 -445.392305 40 4.571429 1 P8 50 0.000000 41 1.000000 72 1 73 1 11 236.000000 21 -445.392305 8 0 62 1 5 116 0 INSERT 2 00800 66 1 10 240.000000 20 -430.000000 41 1.000000 42 1.000000 50 90.000000 8 0 62 7 5 117 0 SEQEND 5 118 0 TEXT 10 146.000000 20 -435.392305 40 4.571429 1 P9 50 0.000000 41 1.000000 72 1 73 1 11 146.000000 21 -435.392305 8 0 62 1 5 119 0 INSERT 2 00800 66 1 10 240.000000 20 -350.000000 41 1.000000 42 1.000000 50 90.000000 8 0 62 7 5 11A 0 SEQEND 5 11B 0 TEXT 10 250.392305 20 -344.000000 40 4.571429 1 P10 50 0.000000 41 1.000000 72 1 73 1 11 250.392305 21 -344.000000 8 0 62 1 5 11C 0 INSERT 2 00380 66 1 10 250.000000 20 -245.000000 41 1.000000 42 1.000000 50 180.000000 8 0 62 7 5 11D 0 SEQEND 5 11E 0 TEXT 10 243.999999 20 -234.607696 40 4.571429 1 P11 50 0.000000 41 1.000000 72 1 73 1 11 243.999999 21 -234.607696 8 0 62 1 5 11F 0 INSERT 2 00800 66 1 10 240.000000 20 -245.000000 41 0.500000 42 0.500000 50 0.000000 8 0 62 7 5 120 0 SEQEND 5 121 0 TEXT 10 191.000000 20 -255.392305 40 4.571429 1 P12 50 0.000000 41 1.000000 72 1 73 1 11 191.000000 21 -255.392305 8 0 62 1 5 122 0 INSERT 2 00390 66 1 10 260.000000 20 -245.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 123 0 SEQEND 5 124 0 TEXT 10 266.000000 20 -255.392305 40 4.571429 1 P13 50 0.000000 41 1.000000 72 1 73 1 11 266.000000 21 -255.392305 8 0 62 1 5 125 0 TEXT 10 341.000000 20 -255.392305 40 4.571429 1 P1 50 0.000000 41 1.000000 72 1 73 1 11 341.000000 21 -255.392305 8 0 62 1 5 126 0 INSERT 2 00930 66 1 10 240.000000 20 -270.000000 41 1.000000 42 1.000000 50 270.000000 8 0 62 7 5 127 0 SEQEND 5 128 0 TEXT 10 246.000000 20 -280.392305 40 4.571429 1 P14 50 0.000000 41 1.000000 72 1 73 1 11 246.000000 21 -280.392305 8 0 62 1 5 129 0 INSERT 2 00870 66 1 10 310.000000 20 -245.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 12A 0 SEQEND 5 12B 0 TEXT 10 316.000000 20 -255.392305 40 4.571429 1 P2 50 0.000000 41 1.000000 72 1 73 1 11 316.000000 21 -255.392305 8 0 62 1 5 12C 0 INSERT 2 00880 66 1 10 285.000000 20 -245.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 12D 0 SEQEND 5 12E 0 TEXT 10 291.000000 20 -255.392305 40 4.571429 1 P3 50 0.000000 41 1.000000 72 1 73 1 11 291.000000 21 -255.392305 8 0 62 1 5 12F 0 INSERT 2 94007 66 1 10 255.000000 20 -310.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 130 0 SEQEND 5 131 0 INSERT 2 94005 66 1 10 255.000000 20 -105.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 132 0 SEQEND 5 133 0 LINE 10 265.000000 20 -305.000000 11 265.000000 21 -485.000000 8 ASSI_PARETI_NUOVO 62 0 5 134 0 LINE 10 255.000000 20 -305.000000 11 275.000000 21 -305.000000 8 ASSI_PARETI_NUOVO 62 3 5 135 0 LINE 10 275.000000 20 -485.000000 11 255.000000 21 -485.000000 8 ASSI_PARETI_NUOVO 62 4 5 136 0 POLYLINE 66 1 70 1 8 0 62 7 5 137 0 VERTEX 10 255.000000 20 -305.000000 8 0 62 7 5 138 0 VERTEX 10 275.000000 20 -305.000000 8 0 62 7 5 139 0 VERTEX 10 275.000000 20 -485.000000 8 0 62 7 5 13A 0 VERTEX 10 255.000000 20 -485.000000 8 0 62 7 5 13B 0 SEQEND 5 13C 0 INSERT 2 90400 66 1 10 335.000000 20 -210.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 13D 0 SEQEND 5 13E 0 TEXT 10 341.000000 20 -220.392305 40 4.571429 1 P4 50 0.000000 41 1.000000 72 1 73 1 11 341.000000 21 -220.392305 8 0 62 1 5 13F 0 INSERT 2 00062 66 1 10 205.000000 20 -505.000000 41 1.000000 42 1.000000 50 0.000000 8 0 62 7 5 140 0 SEQEND 5 141 0 TEXT 10 211.000000 20 -515.392305 40 4.571429 1 P5 50 0.000000 41 1.000000 72 1 73 1 11 211.000000 21 -515.392305 8 0 62 1 5 142 0 INSERT 2 00882 66 1 10 220.000000 20 -465.000000 41 1.000000 42 1.000000 50 90.000000 8 0 62 7 5 143 0 SEQEND 5 144 0 ENDSEC 0 EOF`; useEffect(() => { const parseReal = () => { const lines = dxfContent.split('\n').map(l => l.trim()); const blocksMap = {}; const entitiesList = []; let i = 0; const readGroup = () => { if (i >= lines.length) return null; const code = parseInt(lines[i++]); const value = lines[i++]; return { code, value }; }; const peekCode = () => { if (i >= lines.length) return null; return parseInt(lines[i]); }; const parseEntityBody = (type) => { const entity = { type }; while (i < lines.length) { if (peekCode() === 0) break; const group = readGroup(); if (!group) break; const { code, value } = group; if (code === 10) entity.x = parseFloat(value); if (code === 20) entity.y = parseFloat(value); if (code === 11) entity.x1 = parseFloat(value); if (code === 21) entity.y1 = parseFloat(value); if (code === 40) entity.r = parseFloat(value); if (code === 50) entity.angle = parseFloat(value); if (code === 51) entity.endAngle = parseFloat(value); if (code === 1) entity.text = String(value); if (code === 2) entity.blockName = value; if (code === 41) entity.scaleX = parseFloat(value); if (code === 42) entity.scaleY = parseFloat(value); if (code === 62) entity.colorIndex = parseInt(value); } return entity; }; let inEntities = false; let inBlocks = false; while (i < lines.length) { const group = readGroup(); if (!group) break; if (group.code === 0 && group.value === 'SECTION') { const next = readGroup(); if (next && next.value === 'BLOCKS') inBlocks = true; if (next && next.value === 'ENTITIES') inEntities = true; } else if (group.code === 0 && group.value === 'ENDSEC') { inBlocks = false; inEntities = false; } else if (inBlocks && group.code === 0 && group.value === 'BLOCK') { let blockName = ''; let blockEntities = []; while (i < lines.length) { const bGroup = readGroup(); if (!bGroup) break; if (bGroup.code === 0 && bGroup.value === 'ENDBLK') break; if (bGroup.code === 2) blockName = bGroup.value; if (bGroup.code === 0) { const entity = parseEntityBody(bGroup.value); if (entity) blockEntities.push(entity); } } if (blockName) blocksMap[blockName] = blockEntities; } else if (inEntities && group.code === 0) { const entity = parseEntityBody(group.value); if (entity) entitiesList.push(entity); } } setBlocks(blocksMap); setEntities(entitiesList); calculateBounds(entitiesList, blocksMap); setLoading(false); }; parseReal(); }, []); const calculateBounds = (ents, blks) => { let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; const processEntity = (e, offsetX = 0, offsetY = 0, scaleX = 1, scaleY = 1) => { const update = (x, y) => { if (isNaN(x) || isNaN(y)) return; minX = Math.min(minX, x); minY = Math.min(minY, y); maxX = Math.max(maxX, x); maxY = Math.max(maxY, y); }; if (e.type === 'LINE') { update(e.x * scaleX + offsetX, e.y * scaleY + offsetY); update(e.x1 * scaleX + offsetX, e.y1 * scaleY + offsetY); } else if (e.type === 'CIRCLE' || e.type === 'ARC') { const r = e.r || 0; update((e.x - r) * scaleX + offsetX, (e.y - r) * scaleY + offsetY); update((e.x + r) * scaleX + offsetX, (e.y + r) * scaleY + offsetY); } else if (e.type === 'INSERT') { const blockEnts = blks[e.blockName] || []; blockEnts.forEach(be => processEntity(be, e.x + offsetX, e.y + offsetY, e.scaleX || 1, e.scaleY || 1)); } else if (e.x !== undefined) { update(e.x * scaleX + offsetX, e.y * scaleY + offsetY); } }; ents.forEach(e => processEntity(e)); if (minX === Infinity) { setViewBox({ x: 0, y: 0, width: 500, height: 500 }); } else { const margin = 20; // Normalizzazione viewBox per SVG (Y invertita rispetto a DXF) setViewBox({ x: minX - margin, y: -(maxY + margin), width: (maxX - minX) + margin * 2, height: (maxY - minY) + margin * 2 }); } }; const getColor = (index) => { const colors = { 1: '#ff0000', 2: '#f6b93b', 3: '#00ff00', 4: '#00ffff', 5: '#0000ff', 6: '#ff00ff', 7: '#2c3e50' }; return colors[index] || '#333'; }; const renderEntity = (e, key) => { const color = getColor(e.colorIndex); const commonProps = { stroke: color, strokeWidth: "0.5", fill: "none" }; switch (e.type) { case 'LINE': return ; case 'CIRCLE': return ; case 'ARC': return ; case 'TEXT': return ( {String(e.text || '')} ); case 'INSERT': const blockEnts = blocks[e.blockName] || []; const rotation = e.angle || 0; return ( {blockEnts.map((be, i) => renderEntity(be, `be-${key}-${i}`))} ); default: return null; } }; const handlePrint = () => { // Breve ritardo per assicurarsi che il DOM sia stabile setTimeout(() => { window.print(); }, 200); }; if (loading) { return (

ELABORAZIONE PDF...

); } return (
{/* Header - Nasconde durante la stampa */}

Esportatore PDF Tecnico

Disegno: 0019-2026.dxf

{/* Drawing Space */}
{/* SVG Container - Forzato per la stampa */}
{/* Griglia Tecnica - Nasconde in stampa */} {entities.map((e, i) => renderEntity(e, `ent-${i}`))}
{/* Info Box - Nasconde in stampa */}
NOTE PER L'ESPORTAZIONE: Dopo aver cliccato "Esporta", assicurati di impostare Layout: Orizzontale e Margini: Nessuno nelle impostazioni della stampante.
{/* Stili CSS Critici per la stampa */}
); }; export default App;
Torna ai contenuti
Icona dell'applicazione
Piatti Idraulica Bergamo – Impianti Idraulici e Riscaldamento Installa questa applicazione sulla tua schermata principale per un'esperienza migliore
Tocca Pulsante di installazione su iOS poi "Aggiungi alla tua schermata"