ESERCITAZIONE PRATICA – IMPIANTO IDRAULICO

Anche questo lavoro consiste nel realizzare direttamente in linguaggio svg il disegno di  una piantina semplificata con la realizzazione di un impianto di riscaldamento e di adduzione idrica. Dopo aver realizzato questa esercitazione ho capito che il codice deve essere necessariamente abbinato a dei blocchetti realizzati con il CAD. Il lavoro è più veloce ed accurato. Codice esercitazione impianto idraulico
  1. % Autori
  2. % Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)
  3. % Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)
  4. % Impianto idraulico
  5. %
  6. function piantina ()
  7. global contatore
  8.  
  9. clc
  10. contatore = contatore +1
  11. testo = num2str(contatore);
  12. nomefile = ['c:\piantina_alunno_' testo '.svg'];
  13. nomefile1 = ['c:\piantina_alunno_' testo '.txt'];
  14.  
  15. fid = fopen([nomefile], 'wt');
  16. fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?-->  \n']);
  17. fprintf(fid, ['\n']);
  18. fprintf(fid, ['\n']);
  19. for i=1:1
  20.     for j=[1]
  21.         disegna_piantina (fid)
  22.     end
  23. end
  24. fprintf(fid, [' \n']);
  25. fclose(fid)
  26. stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A '  'C:\L_alunno_' testo '.pdf']
  27. dos(stringa_dos)
  28.  
  29. % -------------------------------------------------------------------------
  30.  
  31. function disegna_piantina (fid)
  32. global fid1
  33. global scala
  34. global spessore_muro
  35. global contatore
  36. global numero_elementi_termosifone
  37. global posizione_x_collettore_fredda 
  38. global posizione_y_collettore_fredda
  39. global posizione_y_collettore_calda
  40. global tick_tra_tubi
  41. global tick_tra_tubi_alti
  42. global lunghezza_camere_lato_alto
  43. global distanza_tra_coppia_tubi
  44. spazio_tra_testo = 100;
  45. cursore_per_scrittura = 200;
  46. giustificazione_sinistra = 100;
  47. spessore_muro = 0.1;
  48. scala = 100;
  49. pos_x = 4;
  50. pos_y = 13;
  51. distanza_quota = 1;
  52. [fid] = scrivere_fuori_scala (fid,1050,100 ,'middle','30',['Esercitazione']);
  53. [fid] = scrivere_fuori_scala (fid,1050,220 ,'middle','30',['Alunno _______________']);
  54. [fid] = scrivere_fuori_scala (fid,1450,220 ,'middle','35',['n°', num2str(contatore)]);
  55. [fid] = scrivere_fuori_scala (fid,100,2800 ,'left','30',['scala 1:100']);
  56.  
  57. numero_camere_lato_destro = 1+ceil(rand*2);
  58. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  59. [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','25',['numero_camere_lato_alto ' ,num2str(numero_camere_lato_destro)]);
  60. numero_camere_lato_basso = 4+round(1*rand) - numero_camere_lato_destro;
  61. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  62. [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','25',['numero_camere_lato_basso ' ,num2str(numero_camere_lato_basso)]);
  63. superficie_casa = 80+40*rand;
  64. larghezza_casa =  sqrt(superficie_casa)+rand*1-rand*1;
  65. lunghezza_casa = superficie_casa / larghezza_casa;
  66. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  67. [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','25',['Larghezza_casa = ' ,num2str(round(lunghezza_casa*100)), ' cm']);
  68. [fid] = scrivere_fuori_scala (fid,1500,2800 ,'right','30',['zzz']);
  69.  
  70. % [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','20',['Ogni locale ha una finestra per ogni lato del perimetro']);
  71. % cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  72. % 
  73. % [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','20',['Scegliere a piacere le dimensioni della finestra']);
  74. % 
  75. % cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  76. % [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','20',['In un lato a piacere del perimetro è presente un balcone con portefinestre']);
  77. % 
  78. % cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  79. % [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','20',['Posizionare a piacere il portone di accesso alla casa']);
  80.  
  81. posizione_corridoio = (40 + 20 * rand) * larghezza_casa / 100;
  82. larghezza_corridoio = 1.5 + 0.8*rand
  83. larghezza_camere_lato_basso = posizione_corridoio - larghezza_corridoio / 2
  84. lunghezza_camere_lato_alto   = larghezza_casa - (posizione_corridoio + larghezza_corridoio / 2)
  85. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  86. [fid] = scrivere_fuori_scala (fid,giustificazione_sinistra,cursore_per_scrittura ,'left','25',['Lunghezza_casa = ' ,num2str(round((lunghezza_camere_lato_alto+lunghezza_casa)*100)), ' cm']);
  87. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  88. vettore_camere_alte = [];
  89. vettore_camere_alte(1) = 0; 
  90. lunghezza_media_di_ogni_stanza = (lunghezza_casa - larghezza_camere_lato_basso) / numero_camere_lato_destro; 
  91. vettore_camere_alte(2) = larghezza_camere_lato_basso + larghezza_corridoio
  92.  
  93. for i = 3 : numero_camere_lato_destro   
  94.      vettore_camere_alte(i) = vettore_camere_alte(i-1) + lunghezza_media_di_ogni_stanza * (0.9 + 0.2 *rand);
  95. end
  96. vettore_camere_alte (numero_camere_lato_destro+1) = lunghezza_casa; 
  97.  
  98. for i = 1 : numero_camere_lato_destro   
  99.     fid = stanza (fid, pos_x, pos_y - lunghezza_camere_lato_alto, ...
  100.                        vettore_camere_alte(i+1)- vettore_camere_alte(i), lunghezza_camere_lato_alto, 0, 0, 0, 0.2);
  101.     [fid] = scrivere_quota (fid, pos_x + (vettore_camere_alte(i+1) - vettore_camere_alte(i))/2, pos_y - lunghezza_camere_lato_alto - distanza_quota ,0,'middle','25', vettore_camere_alte(i+1) - vettore_camere_alte(i));
  102.     superficie = lunghezza_camere_lato_alto * (vettore_camere_alte(i+1) - vettore_camere_alte(i));
  103. %    testo_superficie = [num2str(round(superficie*150)), ' W']
  104. %    [fid] = scrivere (fid, pos_x  +  posizione_corridoio + larghezza_corridoio / 2 + lunghezza_camere_lato_alto/2, pos_y + vettore_camere_alte(i) + (vettore_camere_alte(i+1) - vettore_camere_alte(i))/2,0,'middle','20', testo_superficie);
  105. end
  106.  
  107. [fid] = scrivere_quota (fid, pos_x  + 4 * distanza_quota + lunghezza_casa, pos_y + larghezza_corridoio + (lunghezza_casa-larghezza_corridoio)/2, 270,'middle','25', lunghezza_casa-larghezza_corridoio);
  108. [fid] = scrivere_quota (fid, pos_x  + 4 * distanza_quota + lunghezza_casa, pos_y + larghezza_corridoio/2, 270,'middle','25', larghezza_corridoio);
  109. [fid] = scrivere_quota (fid, pos_x  + 4 * distanza_quota + lunghezza_casa, pos_y - lunghezza_camere_lato_alto/2, 270,'middle','25', lunghezza_camere_lato_alto);
  110. [fid] = scrivere_quota (fid, pos_x  + 5 * distanza_quota + lunghezza_casa, pos_y - lunghezza_camere_lato_alto + (lunghezza_camere_lato_alto+lunghezza_casa)/2, 270,'middle','25', lunghezza_camere_lato_alto+lunghezza_casa);
  111.  
  112. vettore_camere_basse = [];
  113. vettore_camere_basse(1) = 0; 
  114. lunghezza_media_di_ogni_stanza = lunghezza_casa / numero_camere_lato_basso; 
  115. for i = 2 : numero_camere_lato_basso   
  116.      vettore_camere_basse(i) = vettore_camere_basse(i-1) + lunghezza_media_di_ogni_stanza * (0.9 + 0.2 *rand);
  117. end
  118. vettore_camere_basse (numero_camere_lato_basso+1) =  lunghezza_casa; 
  119.  
  120. for i = 1 : numero_camere_lato_basso   
  121.     fid = stanza(fid,pos_x, pos_y + vettore_camere_basse(i), ...
  122.                           larghezza_camere_lato_basso, vettore_camere_basse(i+1)-vettore_camere_basse(i), 0, 0, 0, 0.2);
  123. %    [fid] = scrivere_quota (fid,pos_x-distanza_quota, pos_y + vettore_camere_basse(i) + (vettore_camere_basse(i+1) - vettore_camere_basse(i))/2,90,'middle','20', vettore_camere_basse(i+1)-vettore_camere_basse(i));
  124.     lato = vettore_camere_basse(i+1)-vettore_camere_basse(i)
  125.     [fid] = scrivere_quota (fid, pos_x  - 1 * distanza_quota, pos_y + vettore_camere_basse(i)+lato/2, 270,'middle','25', vettore_camere_basse(i+1)-vettore_camere_basse(i));
  126.     superficie = larghezza_camere_lato_basso * (vettore_camere_basse(i+1) - vettore_camere_basse(i));
  127. %   testo_superficie = [num2str(round(superficie*120)), ' W']
  128. %   [fid] = scrivere (fid, pos_x  + larghezza_camere_lato_basso/2, pos_y + vettore_camere_basse(i) + (vettore_camere_basse(i+1) - vettore_camere_basse(i))/2,0,'middle','20', testo_superficie);
  129. end
  130.  
  131. % disegno del corridoio
  132.  
  133. [fid] = linea (fid,pos_x - larghezza_corridoio / 2, pos_y + lunghezza_casa + spessore_muro/2,...
  134.                    pos_x + larghezza_corridoio / 2 + spessore_muro/2, pos_y + lunghezza_casa + spessore_muro/2, 0, 0, 0, 0.2)
  135. [fid] = linea (fid,pos_x - larghezza_corridoio / 2, pos_y + lunghezza_casa - spessore_muro/2,...
  136.                    pos_x + larghezza_corridoio / 2 + spessore_muro/2, pos_y + lunghezza_casa - spessore_muro/2, 0, 0, 0, 0.2)
  137.  
  138. [fid] = linea (fid,pos_x + larghezza_corridoio / 2 + spessore_muro/2, pos_y + larghezza_corridoio + spessore_muro/2,...
  139.                    pos_x + larghezza_corridoio / 2 + spessore_muro/2, pos_y + lunghezza_casa + spessore_muro/2, 0, 0, 0, 0.2)
  140. [fid] = linea (fid,pos_x + larghezza_corridoio / 2 - spessore_muro/2, pos_y + larghezza_corridoio - spessore_muro/2,...
  141.                    pos_x + larghezza_corridoio / 2 - spessore_muro/2, pos_y + lunghezza_casa + spessore_muro/2, 0, 0, 0, 0.2)
  142.  
  143. [fid] = linea (fid,pos_x + posizione_corridoio + larghezza_corridoio / 2 + spessore_muro/2 , pos_y + larghezza_corridoio  + spessore_muro/2,...
  144.                    pos_x + lunghezza_casa + spessore_muro/2, pos_y + larghezza_corridoio  + spessore_muro/2, 0, 0, 0, 0.2)
  145. [fid] = linea (fid,pos_x + posizione_corridoio + larghezza_corridoio / 2 - spessore_muro/2 , pos_y + larghezza_corridoio  - spessore_muro/2,...
  146.                    pos_x + lunghezza_casa + spessore_muro/2, pos_y + larghezza_corridoio  - spessore_muro/2, 0, 0, 0, 0.2)
  147.  
  148. [fid] = linea (fid,pos_x + lunghezza_casa + spessore_muro/2, pos_y  + spessore_muro/2 ,...
  149.                    pos_x + lunghezza_casa + spessore_muro/2, pos_y + larghezza_corridoio + spessore_muro/2, 0, 0, 0, 0.2)      
  150. [fid] = linea (fid,pos_x + lunghezza_casa - spessore_muro/2, pos_y  + spessore_muro/2 ,...
  151.                    pos_x + lunghezza_casa - spessore_muro/2, pos_y + larghezza_corridoio + spessore_muro/2, 0, 0, 0, 0.2)      
  152.  
  153. % Quote basse       
  154. tick_quote_basse = 4
  155. [fid] = scrivere_quota (fid,pos_x + posizione_corridoio                                                                 , lunghezza_casa + pos_y + tick_quote_basse * distanza_quota,0,'middle','25',larghezza_corridoio);
  156. [fid] = scrivere_quota (fid,pos_x + larghezza_camere_lato_basso/2                                                    , lunghezza_casa + pos_y + tick_quote_basse* distanza_quota, 0,'middle','25',larghezza_camere_lato_basso);
  157. [fid] = scrivere_quota (fid,pos_x + posizione_corridoio + larghezza_corridoio/2 + (lunghezza_casa-posizione_corridoio-larghezza_corridoio/2)/2, lunghezza_casa + pos_y + tick_quote_basse*distanza_quota,0,'middle','25',lunghezza_casa-larghezza_camere_lato_basso-larghezza_corridoio);
  158. [fid] = scrivere_quota (fid,pos_x + lunghezza_casa/2                                                                    , lunghezza_casa + pos_y + (tick_quote_basse +1) * distanza_quota,0,'middle','25',lunghezza_casa);
  159.  
  160. num = 1000
  161. for i= 1:num
  162.        x1 = 1+i/(num)*18.5+rand*0.001;
  163.        y1 = 29.5; 
  164.        x2 = 1+(i+1)/(num)*18.5;
  165.        y2 = 29+rand*0.2;
  166.        [fid] = linea (fid,x1, y1, x2,y2,254,254,254,1);
  167. end
  168. posizione_x_collettore_fredda = pos_x + larghezza_camere_lato_basso * 5/12 + (larghezza_camere_lato_basso * 1/12)* rand1 
  169. posizione_y_collettore_fredda = pos_y + lunghezza_casa + 0.05 * lunghezza_casa 
  170. posizione_y_collettore_calda = pos_y + lunghezza_casa + 0.1 * lunghezza_casa 
  171. posizione_x_caldaia = pos_x + larghezza_camere_lato_basso + larghezza_corridoio *1.5 + larghezza_corridoio *rand1
  172. posizione_y_caldaia = pos_y + lunghezza_casa * 1.1 + lunghezza_casa * 0.1
  173. posizione_x_contatore = posizione_x_caldaia + larghezza_corridoio + larghezza_corridoio *rand
  174. posizione_y_contatore = pos_y + lunghezza_casa * 0.5 + lunghezza_casa * 0.1
  175. potenza_dispersa_per_metro_2 = 30
  176. potenza_per_modulo_termosifone = 100;
  177. distanza_dal_muro = 0.1;
  178. tick_tra_tubi = 0
  179. tick_tra_tubi_alti = 0
  180. for i = numero_camere_lato_basso : -1 : 1   
  181.    %    [fid] = scrivere_quota (fid,pos_x-distanza_quota, pos_y + vettore_camere_basse(i) + (vettore_camere_basse(i+1) - vettore_camere_basse(i))/2,90,'middle','20', vettore_camere_basse(i+1)-vettore_camere_basse(i));
  182.     lato = vettore_camere_basse(i+1)-vettore_camere_basse(i);
  183.     superficie = larghezza_camere_lato_basso * (vettore_camere_basse(i+1) - vettore_camere_basse(i));
  184.     potenza = superficie*potenza_dispersa_per_metro_2;
  185.     testo_superficie = [num2str(round(potenza)), ' W'];
  186.     [fid] = scrivere (fid, pos_x  + larghezza_camere_lato_basso/3, pos_y + vettore_camere_basse(i) + (vettore_camere_basse(i+1) - vettore_camere_basse(i))/3,0,'middle','20', testo_superficie);
  187.     numero_elementi_termosifone = ceil (potenza/potenza_per_modulo_termosifone);
  188.     [fid] = disegno_termosifone (fid, pos_x + distanza_dal_muro, pos_y + vettore_camere_basse(i)+lato/2, 270,'middle','25', numero_elementi_termosifone);
  189. end
  190.  
  191.  
  192. for i = 1 : numero_camere_lato_destro   
  193.     fid = stanza (fid, pos_x  + vettore_camere_alte(i), pos_y - lunghezza_camere_lato_alto, ...
  194.                        vettore_camere_alte(i+1)- vettore_camere_alte(i), lunghezza_camere_lato_alto, 0, 0, 0, 0.2);
  195.     superficie = lunghezza_camere_lato_alto * (vettore_camere_alte(i+1) - vettore_camere_alte(i));
  196.     potenza = superficie*potenza_dispersa_per_metro_2;
  197.     testo_superficie = [num2str(round(potenza)), ' W']
  198.     [fid] = scrivere (fid, pos_x + vettore_camere_alte(i) + (vettore_camere_alte(i+1) - vettore_camere_alte(i))/2, pos_y - lunghezza_camere_lato_alto / 2,0,'middle','20', testo_superficie);
  199.     numero_elementi_termosifone = ceil (potenza/potenza_per_modulo_termosifone)
  200.     [fid] = disegno_termosifone (fid, pos_x + vettore_camere_alte(i) + (vettore_camere_alte(i+1) - vettore_camere_alte(i))/2 , pos_y - lunghezza_camere_lato_alto + distanza_dal_muro, 0,'middle','25', numero_elementi_termosifone);
  201.     %    testo_superficie = [num2str(round(superficie*150)), ' W']
  202. end
  203.  
  204. % disegno collettore
  205. spessore = tick_tra_tubi / 5
  206. distanza_tra_coppia_tubi;
  207. tick_tra_tubi;
  208. [fid] = rettangolo (fid,posizione_x_collettore_fredda ,posizione_y_collettore_fredda, tick_tra_tubi + distanza_tra_coppia_tubi*3, spessore, 0, 0, 255, 3)
  209. [fid] = rettangolo (fid,posizione_x_collettore_fredda ,posizione_y_collettore_calda, tick_tra_tubi + distanza_tra_coppia_tubi*3, spessore, 255, 0, 0, 3)
  210. [fid] = scrivere (fid, posizione_x_collettore_fredda - tick_tra_tubi * 1.5, posizione_y_collettore_fredda + spessore ,0,'left','20', 'Collettore');
  211.  
  212. % disegno caldaia
  213. larghezza_caldaia = tick_tra_tubi + distanza_tra_coppia_tubi
  214.  
  215. fprintf(fid, ['<!-- caldaia -->  \n']);
  216. [fid] = rettangolo (fid,posizione_x_caldaia ,posizione_y_caldaia, larghezza_caldaia , tick_tra_tubi / 2, 0, 0, 0, 3)
  217. [fid] = scrivere (fid, posizione_x_caldaia +larghezza_caldaia /2,posizione_y_caldaia + tick_tra_tubi,0,'middle','20', 'Caldaia');
  218. larghezza_caldaia = larghezza_caldaia + larghezza_caldaia /6
  219. [fid] = linea (fid,posizione_x_collettore_fredda + tick_tra_tubi + distanza_tra_coppia_tubi*3, posizione_y_collettore_fredda +spessore/2, posizione_x_caldaia + larghezza_caldaia /2, posizione_y_collettore_fredda+spessore/2,0,0,255,6)
  220. [fid] = linea (fid,posizione_x_caldaia + larghezza_caldaia /2, posizione_y_collettore_fredda +spessore/2, posizione_x_caldaia + larghezza_caldaia /2 , posizione_y_caldaia,0,0,255,6)
  221. larghezza_caldaia = larghezza_caldaia - larghezza_caldaia /6 - larghezza_caldaia /6
  222. [fid] = linea (fid,posizione_x_collettore_fredda + tick_tra_tubi + distanza_tra_coppia_tubi*3, posizione_y_collettore_calda +spessore/2, posizione_x_caldaia + larghezza_caldaia /2, posizione_y_collettore_calda +spessore/2,255,0,0,6)
  223. [fid] = linea (fid,posizione_x_caldaia + larghezza_caldaia /2 , posizione_y_collettore_calda +spessore/2, posizione_x_caldaia + larghezza_caldaia /2 , posizione_y_caldaia,255,0,0,6)
  224.  
  225. % disegno contatore
  226. larghezza_contatore = tick_tra_tubi + distanza_tra_coppia_tubi
  227. [fid] = rettangolo (fid,posizione_x_contatore ,posizione_y_contatore, larghezza_contatore , tick_tra_tubi / 2, 0, 0, 0, 3)
  228. [fid] = scrivere (fid, posizione_x_contatore +larghezza_caldaia *1.3,posizione_y_contatore + tick_tra_tubi/2,0,'left','20', 'Contatore');
  229.  
  230. % acqua fredda per caldaia
  231.  
  232. [fid] = linea (fid,posizione_x_caldaia + larghezza_caldaia , posizione_y_caldaia + tick_tra_tubi / 4, posizione_x_contatore +larghezza_contatore/2  , posizione_y_caldaia + tick_tra_tubi / 4,0,0,255,6)
  233. [fid] = linea (fid,posizione_x_contatore + larghezza_contatore/2 , posizione_y_caldaia + tick_tra_tubi / 4, posizione_x_contatore +larghezza_contatore/2 , posizione_y_contatore + tick_tra_tubi / 2,0,0,255,6)
  234.  
  235. % acqua fredda bagno
  236. n1 = numero_camere_lato_destro
  237. x_ultima = pos_x + vettore_camere_alte(n1) + (vettore_camere_alte(n1+1)-vettore_camere_alte(n1))/2 
  238. x_ultima = x_ultima + 0.1
  239. y_ultima = pos_y  
  240. spezzone_y =  (posizione_y_contatore + y_ultima) / 2
  241. [fid] = linea (fid,posizione_x_contatore + larghezza_contatore/2 , posizione_y_contatore + tick_tra_tubi / 4, posizione_x_contatore + larghezza_contatore/2 , spezzone_y,0,0,255,6)
  242. [fid] = linea (fid,posizione_x_contatore + larghezza_contatore/2 , spezzone_y, x_ultima , spezzone_y,0,0,255,6)
  243. [fid] = linea (fid,x_ultima , spezzone_y, x_ultima , y_ultima,0,0,255,6)
  244.  
  245. % acqua calda bagno
  246. spezzone_y =  (posizione_y_caldaia + y_ultima) / 2
  247. x_ultima = x_ultima - 0.2
  248. [fid] = linea (fid, posizione_x_caldaia + larghezza_caldaia, posizione_y_caldaia + tick_tra_tubi / 4, posizione_x_caldaia + larghezza_caldaia , spezzone_y,255,0,0,6)
  249. [fid] = linea (fid, posizione_x_caldaia + larghezza_caldaia , spezzone_y, x_ultima , spezzone_y,255,0,0,6)
  250. [fid] = linea (fid, x_ultima , spezzone_y, x_ultima , y_ultima,255,0,0,6)
  251. [fid] = scrivere (fid, x_ultima , y_ultima - tick_tra_tubi / 4,0,'middle','20', 'Collettore_bagno');
  252.  
  253. % 
  254. % fid = rettangolo (fid,pos_x,     pos_y, ...
  255. %                       lunghezza, raggio_millimetrato, 0, 0, 0, 0.2);
  256. % [fid] = scrivere (fid,pos_x-1,pos_y+2 * raggio_millimetrato,'left','4','misura: _______');
  257. % 
  258. % 
  259. % fid = linea (fid,pos_x,pos_y,pos_x+lunghezza,pos_y,180,180,180,larghezza_linea); 
  260. % fid = commento (fid,'spigolo nonio')
  261. %               
  262. % parte sotto del nonio
  263. %[fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio + 4+30,pos_y,'middle','7',num2str(lunghezza));
  264. spazio_tra_testo = 100;
  265. cursore_per_scrittura = 200;
  266. giustificazione_destra = 1950;
  267. scelta_tubi = rand
  268. if scelta_tubi &lt; 0.33 testo = 'Multistrato D = 16 mm ' end if scelta_tubi &gt; 0.33 &amp;&amp; scelta_tubi &lt; 0.66 testo = 'Acciaio zincato 1/2' end if scelta_tubi &gt; 0.66 
  269.     testo = 'Rame Di = 16 mm De = 18 mm' 
  270. end
  271. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  272.  
  273. [fid] = scrivere_fuori_scala (fid,giustificazione_destra, cursore_per_scrittura ,'end','25',['Tubi caldaia-radiatori= ' ,testo]);
  274.  
  275. scelta_tubi = rand
  276. if scelta_tubi &lt; 0.33 testo = 'Multistrato D = 26 mm ' end if scelta_tubi &gt; 0.33 &amp;&amp; scelta_tubi &lt; 0.66 testo = 'Acciaio zincato 3/4' end if scelta_tubi &gt; 0.66 
  277.     testo = 'Rame Di = 25mm De = 28mm' 
  278. end
  279. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  280.  
  281. [fid] = scrivere_fuori_scala (fid,giustificazione_destra, cursore_per_scrittura ,'end','25',['Tubi contatore-caldaia-bagno= ' ,testo]);
  282.  
  283. scelta_tubi = rand
  284. if scelta_tubi &lt; 0.33 testo = 'Interasse 500 mm ' end if scelta_tubi &gt; 0.33 &amp;&amp; scelta_tubi &lt; 0.66 testo = 'Interasse 600 mm' end if scelta_tubi &gt; 0.66 
  285.     testo = 'Interasse 700 mm' 
  286. end
  287. cursore_per_scrittura = spazio_tra_testo + cursore_per_scrittura;
  288.  
  289. [fid] = scrivere_fuori_scala (fid,giustificazione_destra, cursore_per_scrittura ,'end','25',['Radiatore alluminio= ' ,testo]);
  290.  
  291. % -------------------------------------------------------------------------
  292.  
  293. function [fid] = disegno_termosifone (fid,x1,y1,angolo,giustificazione,altezza_testo,numero_quota)
  294. global scala
  295. global numero_elementi_termosifone
  296. global posizione_x_collettore_fredda 
  297. global posizione_y_collettore_fredda
  298. global posizione_y_collettore_calda
  299. global tick_tra_tubi
  300. global tick_tra_tubi_alti
  301. global lunghezza_camere_lato_alto
  302. global distanza_tra_coppia_tubi
  303. testo = num2str(round(numero_quota));
  304. larghezza_modulo = 0.16
  305. distanza_tra_due_moduli = larghezza_modulo * 0.1
  306. distanza_tra_tubi_due_radiatori = 0.25
  307. distanza_tra_coppia_tubi = 0.075
  308. fprintf(fid, ['<!-- Scrivere quota -->  \n']);
  309. centrare_termosifone = (larghezza_modulo + distanza_tra_due_moduli) * numero_elementi_termosifone
  310.  
  311. if (angolo == 0)
  312.     fprintf(fid, ['' testo '' '\n']);
  313.     x1 = x1  - centrare_termosifone / 2
  314.     for i = 1:numero_elementi_termosifone
  315.         [fid] = rettangolo (fid,x1,y1,larghezza_modulo,larghezza_modulo, 50, 50, 50, 1 )
  316.         x1 = x1 + larghezza_modulo + distanza_tra_due_moduli
  317.     end
  318.     x1 = x1 + larghezza_modulo / 2
  319.     tick_tra_tubi = tick_tra_tubi + distanza_tra_tubi_due_radiatori
  320.     tick_tra_tubi_alti = tick_tra_tubi_alti + distanza_tra_tubi_due_radiatori
  321. % rosso
  322.    d1 = distanza_tra_coppia_tubi;
  323.     [fid] = linea (fid,x1+d1, y1, x1+d1 ,y1+d1 + lunghezza_camere_lato_alto/2 + tick_tra_tubi_alti,255,0,0,3)
  324.     [fid] = linea (fid,x1+d1 ,y1 + lunghezza_camere_lato_alto/2 + tick_tra_tubi_alti + d1, posizione_x_collettore_fredda + tick_tra_tubi +d1,y1 + lunghezza_camere_lato_alto/2 + tick_tra_tubi_alti +d1,255,0,0,3)
  325.     [fid] = linea (fid,posizione_x_collettore_fredda + tick_tra_tubi +d1, y1 + lunghezza_camere_lato_alto/2+tick_tra_tubi_alti + d1, posizione_x_collettore_fredda + tick_tra_tubi +d1,posizione_y_collettore_calda,255,0,0,3)
  326.  
  327. % blu
  328.     [fid] = linea (fid,x1, y1, x1 ,y1 + lunghezza_camere_lato_alto/2 + tick_tra_tubi_alti,0,0,255,3)
  329.     [fid] = linea (fid,x1 ,y1 + lunghezza_camere_lato_alto/2 + tick_tra_tubi_alti, posizione_x_collettore_fredda + tick_tra_tubi,y1 + lunghezza_camere_lato_alto/2 +tick_tra_tubi_alti ,0,0,255,3)
  330.     [fid] = linea (fid,posizione_x_collettore_fredda + tick_tra_tubi, y1 + lunghezza_camere_lato_alto/2+tick_tra_tubi_alti, posizione_x_collettore_fredda + tick_tra_tubi,posizione_y_collettore_fredda,0,0,255,3)
  331.     fprintf(fid, ['<!-- fine termosifone -->  \n']);
  332. end
  333. angolo
  334. if (angolo == 90 || angolo == 270)
  335.     fprintf(fid, ['' testo '' '\n']);
  336.     y1 = y1  - centrare_termosifone / 2
  337.     for i = 1:numero_elementi_termosifone
  338.         [fid] = rettangolo (fid,x1,y1,larghezza_modulo,larghezza_modulo, 50, 50, 50, 1 )
  339.         y1 = y1 + larghezza_modulo + distanza_tra_due_moduli
  340.     end
  341.         y1 = y1 + larghezza_modulo /2
  342.  
  343.     tick_tra_tubi = tick_tra_tubi + distanza_tra_tubi_due_radiatori
  344. % rosso    
  345.     [fid] = linea (fid,x1, y1, posizione_x_collettore_fredda + tick_tra_tubi,y1,255,0,0,3)
  346.     [fid] = linea (fid,posizione_x_collettore_fredda +  tick_tra_tubi , y1, posizione_x_collettore_fredda + tick_tra_tubi,posizione_y_collettore_calda,255,0,0,3)
  347. % blu    
  348.     d1 = distanza_tra_coppia_tubi;
  349.     [fid] = linea (fid,x1, y1+d1, posizione_x_collettore_fredda + tick_tra_tubi-d1,y1+d1,0,0,255,3)
  350.     [fid] = linea (fid,posizione_x_collettore_fredda +  tick_tra_tubi-d1 , y1+d1, posizione_x_collettore_fredda + tick_tra_tubi-d1,posizione_y_collettore_fredda,0,0,255,3)
  351.  
  352.     fprintf(fid, ['<!-- fine termosifone -->  \n']);
  353. end
  354. fprintf(fid, ['<!-- -->  \n']);
  355.  
  356. % -------------------------------------------------------------------------
  357.  
  358. function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
  359. global scala
  360. numero_segmenti = 1;
  361. for i=1:numero_segmenti
  362.     passo_x = (x2-x1) / numero_segmenti;
  363.     passo_y = (y2-y1) / numero_segmenti;
  364.  
  365.     fprintf(fid, [' \n']);              
  366. end    
  367.  
  368. % -------------------------------------------------------------------------
  369.  
  370. function [fid] = cerchio (fid,x1,y1,raggio,colore1,colore2,colore3)
  371.  
  372. fprintf(fid, [' \n']);
  373.  
  374.  
  375. % --------------------------------------------------------------------------  
  376.  
  377. function [fid] = stanza (fid,x1,y1,lato1,lato2, colore1,colore2,colore3,larghezza)
  378. global spessore_muro
  379. fprintf(fid, ['<!-- stanza -->  \n']);
  380. rettangolo (fid,x1-spessore_muro*2,y1-spessore_muro*2,lato1+spessore_muro,lato2+spessore_muro,colore1,colore2,colore3,larghezza)
  381. rettangolo (fid,x1+spessore_muro*,y1+spessore_muro*2,lato1-spessore_muro,lato2-spessore_muro,colore1,colore2,colore3,larghezza)
  382. fprintf(fid, ['<!-- -->  \n']);
  383.  
  384. % --------------------------------------------------------------------------      
  385.  
  386. function [fid] = commento (fid,testo_commento)
  387.  
  388. fprintf(fid, ['/* '  '\n']);
  389. fprintf(fid, [testo_commento  '\n']);
  390. fprintf(fid, ['*/ '  '\n']);
  391.  
  392. % --------------------------------------------------------------------------      
  393.  
  394. function [fid] = scrivere (fid,x1,y1,angolo,giustificazione,altezza_testo,testo)
  395. global scala
  396. fprintf(fid, ['<!-- Scrivere -->  \n']);
  397. fprintf(fid, ['' testo '' '\n']);
  398. fprintf(fid, ['<!-- -->  \n']);
  399.  
  400. % --------------------------------------------------------------------------      
  401.  
  402. function [fid] = scrivere_quota (fid,x1,y1,angolo,giustificazione,altezza_testo,numero_quota)
  403. global scala
  404. testo = num2str(round(numero_quota*10));
  405. fprintf(fid, ['<!-- Scrivere quota -->  \n']);
  406. fprintf(fid, ['' testo '' '\n']);
  407. if (angolo == 0)
  408.     freccia = 0.2
  409.     y1 = y1 + freccia/2 
  410.     [fid] = linea (fid,x1,y1,(x1+numero_quota/2),y1,0,0,0,1)
  411.     fprintf(fid, ['<!-- freccia -->  \n']);
  412.     [fid] = linea (fid,x1+numero_quota/2-freccia, y1-freccia/3, x1+numero_quota/2,y1,0,0,0,1)
  413.     [fid] = linea (fid,x1+numero_quota/2-freccia, y1+freccia/3, x1+numero_quota/2,y1,0,0,0,1)
  414.     fprintf(fid, ['<!-- fine freccia -->  \n']);
  415.     [fid] = linea (fid,x1,y1,(x1-numero_quota/2),y1,0,0,0,1)
  416.     fprintf(fid, ['<!-- freccia -->  \n']);
  417.     [fid] = linea (fid,x1-numero_quota/2+freccia, y1-freccia/3, x1-numero_quota/2,y1,0,0,0,1)
  418.     [fid] = linea (fid,x1-numero_quota/2+freccia, y1+freccia/3, x1-numero_quota/2,y1,0,0,0,1)
  419.     fprintf(fid, ['<!-- fine freccia -->  \n']);
  420. end
  421. if (angolo == 90 || angolo == 270)
  422.     freccia = 0.2
  423.     if (angolo==90)
  424.        x1 = x1 - freccia/2 
  425.     end
  426.     if (angolo==270)
  427.        x1 = x1 + freccia/2 
  428.     end
  429.     [fid] = linea (fid,x1,y1,x1,y1+numero_quota/2,0,0,0,1)
  430.     fprintf(fid, ['<!-- freccia -->  \n']);
  431.     [fid] = linea (fid,x1-freccia/3, y1  +numero_quota/2-freccia, x1,y1+numero_quota/2,0,0,0,1)
  432.     [fid] = linea (fid,x1+freccia/3, y1+numero_quota/2-freccia,x1,y1+numero_quota/2,0,0,0,1)
  433.     fprintf(fid, ['<!-- fine freccia -->  \n']);
  434.     [fid] = linea (fid,x1,y1,x1,y1-numero_quota/2,0,0,0,1)
  435.     fprintf(fid, ['<!-- freccia -->  \n']);
  436.     [fid] = linea (fid,x1-freccia/3, y1-numero_quota/2+freccia, x1,y1-numero_quota/2,0,0,0,1)
  437.     [fid] = linea (fid,x1+freccia/3, y1-numero_quota/2+freccia, x1,y1-numero_quota/2,0,0,0,1)
  438.     fprintf(fid, ['<!-- fine freccia -->  \n']);
  439. end
  440.  
  441. fprintf(fid, ['<!-- -->  \n']);
  442.  
  443. % --------------------------------------------------------------------------      
  444.  
  445. function [fid] = scrivere_fuori_scala (fid,x1,y1,giustificazione,altezza_testo,testo)
  446. fprintf(fid, ['<!-- Scrivere fuori scala -->  \n']);
  447. fprintf(fid, ['' testo '' '\n']);
  448. fprintf(fid, ['<!-- -->  \n']);