LET EVA_temp_dir 'c:\temp\' LET EVA_dateiname 'spirale.out' LET abstand 0 LET laenge 0 LET sdurchmesser 0 LET rmin 360 LET rmax 0 define EVA_spirale_format parameter x parameter m parameter n local sl local pp local an local vn let wert (int((x*10**n)+0.5)/(10**n)) let swert (str wert) let sl (len swert) let pp (pos swert '.' ) let an '' if (pp=0) if (n>0) let an ('.'+(rpt '0' n)) end_if else_if (sl-pp<=n) let an (rpt '0' (abs(sl-pp-n))) end_if let swert (swert+an) let sl (len swert) let vn '' if (m-sl>0) let vn ( rpt ' ' (m-sl) ) end_if let swert (vn+swert) end_define define EVA_spirale_l parameter phi parameter a let phi ( phi * pi / 180 ) let sbog ( a / 2 * ( phi * sqrt ( 1+ phi*phi ) + ln ( phi + sqrt ( 1+ phi * phi ) ) ) ) end_define define EVA_spirale_len local sb EVA_spirale_l sp_phi1 sp_a let sb sbog EVA_spirale_l sp_phi2 sp_a let sp_len ( sbog - sb ) end_define define EVA_spirale_rechne parameter a parameter phi1 parameter phi2 let sp_a ( a ) let sp_phi1 ( phi1 ) let sp_phi2 ( phi2 ) let sp_ab ( a * 2 * pi ) let sp_wi ( int ( (phi2 - phi1) / 360 ) + int (phi1/360) + 1.75 ) let sp_d ( sp_ab * sp_wi * 2 ) end_define define EVA_spirale_rechne1 parameter phi1 parameter phi2 parameter l display (' Gerechneter Abstand war '+ str sp_ab ) loop repeat read number 'Geben sie gewÏnschten Abstand ein Ende <0>' d_abstand IF ((d_abstand < sdurchmesser) AND (d_abstand <> 0)) DISPLAY('Abstand der Windungen muss grÎsser gleich Drahtdurchmesser sein') END_IF until((d_abstand=0) or (d_abstand>=sdurchmesser)) exit_if ( d_abstand = 0 ) let d_abstand ( d_abstand / pi / 2 ) EVA_spirale_rechne 1 phi1 phi2 EVA_spirale_rechne (d_abstand ) phi1 phi2 EVA_spirale_len if ( sp_len < l ) EVA_spirale_rechne_loop1 phi1 phi2 l d_abstand else EVA_spirale_rechne_loop2 phi1 phi2 l d_abstand end_if end_loop end_define define EVA_spirale_rechne_loop1 parameter phi1 parameter phi2 parameter l parameter d_abstand loop EVA_spirale_rechne 1 phi1 phi2 EVA_spirale_rechne (d_abstand ) phi1 phi2 EVA_spirale_len EVA_spirale_format sp_ab 10 0 let w1 swert EVA_spirale_format sp_wi 10 2 let w2 swert EVA_spirale_format sp_d 10 2 let w3 swert EVA_spirale_format sp_len 10 0 let w4 swert write_file 1 (w1 + '|' + w2 + '|' + w3 + '|' + w4 +'|' ) exit_if ( sp_len > l ) let phi2 ( phi2 + 360 ) end_loop end_define define EVA_spirale_rechne_loop2 parameter phi1 parameter phi2 parameter l parameter d_abstand loop EVA_spirale_rechne 1 phi1 phi2 EVA_spirale_rechne (d_abstand ) phi1 phi2 EVA_spirale_len EVA_spirale_format sp_ab 10 0 let w1 swert EVA_spirale_format sp_wi 10 2 let w2 swert EVA_spirale_format sp_d 10 2 let w3 swert EVA_spirale_format sp_len 10 0 let w4 swert write_file 1 (w1 + '|' + w2 + '|' + w3 + '|' + w4 +'|' ) exit_if ( sp_len < l ) let phi2 ( phi2 - 360 ) end_loop end_define define EVA_spirale_spline parameter dphi parameter s let a sp_a let phi1 sp_phi1 let phi2 sp_phi2 let phi2 sp_phi2 let phi phi1 let r ( a * phi * pi/180 ) let er ( pnt_xy ( cos phi ) ( sin phi ) ) let p2 ( sp_p + ( r + s ) * er ) let sp_firstp p2 spline p2 loop let phi ( phi + dphi ) let r ( a * phi * pi/180 ) let er ( pnt_xy ( cos phi ) ( sin phi ) ) let p2 ( sp_p + ( r + s ) * er ) p2 exit_if ( phi > phi2 ) end_loop end end let sp_lastp p2 end_define define EVA_spirale_zeichne parameter dphi parameter p parameter faktor parameter auftrennen init_part 'SPIRALE' let sp_p p color yellow linetype dot_center line (pnt_xy ((X_OF p)-sdurchmesser) (Y_OF p)) (pnt_xy ((X_OF p)+sdurchmesser) (Y_OF p)) line (pnt_xy (X_OF p) ((Y_OF p)-sdurchmesser)) (pnt_xy (X_OF p) ((Y_OF p)+sdurchmesser)) EVA_spirale_spline dphi 0 if (auftrennen) convert_spline faktor sp_lastp end_if init_subpart 'Spiralenwand' color white linetype solid EVA_spirale_spline dphi (sp_s) if ( auftrennen ) convert_spline faktor sp_lastp end_if end_part init_subpart 'Spiralenwand' color white linetype solid EVA_spirale_spline dphi (-sp_s) if ( auftrennen ) convert_spline faktor sp_lastp end_if end_part end_part end_define define EVA_spirale_datei parameter d parameter l parameter s parameter phi1 parameter phi2 LET sp_s (s/2) open_outfile 1 del_old (EVA_temp_dir+EVA_dateiname) write_file 1 '--------------------------------------------' write_file 1 'Berechnung archimedische Spirale mit ME10 ' write_file 1 '--------------------------------------------' write_file 1 ('Geg: Durchmesser d : ' + str d ) write_file 1 (' Länge l : ' + str l ) write_file 1 (' Rohrdurchmesser s : ' + str s ) write_file 1 (' Anfangswinkel phi1: ' + str phi1 ) write_file 1 (' Endwinkel phi2: ' + str phi2 ) write_file 1 '----------+----------+----------+----------+' write_file 1 'Abstand Windungen Durchmesser L„nge ' write_file 1 '----------+----------+----------+----------+' loop EVA_spirale_rechne 1 phi1 phi2 EVA_spirale_rechne (d/sp_d) phi1 phi2 EVA_spirale_len EVA_spirale_format sp_ab 10 0 let w1 swert EVA_spirale_format sp_wi 10 2 let w2 swert EVA_spirale_format sp_d 10 2 let w3 swert EVA_spirale_format sp_len 10 0 let w4 swert write_file 1 (w1 + '|' + w2 + '|' + w3 + '|' + w4 +'|' ) exit_if ( sp_len <= l ) let phi2 ( phi2 - 360 ) exit_if ( phi2 < 0 ) end_loop write_file 1 '----------+----------+----------+----------+' write_file 1 (' Endwinkel phi2: ' + str phi2 ) write_file 1 '--------------------------------------------' write_file 1 '' write_file 1 'Variation des Abstandes ' write_file 1 '--------------------------------------------' EVA_spirale_rechne1 phi1 phi2 l write_file 1 '--------------------------------------------' close_file 1 end_define DEFINE EVA_SP_eingabe_abstand READ NUMBER 'Aussendurchmesser eingeben' abstand END_DEFINE DEFINE EVA_SP_eingabe_laenge READ NUMBER 'GesamtlÌnge L der Rohrspirale eingeben' laenge END_DEFINE DEFINE EVA_SP_eingabe_durchmesser READ NUMBER 'Rohrdurchmesser D eingeben' sdurchmesser END_DEFINE DEFINE EVA_SP_eingabe_r_min READ NUMBER 'Anfangswinkel eingeben' rmin END_DEFINE DEFINE EVA_SP_eingabe_r_max REPEAT READ NUMBER 'Endwinkel eingeben' rmax UNTIL (rmax >= (rmin+360)) END_DEFINE DEFINE EVA_SPIRALE { PARAMETER W1 } {### Durchmesser ###} { PARAMETER W2 } {### Laenge ###} { PARAMETER W3 } {### Durchmesser Rohr ###} { PARAMETER W4 } {### Anfangswinkel ###} { PARAMETER W5 } {### Endwinkel ###} { PARAMETER W7 } {### Faktor ###} { PARAMETER W8 } {### auftrennen ###} LOCAL W9 EVA_SP_eingabe_abstand EVA_SP_eingabe_laenge EVA_SP_eingabe_durchmesser EVA_SP_eingabe_r_min EVA_SP_eingabe_r_max { IF ((W1=0) OR (W2=0) OR (W3=0) OR (W4=0) OR (W5=0)) DISPLAY ('Bitte alle Werte eingeben.') CANCEL END_IF } READ PNT 'Einfuegepunkt antippen'W9 EVA_spirale_datei abstand laenge sdurchmesser rmin rmax INQ_ENV 3 LET EVA_FARBE (INQ 201) LET EVA_LINIE (INQ 301) EVA_spirale_zeichne 15 W9 1 0 LINETYPE EVA_LINIE COLOR EVA_FARBE END_DEFINE