Esercitazioni di Lettura del micrometro centesimale – linguaggio SVG

In questa pagina è riportato il codice scritto per creare degli esercizi di metrologia ad uso scolastico. Gli esercizi possono essere utilizzati come strumento di apprendimento e/o verifica. Lo strumento disegnato è un micrometro centesimale
A parte il disegno dello strumento e l’organizzazione del file contenente le soluzioni la parte più complicata del codice consiste nella realizzazione dei tamburi con graduazione  centesimale o cinquantesimale. Sul tamburo la successione delle tacche avviene con una funzione di tipo coseno. Il problema più complicato è che in alcune misure bisogna disegnare l’ultima tacca (la cinquantesima o centesima) e immediatamente dopo la tacchetta dello zero.
metrologia_micrometro_esercizio_esercitazione_verifica
Per capire a cosa serve il codice riportato in questa pagina scaricate le verifiche di esempio
Micrometro 100 divisioni   Download Micrometro 50 divisioni         Download
Ogni aggiornamento del codice e le nuove versioni delle verifiche, sono postate sulla pagina facebook:  www.facebook.com/idroslab
Disegno del calibro con nonio avente 100 divisioni (passo 1 mm)
  1. % Autori
  2. % Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)
  3. % Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)
  4. %
  5. function micrometro ()
  6.  
  7. global larghezza_linea
  8. global altezza_tacche_asta
  9. global altezza_tacche_asta_lunghe
  10. global altezza_tacche_nonio 
  11. global larghezza_nonio 
  12. global raggio_millimetrato 
  13. global raggio_spigolo_nonio 
  14. global larghezza_prima_dello_zero 
  15. global fid1
  16. global scala
  17. global numero_lettura
  18. global colonne_risultati
  19. global righe_risultati
  20. global matrice_risultati
  21. global numero_esercitazione
  22.  
  23. numero_lettura = 0;
  24.  
  25. larghezza_prima_dello_zero = 3;
  26. larghezza_linea = 0.2;
  27. larghezza_dopo_nonio = 14; % l1
  28. larghezza_zigrinato = 24; % l1
  29. larghezza_dopo_zigrinato = 10; % l1
  30. larghezza_attacco_frizione = 3; % l1
  31. larghezza_frizione = 7; % l1
  32. larghezza_battuta_asta = 3;
  33. altezza_tacche_asta = 2;
  34. altezza_tacche_asta_lunghe = 5;
  35. altezza_tacche_nonio = 3;
  36. larghezza_nonio = 15;
  37. raggio_millimetrato = 11;
  38. raggio_spigolo_nonio = 14.5;
  39. scala = 3.54;
  40. altezza_testo = 1.6;
  41.  
  42. numero_esercitazione = numero_esercitazione + 1;
  43. testo = num2str(ceil(numero_esercitazione));
  44.  
  45. colonne_risultati = 1;
  46. matrice_risultati (righe_risultati, colonne_risultati) = str2num(testo);
  47.  
  48. nomefile = ['c:\micro100\100_micro_' testo '.svg'];
  49. nomefile1 = ['c:\micro100\100_micro_' testo '.txt'];
  50.  
  51. fid = fopen([nomefile], 'wt');
  52. fid1 = fopen([nomefile1], 'wt');
  53. fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?-->  \n']);
  54. fprintf(fid, ['\n']);
  55. fprintf(fid, ['\n']);
  56. portata_strumento = 2500;
  57. lunghezza_casuale = (ceil (rand*portata_strumento));
  58. colonne_risultati = 1 + colonne_risultati;
  59. matrice_risultati (righe_risultati, colonne_risultati) = lunghezza_casuale;
  60.  
  61. pos_x = 90;
  62. pos_y = 38;
  63. [fid] = scrivere (fid,30,15,'left',2.5,'Nome: _________________________________________________ Classe: ___________ Data: _____________');
  64. [fid] = scrivere (fid,15,30,'left',2,['Soluzione: ', testo]);
  65. [fid] = scrivere (fid,8,15,'left',6,'A');
  66. [fid] = scrivere (fid,10,283,'right',2.5,'www.tiny.cc/disegno');
  67. [fid] = scrivere (fid,124,282,'right',2,'Autori: Prof. Paolo Sordi ITIS Marconi, Pontedera (Pisa)');
  68. [fid] = scrivere (fid,132,285,'right',2,'Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)');
  69.  
  70. disegna_micrometro (fid, pos_x, pos_y, lunghezza_casuale)
  71. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio, pos_y-raggio_spigolo_nonio,  ...
  72.                        larghezza_dopo_nonio                   , raggio_spigolo_nonio * 2, 0, 0, 0, 0.2);
  73.  
  74. % a destra del nonio                   
  75. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio, pos_y-raggio_spigolo_nonio,  ...
  76.                        larghezza_zigrinato                                         , raggio_spigolo_nonio * 2, 0, 0, 0, 0.2);
  77. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato                                                    , pos_y-raggio_spigolo_nonio,  ...
  78.                        larghezza_dopo_zigrinato                                                                                                            , raggio_spigolo_nonio * 2, 0, 0, 0, 0.2);
  79. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato                                                    , pos_y-raggio_spigolo_nonio,  ...
  80.                        larghezza_dopo_zigrinato                                                                                                            , raggio_spigolo_nonio * 2, 0, 0, 0, 0.2);
  81. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato+larghezza_dopo_zigrinato                           , pos_y-raggio_spigolo_nonio*.4,  ...
  82.                        larghezza_attacco_frizione                                                                                                          , raggio_spigolo_nonio*0.8, 0, 0, 0, 0.2);
  83. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato+larghezza_dopo_zigrinato+larghezza_attacco_frizione, pos_y-raggio_spigolo_nonio*0.5,  ...
  84.                        larghezza_frizione                                                                                                                  , raggio_spigolo_nonio, 0, 0, 0, 0.2);
  85.  
  86. % a destra del nonio                   
  87. fid = rettangolo (fid, pos_x+10 - larghezza_prima_dello_zero  , pos_y-raggio_millimetrato,  ...
  88.                        10                                     , raggio_millimetrato * 4, 0, 0, 0, 0.2);
  89.  
  90. fid = rettangolo (fid, pos_x+10 - larghezza_prima_dello_zero - portata_strumento/100 + lunghezza_casuale       , pos_y-raggio_millimetrato*0.3,  ...
  91.                        portata_strumento/100 - lunghezza_casuale                                               , raggio_millimetrato * 0.6, 0, 0, 0, 0.2);
  92.  
  93. fid = rettangolo (fid, pos_x+10 -larghezza_prima_dello_zero-portata_strumento/100- larghezza_battuta_asta      , pos_y+raggio_millimetrato*2.0,  ...
  94.                        portata_strumento/100 + larghezza_battuta_asta                                          , raggio_millimetrato * 1, 0, 0, 0, 0.2);
  95. fid = rettangolo (fid, pos_x+10 -larghezza_prima_dello_zero-portata_strumento/100 - larghezza_battuta_asta     , pos_y-raggio_millimetrato*0.3,  ...
  96.                        larghezza_battuta_asta                                                                  , raggio_millimetrato * 0.6, 0, 0, 0, 0.2);
  97. fid = rettangolo (fid, pos_x+10-10 - larghezza_prima_dello_zero-portata_strumento/100 - larghezza_battuta_asta , pos_y-raggio_millimetrato,  ...
  98.                        10                                                                                      , raggio_millimetrato * 4, 0, 0, 0, 0.2);
  99.  
  100. for i=1:4
  101.     for j=[20, 90, 160]
  102.         lunghezza_casuale = 4 * (ceil (rand*(portata_strumento-2)))/  100;
  103.         colonne_risultati = 1 + colonne_risultati;
  104.         matrice_risultati (righe_risultati, colonne_risultati) = lunghezza_casuale;
  105.         disegna_micrometro (fid, j, 43+51*i, lunghezza_casuale)
  106.     end
  107. end
  108. fprintf(fid, [' \n']);
  109. fclose(fid)
  110. stringa_dos = ['c:\Programmi\Inkscape\inkscape -e ' nomefile ' -E '  'C:\micro100\100_micro_' testo '.pdf']
  111. dos(stringa_dos)
  112. fclose (fid1)
  113.  
  114.  
  115. % -------------------------------------------------------------------------
  116.  
  117.  
  118. function disegna_micrometro (fid,pos_x,pos_y,lunghezza)
  119. global larghezza_linea
  120. global altezza_tacche_asta
  121. global altezza_tacche_asta_lunghe
  122. global altezza_tacche_nonio 
  123. global larghezza_nonio 
  124. global raggio_millimetrato 
  125. global raggio_spigolo_nonio
  126. global larghezza_prima_dello_zero 
  127. global fid1
  128. global numero_lettura
  129.  
  130. numero_lettura = numero_lettura + 1;
  131.  
  132. fid = commento (fid,'*************************** NUOVO MICROMETRO ***************************');
  133.  
  134. fid = rettangolo (fid,pos_x+larghezza_prima_dello_zero,     pos_y-raggio_millimetrato, ...
  135.                       lunghezza+larghezza_prima_dello_zero, raggio_millimetrato*2, 0, 0, 0, 0.2);
  136. [fid] = scrivere (fid,pos_x+1,pos_y+2 * raggio_millimetrato,'left',3,'misura: _______');
  137.  
  138. fid = linea (fid,pos_x,pos_y,pos_x+lunghezza,pos_y,180,180,180,larghezza_linea); 
  139. for i=0:floor(lunghezza)
  140.     tacca = altezza_tacche_asta;
  141.     if rem(i,5) == 0
  142.         tacca = altezza_tacche_asta_lunghe;
  143.         if i + 1 &lt; floor(lunghezza)
  144.             [fid] = scrivere (fid,pos_x+i,pos_y+tacca+2,'middle',2,num2str(i));
  145.         end    
  146.     end
  147.     fid = linea (fid,pos_x+i,pos_y,pos_x+i,pos_y+tacca, 0, 0, 0,0.1); 
  148.  
  149. end
  150. fid = commento (fid,'spigolo nonio')
  151. fid = rettangolo (fid,  pos_x+lunghezza, pos_y-raggio_spigolo_nonio,  ...
  152.                         larghezza_nonio, raggio_spigolo_nonio*2, 0, 0, 0,0.2);
  153. fid = commento (fid,'tacche nonio');
  154.  
  155. % parte sotto del nonio
  156. centesimo = round((lunghezza - floor(lunghezza))*100);
  157. altezza_testo_nonio = 1.7;
  158. stacchetto = 3;
  159. for i=0:25
  160.     tacca_nonio = 3;
  161.     tacca_altezza =  cos((pi/2) * i / 25) * raggio_spigolo_nonio; 
  162.     if rem(centesimo-i,5) == 0
  163.         tacca_nonio = 6;
  164.         numero_nonio = centesimo-i;
  165.         if numero_nonio &lt; 0 numero_nonio = numero_nonio + 100; end if numero_nonio &gt; 99
  166.             numero_nonio = numero_nonio - 100;
  167.         end
  168.         if i &lt; 18 
  169.             [fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio+ stacchetto,pos_y+tacca_altezza,'middle',altezza_testo_nonio,num2str(numero_nonio));
  170.         end
  171.     end
  172.     fid = linea (fid,   pos_x+lunghezza,             pos_y+tacca_altezza, ...
  173.                         pos_x+lunghezza+tacca_nonio, pos_y+tacca_altezza,0, 0, 0,0.1); 
  174. end
  175.  
  176.  
  177. for i=0:25
  178.     tacca_nonio = 3;
  179.     centesimo+i;
  180.         tacca_altezza =  sin((pi/2) * i / 25) * raggio_spigolo_nonio;
  181.     if rem(centesimo+i,5) == 0
  182.         tacca_nonio = 6;
  183.         numero_nonio = centesimo+i;
  184.         if numero_nonio &lt; 0 numero_nonio = numero_nonio * 100; end if numero_nonio &gt; 99
  185.             numero_nonio = numero_nonio - 100;
  186.         end
  187.         if i &lt; 18
  188.             [fid] = scrivere (fid,pos_x-lunghezza+tacca_nonio+ stacchetto,pos_y-tacca_altezza,'middle',altezza_testo_nonio,num2str(numero_nonio));
  189.         end
  190.     end
  191.     fid = linea (fid,pos_x+lunghezza,             pos_y-tacca_altezza,  ...
  192.                      pos_x+lunghezza+tacca_nonio, pos_y-tacca_altezza, 0, 0, 0, 0.1); 
  193. end
  194.  
  195. fprintf(fid1, ['misura' num2str(numero_lettura) ': '  num2str(lunghezza, '%10.2f')  '\n'])
  196.  
  197. %[fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio + 4+30,pos_y,'middle','7',num2str(lunghezza));
  198.  
  199. % -------------------------------------------------------------------------
  200.  
  201. function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
  202. global scala
  203. fprintf(fid, [' \n']);              
  204.  
  205.  
  206. % -------------------------------------------------------------------------
  207.  
  208. function [fid] = cerchio (fid,x1,y1,raggio,colore1,colore2,colore3)
  209. global scala
  210. fprintf(fid, [' \n']);
  211.  
  212. % --------------------------------------------------------------------------      
  213.  
  214. function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  215. global scala      
  216. fprintf(fid, [' \n']);
  217.  
  218. % --------------------------------------------------------------------------      
  219.  
  220. function [fid] = commento (fid,testo_commento)
  221. fprintf(fid, ['/* '  '\n']);
  222. fprintf(fid, [testo_commento  '\n']);
  223. fprintf(fid, ['*/ '  '\n']);
  224.  
  225. % --------------------------------------------------------------------------      
  226.  
  227. function [fid] = scrivere (fid,x1,y1,giustificazione,altezza_testo,testo)
  228. global scala
  229. altezza_testo = altezza_testo*1;
  230.  
  231. fprintf(fid, ['' testo '' '\n']);
  232. %rettangolo_per_coprire_numero (fid, x1, y1, altezza_testo , altezza_testo, 0, 0, 0, 0.2)
  233.  
  234. % --------------------------------------------------------------------------      
  235.  
  236. function [fid] = rettangolo_per_coprire_numero (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  237. global scala      
  238. fprintf(fid, [' \n']);
  Disegno del micrometro con nonio avente 50 divisioni (passo 0.5 mm)
  1. % Autori
  2. % Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)
  3. % Prof. Danilo Pasquini IPSIA Parodi Delfino, Colleferro (Roma)
  4. %
  5. function micrometro ()
  6.  
  7. global larghezza_linea
  8. global altezza_tacche_asta
  9. global altezza_tacche_asta_lunghe
  10. global altezza_tacche_nonio 
  11. global larghezza_nonio 
  12. global raggio_millimetrato 
  13. global raggio_spigolo_nonio 
  14. global larghezza_prima_dello_zero 
  15. global fid1
  16. global scala
  17. global matrice_risultati
  18. global numero_esercitazione
  19. global righe_risultati
  20.  
  21.  
  22. larghezza_prima_dello_zero = 3;
  23. larghezza_linea = 0.2;
  24. larghezza_dopo_nonio = 14; % l1
  25. larghezza_zigrinato = 24; % l1
  26. larghezza_dopo_zigrinato = 10; % l1
  27. larghezza_attacco_frizione = 3; % l1
  28. larghezza_frizione = 7; % l1
  29. larghezza_battuta_asta = 3;
  30. altezza_tacche_asta = 2;
  31. altezza_tacche_asta_lunghe = 5;
  32. altezza_tacche_nonio = 3;
  33. larghezza_nonio = 15;
  34. raggio_millimetrato = 11;
  35. raggio_spigolo_nonio = 14.5;
  36. scala = 3.54;
  37.  
  38. clc
  39. numero_esercitazione = numero_esercitazione + 1;
  40. testo = num2str(ceil(numero_esercitazione));
  41. colonne_risultati = 1;
  42. matrice_risultati (righe_risultati, colonne_risultati) = str2num(testo);
  43.  
  44. nomefile = ['c:\micro100\50_micro_' testo '.svg'];
  45. nomefile1 = ['c:\micro100\50_micro_' testo '.txt'];
  46.  
  47. fid = fopen([nomefile], 'wt');
  48. fid1 = fopen([nomefile1], 'wt');
  49.  
  50. fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?-->  \n']);
  51. fprintf(fid, ['\n']);
  52. fprintf(fid, ['\n']);
  53. portata_strumento = 2500
  54. lunghezza_casuale = (ceil (rand*portata_strumento))/  100
  55.  
  56. colonne_risultati = 1 + colonne_risultati;
  57. matrice_risultati (righe_risultati, colonne_risultati) = lunghezza_casuale;
  58.  
  59. pos_x = 90;
  60. pos_y = 40;
  61. [fid] = scrivere (fid,30,15,'left',3,'Nome: __________________________________ Classe: _________ Data: _____________');
  62. [fid] = scrivere (fid,15,30,'left',2,['Soluzione: ' testo]);
  63. [fid] = scrivere (fid,8,15,'left',6,'B');
  64. [fid] = scrivere (fid,10,283,'right',2.5,'www.tiny.cc/disegno');
  65. [fid] = scrivere (fid,124,282,'right',2,'Autori: Prof. Paolo Sordi ITIS Marconi, Pontedera (Pisa)');
  66. [fid] = scrivere (fid,132,285,'right',2,'Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)');
  67.  
  68. disegna_micrometro (fid, pos_x, pos_y, lunghezza_casuale)
  69. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio, pos_y-raggio_spigolo_nonio,  ...
  70.                        larghezza_dopo_nonio                   , raggio_spigolo_nonio * 2, 20, 20, 20, 0.2);
  71.  
  72. % a destra del nonio                   
  73. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio, pos_y-raggio_spigolo_nonio,  ...
  74.                        larghezza_zigrinato                                         , raggio_spigolo_nonio * 2, 20, 20, 20, 0.2);
  75. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato                                                    , pos_y-raggio_spigolo_nonio,  ...
  76.                        larghezza_dopo_zigrinato                                                                                                            , raggio_spigolo_nonio * 2, 20, 20, 20, 0.2);
  77. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato                                                    , pos_y-raggio_spigolo_nonio,  ...
  78.                        larghezza_dopo_zigrinato                                                                                                            , raggio_spigolo_nonio * 2, 20, 20, 20, 0.2);
  79. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato+larghezza_dopo_zigrinato                           , pos_y-raggio_spigolo_nonio*.4,  ...
  80.                        larghezza_attacco_frizione                                                                                                          , raggio_spigolo_nonio*0.8, 20, 20, 20, 0.2);
  81. fid = rettangolo (fid, pos_x+lunghezza_casuale+larghezza_nonio+larghezza_dopo_nonio+larghezza_zigrinato+larghezza_dopo_zigrinato+larghezza_attacco_frizione, pos_y-raggio_spigolo_nonio*0.5,  ...
  82.                        larghezza_frizione                                                                                                                  , raggio_spigolo_nonio, 20, 20, 20, 0.2);
  83.  
  84. % a destra del nonio                   
  85. fid = rettangolo (fid, pos_x-10 - larghezza_prima_dello_zero  , pos_y-raggio_millimetrato,  ...
  86.                        10                                     , raggio_millimetrato * 4, 0, 0, 0, 0.2);
  87.  
  88. fid = rettangolo (fid, pos_x-10 - larghezza_prima_dello_zero - portata_strumento/100 + lunghezza_casuale       , pos_y-raggio_millimetrato*0.3,  ...
  89.                        portata_strumento/100 - lunghezza_casuale                                               , raggio_millimetrato * 0.6, 0, 0, 0, 0.2);
  90.  
  91. fid = rettangolo (fid, pos_x-10 -larghezza_prima_dello_zero-portata_strumento/100- larghezza_battuta_asta      , pos_y+raggio_millimetrato*2.0,  ...
  92.                        portata_strumento/100 + larghezza_battuta_asta                                          , raggio_millimetrato * 1, 0, 0, 0, 0.2);
  93. fid = rettangolo (fid, pos_x-10 -larghezza_prima_dello_zero-portata_strumento/100 - larghezza_battuta_asta     , pos_y-raggio_millimetrato*0.3,  ...
  94.                        larghezza_battuta_asta                                                                  , raggio_millimetrato * 0.6, 0, 0, 0, 0.2);
  95. fid = rettangolo (fid, pos_x-10-10 - larghezza_prima_dello_zero-portata_strumento/100 - larghezza_battuta_asta , pos_y-raggio_millimetrato,  ...
  96.                        10                                                                                      , raggio_millimetrato * 4, 0, 0, 0, 0.2);
  97.  
  98. for i=1:4
  99.     for j=[20, 90, 155]
  100.         lunghezza_casuale = 2 + (ceil (rand*portata_strumento-2))/  100
  101.         disegna_micrometro (fid, j, 45+50*i, lunghezza_casuale)
  102.         colonne_risultati = 1 + colonne_risultati;
  103.         matrice_risultati (righe_risultati, colonne_risultati) = lunghezza_casuale;
  104.     end
  105. end
  106.  
  107. fprintf(fid, [' \n']);
  108. fclose(fid)
  109. stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A '  'C:\micro100\50_micro_' testo '.pdf']
  110. dos(stringa_dos)
  111. fclose (fid1)
  112.  
  113. % -------------------------------------------------------------------------
  114.  
  115. function disegna_micrometro (fid,pos_x,pos_y,lunghezza)
  116. global larghezza_linea
  117. global altezza_tacche_asta
  118. global altezza_tacche_asta_lunghe
  119. global altezza_tacche_nonio 
  120. global larghezza_nonio 
  121. global raggio_millimetrato 
  122. global raggio_spigolo_nonio
  123. global larghezza_prima_dello_zero 
  124. global fid1
  125. fid = commento (fid,'*************************** NUOVO MICROMETRO ***************************');
  126.  
  127. fid = rettangolo (fid,pos_x-larghezza_prima_dello_zero,     pos_y-raggio_millimetrato, ...
  128.                       lunghezza+larghezza_prima_dello_zero, raggio_millimetrato*2,0,0,0,0.2);
  129. [fid] = scrivere (fid,pos_x,pos_y+2 * raggio_millimetrato,'left',3,'misura: __________');
  130.  
  131. fid = linea (fid,pos_x,pos_y,pos_x+lunghezza,pos_y,0,0,0,larghezza_linea); 
  132. for i=0:floor(lunghezza)
  133.     tacca = altezza_tacche_asta;
  134.     if rem(i,5) == 0
  135.         tacca = altezza_tacche_asta_lunghe;
  136.         if i + 1 &lt; floor(lunghezza)
  137.             [fid] = scrivere (fid,pos_x+i,pos_y+tacca+3,'middle',2,num2str(i));
  138.         end    
  139.     end
  140.     fid = linea (fid,pos_x+i,pos_y,pos_x+i,pos_y+tacca,20,20,50,0.1); 
  141.  
  142. end
  143.  
  144.  
  145. % mezzo millimetro
  146. for i=0:floor(lunghezza-0.5)
  147.     tacca = altezza_tacche_asta;
  148.     fid = linea (fid,pos_x+i+0.5,pos_y,pos_x+i+0.5,pos_y-tacca,0,0,0,0.1); 
  149. end
  150. fid = commento (fid,'spigolo nonio')
  151. fid = rettangolo (fid,  pos_x+lunghezza, pos_y-raggio_spigolo_nonio,  ...
  152.                         larghezza_nonio, raggio_spigolo_nonio*2,    0,0,0,0.2);
  153. fid = commento (fid,'tacche nonio')
  154.  
  155. % parte sotto del nonio
  156.  
  157. centesimo = round((lunghezza - floor(lunghezza))*100)
  158. for i=0:13
  159.     tacca_nonio = 3;
  160.     centesimo-i;
  161.         tacca_altezza =  sin((pi/2) * i / 13) * raggio_spigolo_nonio; 
  162.     if rem(centesimo-i,5) == 0
  163.     %   disp('ddd');
  164.         tacca_nonio = 6;
  165.         numero_nonio = centesimo-i;
  166.         if numero_nonio &lt; 0 numero_nonio = numero_nonio + 50; end if numero_nonio &gt; 49
  167.             numero_nonio = numero_nonio - 50;
  168.         end
  169.         if i &lt; 10 
  170.             [fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio + 2,pos_y+tacca_altezza,'middle',2,num2str(numero_nonio));
  171.         end
  172.     end
  173.     fid = linea (fid,   pos_x+lunghezza,             pos_y+tacca_altezza, ...
  174.                         pos_x+lunghezza+tacca_nonio, pos_y+tacca_altezza,0,0,0,0.1); 
  175. end
  176.  
  177.  
  178. for i=0:13
  179.     tacca_nonio = 3;
  180.     centesimo+i;
  181.         tacca_altezza =  sin((pi/2) * i / 13) * raggio_spigolo_nonio;
  182.     if rem(centesimo+i,5) == 0
  183.       %  disp('dddxx');
  184.         tacca_nonio = 6;
  185.         numero_nonio = centesimo+i;
  186.         if numero_nonio &lt; 0 numero_nonio = numero_nonio + 50; end if numero_nonio &gt; 49
  187.             numero_nonio = numero_nonio + 50;
  188.         end
  189.         if i &lt; 10
  190.  
  191.             [fid] = scrivere (fid,pos_x-lunghezza+tacca_nonio - 2,pos_y-tacca_altezza,'middle',2,num2str(numero_nonio));
  192.         end
  193.     end
  194.     fid = linea (fid,pos_x+lunghezza,             pos_y-tacca_altezza,  ...
  195.                      pos_x+lunghezza+tacca_nonio, pos_y-tacca_altezza, 0, 0, 0, 0.1); 
  196. end
  197.  
  198. %[fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio + 4+30,pos_y,'middle','3',num2str(lunghezza));
  199. fprintf(fid1, ['misura: ' num2str(lunghezza, '%10.2f')  '\n'])
  200.  
  201. % -------------------------------------------------------------------------
  202.  
  203. function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
  204. global scala
  205. fprintf(fid, [' \n']);              
  206.  
  207.  
  208. % -------------------------------------------------------------------------
  209.  
  210. function [fid] = cerchio (fid,x1,y1,raggio,colore1,colore2,colore3)
  211. global scala
  212. fprintf(fid, [' \n']);
  213.  
  214.  
  215. % --------------------------------------------------------------------------      
  216.  
  217. function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  218. global scala      
  219. fprintf(fid, [' \n']);
  220.  
  221. % --------------------------------------------------------------------------      
  222.  
  223. function [fid] = commento (fid,testo_commento)
  224. fprintf(fid, ['/* '  '\n']);
  225. fprintf(fid, [testo_commento  '\n']);
  226. fprintf(fid, ['*/ '  '\n']);
  227.  
  228. % --------------------------------------------------------------------------
  229.  
  230. function [fid] = scrivere (fid,x1,y1,giustificazione,altezza_testo,testo)
  231. global scala
  232. fprintf(fid, ['' testo '' '\n']);
  233. %rettangolo_per_coprire_numero (fid, (x1+5), y1, altezza_testo,altezza_testo,0, 0, 0, 0.2)
  234.  
  235. % --------------------------------------------------------------------------
  236.  
  237. function [fid] = rettangolo_per_coprire_numero (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  238. global scala      
  239. fprintf(fid, [' \n']);
  Stampa delle soluzioni
  1. % Autori
  2. % Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)
  3. % Prof. Danilo Pasquini IPSIA Parodi Delfino, Colleferro (Roma)
  4. %
  5.  
  6. function stampa_pdf_risultati ()
  7.  
  8. global larghezza_linea
  9. global altezza_tacche_asta
  10. global altezza_tacche_asta_lunghe
  11. global altezza_tacche_nonio 
  12. global larghezza_nonio 
  13. global raggio_millimetrato 
  14. global raggio_spigolo_nonio 
  15. global larghezza_prima_dello_zero 
  16. global fid1
  17. global scala
  18. global numero_lettura
  19.  
  20. global matrice_risultati
  21. global colonne_risultati
  22. global righe_risultati
  23.  
  24. numero_lettura = 0;
  25.  
  26. larghezza_prima_dello_zero = 3;
  27. larghezza_linea = 0.2;
  28. altezza_tacche_asta = 2;
  29. altezza_tacche_asta_lunghe = 5;
  30. altezza_tacche_nonio = 3;
  31. larghezza_nonio = 15;
  32. raggio_millimetrato = 11;
  33. raggio_spigolo_nonio = 14.5;
  34. scala = 3.54;
  35. altezza_testo = 1.6;
  36.  
  37. testo = num2str(ceil(rand*100));
  38. nomefile = ['c:\micro100\risultati_' testo '.svg'];
  39. nomefile1 = ['c:\micro100\risultati_' testo '.txt'];
  40.  
  41. fid = fopen([nomefile], 'wt');
  42. fid1 = fopen([nomefile1], 'wt');
  43. fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?-->  \n']);
  44. fprintf(fid, ['\n']);
  45. fprintf(fid, ['\n']);
  46. portata_strumento = 2500;
  47. lunghezza_casuale = (ceil (rand*portata_strumento))/  100;
  48.  
  49. pos_x = 90;
  50. pos_y = 40;
  51. [fid] = scrivere (fid,30,10,'left',3,'Risultati letture micrometro');
  52.  
  53. [fid] = scrivere (fid,145,10,'right',3,'www.tiny.cc/disegno');
  54.  
  55. [righe,colonne] = size(matrice_risultati);
  56. passo = 10
  57. for i=1:righe
  58.     for j=1:colonne
  59.          if j==1
  60.              [fid] = scrivere (fid,4 + j*passo*1.3, 10 + i*passo*0.78,  'middle', 3.5, num2str(matrice_risultati(i,j)));
  61.          else
  62.              [fid] = scrivere (fid,7 + j*passo*1.3, 10 + i*passo*0.78,  'middle', 3, num2str(matrice_risultati(i,j), '%10.2f'));
  63.          end
  64.     end
  65. end
  66. fprintf(fid, [' \n']);
  67. fclose(fid)
  68. stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A '  'C:\micro100\Risultati' testo '.pdf']
  69. dos(stringa_dos)
  70. fclose (fid1)
  71.  
  72. % -------------------------------------------------------------------------
  73.  
  74. function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
  75. global scala
  76. fprintf(fid, [' \n']);              
  77.  
  78. % -------------------------------------------------------------------------
  79.  
  80. function [fid] = cerchio (fid,x1,y1,raggio,colore1,colore2,colore3)
  81. global scala
  82. fprintf(fid, [' \n']);
  83.  
  84. % --------------------------------------------------------------------------      
  85.  
  86. function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  87. global scala      
  88. fprintf(fid, [' \n']);
  89.  
  90. % --------------------------------------------------------------------------      
  91.  
  92. function [fid] = commento (fid,testo_commento)
  93. fprintf(fid, ['/* '  '\n']);
  94. fprintf(fid, [testo_commento  '\n']);
  95. fprintf(fid, ['*/ '  '\n']);
  96.  
  97. % --------------------------------------------------------------------------      
  98.  
  99. function [fid] = scrivere (fid,x1,y1,giustificazione,altezza_testo,testo)
  100. global scala
  101. altezza_testo = altezza_testo*0.8;
  102. fprintf(fid, ['' testo '' '\n']);
  103. %rettangolo_per_coprire_numero (fid, x1, y1, altezza_testo , altezza_testo, 0, 0, 0, 0.2)
  104.  
  105. % --------------------------------------------------------------------------      
  106.  
  107. function [fid] = rettangolo_per_coprire_numero (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
  108. global scala      
  109. fprintf(fid, [' \n']);
wbcr_php_snippet id=”1135″