{########## Globale Variable initialisieren ##########} LET EVA_temp_dir 'c:\temp\' {### Verzeichnis für Dateiausgabe von 'SPIRALE.OUT' ###} LET EVA_dateiname 'spirale.out' LET abstand 0 LET laenge 0 LET sdurchmesser 0 LET rmin 360 LET rmax 0 {########## ENDE Globale Variable initialisieren ##########} 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 { ## Abstand ## } parameter phi1 { ## Anzahl Drehungen ## } parameter phi2 { ## Anzahl Drehungen ## } 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 { ## gegebener Durchmesser ## } parameter l { ## gwnschte L„nge ## } parameter s { ## Durchmesser Rohr ## } parameter phi1 { ## Anzahl Drehungen ## } parameter phi2 { ## Anzahl Drehungen ## } 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_menu_body_spiralemenu01 CURRENT_MENU 'EVA_menu_body_spiralemenu01' CURRENT_SCREEN 1 MENU_LAYOUT Create_menu_layout_adjust Hlh ' | | | ' (10*Tsh+4) ' ' Tsh ' | ' Tsh ' | ' Tsh ' | ' Tsh ' | ' Tsh ' | ' Tsh ' | ' Tsh ' | ' Create_menu_point MENU_STATUS ENABLE_INQ LET sp_layout_name 'EVA_menu_body_spiralemenu01' END_DEFINE DEFINE EVA_spiraleMenu01 LET Lastmen 'spiraleMenu01' IF (I_port) Check_i_port END_IF IF (NOT I_port) MENU_BUFFER ON CURRENT_MENU 'spiraleMenu01' CURRENT_SCREEN 1 MENU_LAYOUT Menu_position RIGHT EVA_menu_body_spiralemenu01 Menu_home_point_top END MENU_STATUS ENABLE_INQ T_clear_menu Menu_control_icons MENU Colo0 Bcol5 CENTER 'Spirale' '' 1 3 MENU Bo_farbe_vorn Bo_farbe_hinten (Bo_icon) '' 2 1 MENU Colo0 Bcol1 'D Aussen ' 'EVA_SP_eingabe_abstand' 3 1 MENU Colo0 Bcol3 (' '+STR (abstand)) 'EVA_SP_eingabe_abstand' 3 2 MENU Colo0 Bcol1 'GesamtlĖnge ' 'EVA_SP_eingabe_laenge' 4 1 MENU Colo0 Bcol3(' '+STR (laenge)) 'EVA_SP_eingabe_laenge' 4 2 MENU Colo0 Bcol1 'Durchm. Rohr ' 'EVA_SP_eingabe_durchmesser' 5 1 MENU Colo0 Bcol3 (' '+STR (sdurchmesser)) 'EVA_SP_eingabe_durchmesser' 5 2 MENU Colo0 Bcol1 'Anfangswinkel' 'EVA_SP_eingabe_r_min' 6 1 MENU Colo0 Bcol3 (' '+STR (rmin)) 'EVA_SP_eingabe_r_min' 6 2 MENU Colo0 Bcol1 'Endwinkel ' 'EVA_SP_eingabe_r_max' 7 1 MENU Colo0 Bcol3 (' '+STR (rmax)) 'EVA_SP_eingabe_r_max' 7 2 MENU Colo0 Bcol1 'Spirale:' ' ' 8 1 MENU Colo0 Bcol2 'Zeichnen ' 'EVA_spirale abstand laenge sdurchmesser rmin rmax 15 5 5' 8 1 MENU Colo0 Bcol1 'Spirale:' ' ' 9 1 MENU Colo0 Bcol2 '' 'EVA_spirale abstand laenge sdurchmesser rmin rmax 15 5 5' 9 2 END_IF END_DEFINE DEFINE EVA_SP_eingabe_abstand READ NUMBER 'Aussendurchmesser eingeben' abstand EVA_spiraleMenu01 END_DEFINE DEFINE EVA_SP_eingabe_laenge READ NUMBER 'GesamtlĖnge L der Rohrspirale eingeben' laenge EVA_spiraleMenu01 END_DEFINE DEFINE EVA_SP_eingabe_durchmesser READ NUMBER 'Rohrdurchmesser D eingeben' sdurchmesser EVA_spiraleMenu01 END_DEFINE DEFINE EVA_SP_eingabe_r_min READ NUMBER 'Anfangswinkel eingeben' rmin EVA_spiraleMenu01 END_DEFINE DEFINE EVA_SP_eingabe_r_max REPEAT READ NUMBER 'Endwinkel eingeben' rmax UNTIL (rmax >= (rmin+360)) EVA_spiraleMenu01 END_DEFINE DEFINE Bo_init_icon LOCAL x LOCAL y LET x ((20*(Font_width+1)-1) DIV 2) { Mitte auf x-Achse } LET y ((5*(Text_slot_height+1)-1) DIV 2) { Mitte auf y-Achse } LET Bo_icon ( (CHR 255)+(CHR 33)+(CHR 36)+(CHR 33)+(CHR 46)+(CHR 34)+(CHR 49)+(CHR 36)+ (CHR 53)+(CHR 38)+(CHR 55)+(CHR 40)+(CHR 57)+(CHR 48)+(CHR 60)+(CHR 57)+ (CHR 63)+(CHR 68)+(CHR 65)+(CHR 79)+(CHR 66)+(CHR 88)+(CHR 67)+(CHR 97)+ (CHR 66)+(CHR 108)+(CHR 65)+(CHR 119)+(CHR 63)+(CHR 128)+(CHR 60)+ (CHR 136)+(CHR 57)+(CHR 138)+(CHR 55)+(CHR 140)+(CHR 53)+(CHR 142)+ (CHR 49)+(CHR 143)+(CHR 46)+(CHR 143)+(CHR 36)+(CHR 255)+(CHR 28)+ (CHR 36)+(CHR 28)+(CHR 46)+(CHR 29)+(CHR 51)+(CHR 32)+(CHR 56)+(CHR 35)+ (CHR 59)+(CHR 38)+(CHR 61)+(CHR 48)+(CHR 65)+(CHR 60)+(CHR 68)+(CHR 73)+ (CHR 71)+(CHR 82)+(CHR 71)+(CHR 88)+(CHR 72)+(CHR 94)+(CHR 71)+(CHR 103)+ (CHR 71)+(CHR 116)+(CHR 68)+(CHR 128)+(CHR 65)+(CHR 138)+(CHR 61)+ (CHR 141)+(CHR 59)+(CHR 144)+(CHR 56)+(CHR 147)+(CHR 51)+(CHR 148)+ (CHR 46)+(CHR 148)+(CHR 36)+(CHR 28)+(CHR 36)+(CHR 255)+(CHR 88)+ (CHR 47)+(CHR 88)+(CHR 31)+(CHR 255)+(CHR 88)+(CHR 51)+(CHR 88)+(CHR 49)+ (CHR 255)+(CHR 88)+(CHR 75)+(CHR 88)+(CHR 52)+ (CHR 255)+(CHR 90)+(CHR 20)+(CHR 91)+(CHR 20)+(CHR 92)+(CHR 19)+(CHR 93)+ (CHR 18)+(CHR 93)+(CHR 16)+(CHR 92)+(CHR 15)+(CHR 91)+(CHR 15)+(CHR 90)+ (CHR 15)+(CHR 255)+(CHR 27)+(CHR 36)+(CHR 13)+(CHR 36)+(CHR 255)+ (CHR 27)+(CHR 46)+(CHR 13)+(CHR 46)+(CHR 255)+(CHR 148)+(CHR 34)+ (CHR 148)+(CHR 10)+(CHR 255)+(CHR 143)+(CHR 34)+(CHR 143)+(CHR 21)+ (CHR 255)+(CHR 28)+(CHR 10)+(CHR 28)+(CHR 34)+(CHR 255)+(CHR 8)+(CHR 50)+ (CHR 13)+(CHR 50)+(CHR 255)+(CHR 13)+(CHR 54)+(CHR 8)+(CHR 54)+(CHR 255)+ (CHR 10)+(CHR 54)+(CHR 10)+(CHR 50)+(CHR 255)+(CHR 88)+(CHR 15)+(CHR 88)+ (CHR 20)+(CHR 84)+(CHR 20)+(CHR 84)+(CHR 15)+(CHR 255)+(CHR 88)+(CHR 17)+ (CHR 84)+(CHR 17)+(CHR 255)+(CHR 90)+(CHR 20)+(CHR 90)+(CHR 15)+(CHR 255)+ (CHR 157)+(CHR 28)+(CHR 157)+(CHR 33)+(CHR 255)+(CHR 154)+(CHR 29)+ (CHR 154)+(CHR 29)+(CHR 154)+(CHR 30)+(CHR 155)+(CHR 30)+(CHR 157)+ (CHR 30)+(CHR 255)+(CHR 154)+(CHR 28)+(CHR 155)+(CHR 28)+(CHR 157)+ (CHR 28)+(CHR 255)+(CHR 154)+(CHR 29)+(CHR 154)+(CHR 28)+ (CHR 255)+(CHR 16)+(CHR 58)+(CHR 16)+(CHR 28)+(CHR 255)+(CHR 148)+ (CHR 13)+(CHR 28)+(CHR 13)+(CHR 255)+(CHR 136)+(CHR 24)+(CHR 160)+ (CHR 24)+ (CHR 255)+(CHR 104)+(CHR 84)+(CHR 104)+(CHR 76)+(CHR 255)+(CHR 100)+ (CHR 84)+(CHR 100)+(CHR 76)+(CHR 255)+(CHR 100)+(CHR 48)+(CHR 100)+ (CHR 40)+(CHR 255)+(CHR 90)+(CHR 77)+(CHR 86)+(CHR 82)+(CHR 255)+ (CHR 86)+(CHR 77)+(CHR 90)+(CHR 82)+(CHR 255)+(CHR 90)+(CHR 33)+(CHR 86)+ (CHR 38)+(CHR 255)+(CHR 86)+(CHR 33)+(CHR 90)+(CHR 38) ) END_DEFINE DEFINE EVA_SPIRALE PARAMETER W1 {### Durchmesser ###} PARAMETER W2 {### Laenge ###} PARAMETER W3 {### Durchmesser Rohr ###} PARAMETER W4 {### Anfangswinkel ###} PARAMETER W5 {### Endwinkel ###} PARAMETER W6 {### Teilwinkel ###} PARAMETER W7 {### Faktor ###} PARAMETER W8 {### auftrennen ###} LOCAL W9 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 W1 W2 W3 W4 W5 INQ_ENV 3 LET EVA_FARBE (INQ 201) {### aktuelle Farbe der Geometrie ###} LET EVA_LINIE (INQ 301) {### aktuelle Linienart der Geometrie ###} EVA_spirale_zeichne W6 W9 W7 W8 LINETYPE EVA_LINIE COLOR EVA_FARBE END_DEFINE