#**************************************************************************
#  Sturz/Randsturz: A1-Laengseisen und B2-/B4-Buegel
#**************************************************************************
# Überarb. 2021-03-17 LF Eingabemaske + diverses
#
save_fsm();

# Variablenbennung   und Vorbelegung zum Testen
# Integervariablen
name(i60,"xanz_o");  xanz_o = 2;   # Anzahl A1-Laengseisen oben
name(i61,"xanz_u");  xanz_u = 3;   # Anzahl A1-Laengseisen unten
name(i62,"xd_o");    xd_o   = 12;  # Durchmesser A1-Laengseisen oben
name(i63,"xd_u");    xd_u   = 12;  # Durchmesser A1-Laengseisen unten
name(i64,"xanz_s");  xanz_s = 1;   # Anzahl A1-Stegbewehrung pro Seite
name(i65,"xd_s");    xd_s   = 10;  # Durchmesser A1-Stegbewehrung
name(i66,"xd_b");    xd_b   = 8;   # Durchmesser B2-/B4-Buegel
name(i67,"xposnz");  xposnz = 3;   # Art der Positionsnummer Laengseisen
name(i68,"xpos_s");  xpos_s = 3;   # Art der Positionsnummer Stegbewehrung
name(i69,"xpos_b");  xpos_b = 6;   # Art der Positionsnummer Buegel
name(i70,"xart");    xart   = 0;   # Art des Sturzes: Randsturz ja/nein ?
name(i71,"xwahl");   xwahl  = 1;   # Auswahl: St. v. Decke getrennt ja/nein ?
name(i72,"xumfa");   xumfa  = 0;   # Umfahrungssinn 0=math.Positiv(Gegenuhrteigersinn)  1=math.Negativ

# Realvariablen 
name(r60,"xbetde");  xbetde = 0.03* WCOIUF;  # Variable fuer Betondeckung allgemein
name(r61,"xbet_o");  xbet_o = 0.03* WCOIUF;  # Variable fuer Betondeckung Decke oben
name(r62,"xdik");    xdik = 0.18* WCOIUF;    # Deckendicke
name(r63,"xhoch");   xhoch = 0.50* WCOIUF;   # Hoehe Sturz (bis OK Decke)
name(r64,"xlang");   xlang = 1.0* WCOIUF;    # Laenge der Oeffnung
name(r65,"xaufl");   xaufl = 0.25* WCOIUF;   # Auflager links
name(r66,"xaufr");   xaufr = 0.25* WCOIUF;   # Auflager rechts
name(r67,"xbreit");  xbreit = 0.24* WCOIUF;  # Breite Sturz
name(r68,"xobp_a");  xobp_a = 0.75* WCOIUF;  # Ueberstaende der Eisen oben (siehe Maske)
name(r69,"xunp_a");  xunp_a = 1.0* WCOIUF;   # Para A Eisen unten
name(r70,"xsp_a");   xsp_a = 1.0* WCOIUF;    # Para A Stegbewehrung
name(r71,"xbp_cz");   xbp_cz= 0.3* WCOIUF;   # Para C B2-/ E B4-Buegel (Öffnungwinkel)
name(r72,"xbp_dz");   xbp_dz = 0.12* WCOIUF; # Para D B2-/B4-Buegel (Haken)
name(r73,"xbp_av");   xbp_av = 0.75* WCOIUF; # Para A B4-Buegel (in Decke)
name(r74,"xabs_b");  xabs_b = 0.15* WCOIUF;  # Abstand Buegel
name(r75,"xunter");  xunter = 25.0* WCOIUF; # Abstand Sturz zu Decke
name(r76,"wi_le");   wi_le = 0.0;   # Winkel Laengsrichtung  (fuer 3D)
name(r77,"wi_br");   wi_br = PI/2.0;# Winkel in Tiefe (fuer 3D)
name(r78,"xabst_s"); xabst_s = 0.25* WCOIUF;# Abstand Stegbew, wenn >1
# Punktvariablen
name(p60,"xeinfp"); xeinfp.x=500.0; xeinfp.y=500.0; xeinfp.z=0.0; # Ansicht
name(p61,"xlendp"); xeinfp.x=500.0; xeinfp.y=500.0; xeinfp.z=0.0; # Ansicht
name(p62,"xbendp"); xeinfp.x=500.0; xeinfp.y=500.0; xeinfp.z=0.0; # Ansicht
name(p63,"xeinfs"); xeinfs.x=1000.0; xeinfs.y=500.0; xeinfs.z=0.0; # Schnitt
name(p64,"xhendp"); xeinfs.x=1000.0; xeinfs.y=500.0; xeinfs.z=0.0; # Schnitt
# Textvariablen
name(s60,"txformat"); # Dialog Formatanweisung
 
#Aufruf aus 3D Bauteilbewehrung->Punkte sind vorgegeben.    
if(DREIDBAUTEIL = 1) then 
	begin 
	sbwecke(1001,xeinfp,0);
	sbwecke(1002,xlendp,0);
	sbwecke(1003,xbendp,0);
	sbwecke(1004,xhendp,0);	
	distance(xeinfp,xlendp,xlang);
	distance(xlendp,xbendp,xbreit);
		xhoch = xeinfp.z - xhendp.z; 
		if(xhoch < 0.0)then xhoch = xhoch * -1.0;
	angle(xeinfp,xlendp,wi_le);
	angle(xlendp,xbendp,wi_br);
	end;
 
     
# Umfahrungssinn wg. drehen der Eisen in das Bauteil
p1 = xeinfp;
p2 = xlendp;
p3 = xbendp;
CALC_AREA(1,3,r1,p4,xumfa);

    TRANSLATE_TEXT(s1,-1,"WCO_SBW","");	# aktiviert übersetzte Texte aus Datei	
    
	if (wcoiuf = 1) then	# Anzahl Kommastellen im Dialog
   	s21 = "-8.3";
   	else if (wcoiuf = 100) then
   	s21 = "-8.1";
   	else if (wcoiuf = 1000) then
   	s21 = "-8.0";
   	end;      

	string_copy(txformat,"-30.30");
	dlg_init(): #Init new Dialog

	TRANSLATE_TEXT(s1,25,"Abmessungen","");
	STRING_COPY(s2,s1);  STRING_CAT(s2,":  "); STRING_CAT(s2,xlang,s21);
	STRING_CAT(s2," / "); STRING_CAT(s2,xbreit,s21); STRING_CAT(s2," / "); STRING_CAT(s2,xhoch,s21);
			dlg_label(1,1,s2,40); 

	TRANSLATE_TEXT(s1,1001,"Betondeckung",txformat));			dlg_editbox(1,2,s1,xbetde,10);
	
	TRANSLATE_TEXT(s2,17,"Auflager","");	
	TRANSLATE_TEXT(s3,18,"links","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,3,s1,xaufl,10);
			
	TRANSLATE_TEXT(s2,17,"Auflager","");	
	TRANSLATE_TEXT(s3,19,"rechts","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,4,s1,xaufr,10);
		
	TRANSLATE_TEXT(s2,1004,"Anzahl","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,5,s1,xanz_o,10);			

	TRANSLATE_TEXT(s2,1003,"Durchm","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,6,s1,xd_o,10);
			
	TRANSLATE_TEXT(s2,1004,"Anzahl","");	
	TRANSLATE_TEXT(s3,1007,"Stegbewehrung","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,7,s1,xanz_s,10);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1007,"Stegbewehrung","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,8,s1,xabst_s,10);
		
	TRANSLATE_TEXT(s2,1003,"Durchm","");	
	TRANSLATE_TEXT(s3,1007,"Stegbewehrung","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,9,s1,xd_s,10);

	TRANSLATE_TEXT(s2,1004,"Anzahl","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,10,s1,xanz_u,10);	
	
	TRANSLATE_TEXT(s2,1003,"Durchm","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,11,s1,xd_u,10);		

	TRANSLATE_TEXT(s2,1002,"Abstand",""); 
	TRANSLATE_TEXT(s3,1000,"Bügel","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,12,s1,xabs_b,10);

	TRANSLATE_TEXT(s2,1015,"Biegeform",""); 
	TRANSLATE_TEXT(s3,1000,"Bügel","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_list_set(1,"B2",2);
		dlg_list_set(2,"B4",2);
		dlg_listbox(1,13,s1,10,2);

	TRANSLATE_TEXT(s2,1003,"Durchmesser",""); 
	TRANSLATE_TEXT(s3,1000,"Bügel","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,14,s1,xd_b,10);

	TRANSLATE_TEXT(s3,1000,"Bügel",""); 
	STRING_COPY(s2,"Para C B2/ E B4-"); STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);			
		dlg_editbox(1,15,s1,xbp_cz,10);

	TRANSLATE_TEXT(s3,1000,"Bügel",""); 
	STRING_COPY(s2,"Para D B2/B4-"); STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,16,s1,xbp_dz,10);

	TRANSLATE_TEXT(s3,1000,"Bügel",""); 
	STRING_COPY(s2,"Para A B4-"); STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);			
		dlg_editbox(1,17,s1,xbp_av,10);
			
	TRANSLATE_TEXT(s1,22,"Sturz",txformat); 
	dlg_start(s1,i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
	if( i5 < 0) then exit;
      
STABZEI  = 1;     POSNRZEI=0;     VERTEILZEI=0;
VTLABST=0.5*WCOIUF;  
VLPOSZEI = 0;     ANSICHT=2;
HAKENVORN= 0;	  HAKENHINT=0;
POSANZAHL= 1;     BTANZAHL=1;     BWLAGE=1;
TEXTABST = 0.0;
STABSPIEG= 0;     STABKREIS=6;  
BOGEN    = 0;     POSNRLI=0;
STABZEIFAK= 1.0;  POSDREWI=0.0;
	 
#Buegel...................
		dlg_list_get(s8,i10,2); # gewählte Bügelform

if(s8 = "B2") then begin
	BWFORM("B2");
	DURCHM   = xd_b;
	ABSTAND  = xabs_b;
	r1 = 2.0 * xbetde;
	PARA_A = xbreit - r1; 
	PARA_B = xhoch  - r1;
	PARA_C = xbp_cz:
	PARA_D = xbp_dz;
	r1 = xlang + xaufl + xaufr;
	ANZAHL  = (r1 / ABSTAND)+1;
	stabmod();
	STABECKE=4;
	STABEIWI=0.0;     STABEIWI_Y=90.0;     STABEIWI_X=90.0;   
		if(xumfa = 0) then
		begin
		STABEIWI_Y=270.0;
		STABEIWI_X=270.0;   
		end;
	VERLEGEWINKEL   = wi_le*180.0/PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF=xeinfp;
	r1 = (anzahl-1) * abstand;
	r1 = r1 - xlang;
	r1 = r1 / -2.0;
	polar(stabanf,wi_le,r1,stabanf);
	polar(stabanf,wi_br,xbetde,stabanf);
	stabanf.z = stabanf.z + xbetde;
	LAGEPOSNR=xeinfp;
	polar(LAGEPOSNR,wi_br,-0.5*WCOIUF,LAGEPOSNR);
	stabgeo();
end;	

if(s8 = "B4") then begin
	BWFORM("B4");
	DURCHM   = xd_b;
	ABSTAND  = xabs_b;
	r1 = 2.0 * xbetde;
	PARA_A = xbp_av;
	PARA_C = xbreit - r1; 
	PARA_B = xhoch  - r1;
	PARA_E = xbp_cz;
	PARA_D = xbp_dz;
	r1 = xlang + xaufl + xaufr;
	ANZAHL  = (r1 / ABSTAND)+1;
	stabmod();
	STABECKE=3;
	STABEIWI=0.0;     STABEIWI_Y=90.0;     STABEIWI_X=90.0;   
		if(xumfa = 0) then
		begin
		STABEIWI_Y=270.0;
		STABEIWI_X=270.0;   
		end;
	VERLEGEWINKEL   = wi_le*180.0/PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF=xeinfp;
	r1 = (anzahl-1) * abstand;
	r1 = r1 - xlang;
	r1 = r1 / -2.0;
	polar(stabanf,wi_le,r1,stabanf);
	polar(stabanf,wi_br,xbetde,stabanf);
	stabanf.z = stabanf.z + xbetde;
	LAGEPOSNR=xeinfp;
	polar(LAGEPOSNR,wi_br,-0.5*WCOIUF,LAGEPOSNR);
	stabgeo();
end;
	
#Laengseisen
STABEIWI=0.0;     STABEIWI_Y=0.0;     STABEIWI_X=270.0;   
if(xumfa = 0) then
	begin
	STABEIWI_X=90.0;   
	end;

VERLEGEWINKEL   = wi_br*180.0/PI;
VERLEGEWINKEL_Z = 0.0;
	
#Laengs unten
BWFORM("A1");
DURCHM   = xd_u;
ANZAHL   = xanz_u;
r1 = 2.0 * xbetde;
r2 = xd_b / 1000.0 * WCOIUF * 2.0;
r3 = xd_u / 1000.0 * WCOIUF;
r1 = r1 + r2 + r3;
r1 = xbreit - r1;
r10 = r1; # Abstand speichern für Stegbew.
ABSTAND  = r1 / (anzahl-1);
PARA_A   =  xlang + xaufl + xaufr;
stabmod();
STABECKE=1;
STABANF=xeinfp;
r1 = xaufl * -1.0;
polar(stabanf,wi_le,r1,stabanf);
r2 = xd_b / 1000.0 * WCOIUF;
r3 = xd_u / 1000.0 * WCOIUF / 2.0;
r1 = xbetde + r2 + r3;
polar(stabanf,wi_br,r1,stabanf);
stabanf.z = stabanf.z + r2 + (r3 * 1.5) + xbetde;
LAGEPOSNR=xeinfp;
polar(LAGEPOSNR,wi_br,0.5*WCOIUF,LAGEPOSNR);
stabgeo()




#Laengs Stegbew./Seite

	if(xanz_s = 1) then begin
BWFORM("A1");
	DURCHM   = xd_s;
	ANZAHL   = 2; #xanz_s;
	ABSTAND  = r10; # siehe Laengs unten 
	PARA_A   =  xlang + xaufl + xaufr;

stabmod();

	STABECKE = 1;
	STABEIWI = 0.0;     STABEIWI_Y = 0.0;     STABEIWI_X = 90.0;
	angle(xeinfp,xlendp,r22);
	VERLEGEWINKEL   = (180 / PI * r22) + 90.0;
	VERLEGEWINKEL_Z = 0.0;
	STABECKE=1;
	STABANF=xeinfp;
	r1 = xhoch / 2.0;
	stabanf.z = stabanf.z + r1;
	r1 = xaufl * -1.0;
	polar(stabanf,wi_le,r1,stabanf);
	r2 = xd_b / 1000.0 * WCOIUF;
	r3 = xd_s / 1000.0 * WCOIUF / 2.0;
	r1 = xbetde + r2 + r3;
	polar(stabanf,wi_br,r1,stabanf);
	LAGEPOSNR=xeinfp;
	polar(LAGEPOSNR,wi_br,0,LAGEPOSNR);
stabgeo()
	end;
	
	if(xanz_s > 1) then begin	

	STABANF=xeinfp;
	r1 = xhoch / 2.0;
	stabanf.z = stabanf.z + r1;
	r1 = xaufl * -1.0;
	polar(stabanf,wi_le,r1,stabanf);
	r2 = xd_b / 1000.0 * WCOIUF;
	r3 = xd_s / 1000.0 * WCOIUF / 2.0;
	r1 = xbetde + r2 + r3;
	polar(stabanf,wi_br,r1,stabanf);
	r4 = (xanz_s -1) * xabst_s;
    stabanf.z = stabanf.z - (r4 / 2);


		for i88 = 1 to xanz_s do
		begin
	
	BWFORM("A1");
	DURCHM   = xd_s;
	ANZAHL   = 2;   #xanz_s;
	ABSTAND  = r10; # siehe Laengs unten 
	PARA_A   =  xlang + xaufl + xaufr;
	stabmod();

	STABECKE = 1;
	STABEIWI = 0.0;     STABEIWI_Y = 0.0;     STABEIWI_X = 90.0;
	angle(xeinfp,xlendp,r22);
	VERLEGEWINKEL   = (180 / PI * r22) + 90.0;
	VERLEGEWINKEL_Z = 0.0;
	STABECKE=1;
	LAGEPOSNR=xeinfp;
	polar(LAGEPOSNR,wi_br,0,LAGEPOSNR);
	stabgeo()
    stabanf.z = stabanf.z + xabst_s;
		end;	
	end;	

#Laengs oben
BWFORM("A1");
DURCHM   = xd_o;
ANZAHL   = xanz_o;
r1 = 2.0 * xbetde;
r2 = xd_b / 1000.0 * WCOIUF * 2.0;
r3 = xd_u / 1000.0 * WCOIUF;
r1 = r1 + r2 + r3;
r1 = xbreit - r1;
ABSTAND  = r1 / (anzahl-1);
PARA_A   =  xlang + xaufl + xaufr;
stabmod();
STABECKE=1;
STABANF=xeinfp;
stabanf.z = stabanf.z + xhoch;
r1 = xaufl * -1.0;
polar(stabanf,wi_le,r1,stabanf);
#line(xeinfp,stabanf);
r2 = xd_b / 1000.0 * WCOIUF;
r3 = xd_o / 1000.0 * WCOIUF / 2.0;
r1 = xbetde + r2 + r3;
polar(stabanf,wi_br,r1,stabanf);
r4 = r2 + (r3 * 1.5) + xbetde;
stabanf.z = stabanf.z - r4;
LAGEPOSNR=xeinfp;
polar(LAGEPOSNR,wi_br,0.5*WCOIUF,LAGEPOSNR);
stabgeo()


restore_fsm();
end.
