#**************************************************************************
#  Wandabschlusseisen oben
#**************************************************************************
# 2021-04-17 LF
#
save_fsm();
	
# Variablenbennung   und Vorbelegung zum Testen
# Integervariablen
name(i60,"xd_l");    xd_l   = 12;    # Durchmesser A1-Laengseisen
name(r50,"xd_l_a");  xd_l_a = xd_l / 1000.0 * WCOIUF;  # Durchmesser A1-Laengseisen in Eingabeeinheit
name(i61,"xd_b");    xd_b   = 8;     # Durchmesser A3 Stecker
name(r51,"xd_b_a");  xd_b_a = xd_b / 1000.0 * WCOIUF;  # Durchmesser A3 Stecker in Eingabeeinheit
name(i62,"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,"xdick");   xdick = 0.30 * WCOIUF;  # Wanddicke
name(r62,"xlang");   xlang = 2.00 * WCOIUF;  # Wandlaenge
name(r63,"xverank"); xverank = 0.4* WCOIUF;  # Verankerungslaenge in der Wand
name(r64,"xueb_st"); xueb_st  = 0.0* WCOIUF; # überstand der Stecker
name(r65,"xobp_a");  xobp_a = 0.75* WCOIUF;  # Ueberstaende der Eisen oben (siehe Maske)
name(r66,"xabs_b");  xabs_b = 0.20* WCOIUF;  # Abstand Stecker
name(r67,"wi_le");   wi_le = 0.0;            # Winkel Laengsrichtung  (fuer 3D)
name(r68,"wi_br");   wi_br = PI/2.0;         # Winkel in Tiefe (fuer 3D)
name(r69,"wi_z");    wi_z = 0;               # Winkel schräge Oberkante Wand
name(r70,"xeckabst"); 						 # Abstand Eckeisen von Bügelecke
name(r71,"xlenst");	 xlenst = xueb_st + xverank;  # Stecker Para A und C
# Punktvariablen
name(p60,"xeinfp"); 
name(p61,"xlendp"); 
name(p62,"xbendp"); 
	
# 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);
	distance_dd(xeinfp,xlendp,xlang);
	distance_dd(xlendp,xbendp,xdick);
	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);
	
	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;

    TRANSLATE_TEXT(s1,-1,"WCO_SBW","");	# aktiviert übersetzte Texte aus Datei	

	string_copy(txformat,"-30.30");
   	dlg_init(): #Init new Dialog
   	
	TRANSLATE_TEXT(s1,6,"Wanddicke","");
	STRING_COPY(s2,s1);  STRING_CAT(s2,":  "); STRING_CAT(s2,xdick,s21);
		dlg_label(1,1,s2,30);  	

	TRANSLATE_TEXT(s1,1001,"Betondeckung",txformat);		dlg_editbox(1,2,s1,xbetde,10);
   	
	TRANSLATE_TEXT(s2,1003,"Durchmesser",""); 
	TRANSLATE_TEXT(s3,1005,"Stecker","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);  
		dlg_editbox(1,3,s1,xd_b,10);	
	
	TRANSLATE_TEXT(s2,1002,"Abstand",""); 
	TRANSLATE_TEXT(s3,1005,"Stecker","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);  	
		dlg_editbox(1,4,s1,xabs_b,10);	 	
   	
	TRANSLATE_TEXT(s2,24,"Überstand",""); 
	TRANSLATE_TEXT(s3,1005,"Stecker","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,5,s1,xueb_st,10);

	TRANSLATE_TEXT(s3,1005,"ls Stecker",""); 
	STRING_COPY(s2,"ls "); STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,6,s1,xverank,10);

	TRANSLATE_TEXT(s2,1003,"Durchmesser",""); 
	TRANSLATE_TEXT(s3,1006,"Längseisen","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);  
		dlg_editbox(1,7,s1,xd_l,10);
	
	TRANSLATE_TEXT(s1,1014,"Wandanschluss",txformat); 
	dlg_start(s1,i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
	if( i5 < 0) then exit;

	# verschiedene Vorberechnungen
 	
 	# Stecker Para A und C
	xlenst = xueb_st + xverank;
		if(xueb_st < 0) then begin # Wenn kein Überstand nur ls
		xlenst = xverank; 
		end;
	#text(p1,xlenst);
	
	# Abstand Längseisen von Stabecke Bügel (Du < 20mm)
	
	r10 = xd_b + (xd_b * 2.0);			# D Bügel + 1/2 Biegroll
	r11 = (xd_b * 2.0) - (xd_l / 2.0);	# 1/2 Biegroll - 1/2 D Längseisen	
	r12 = r11 / 1.414213562;			# Wurzel r11
	xeckabst = r10 - r12;				# Abstand von AK Bügel
	xeckabst = xeckabst / 1000.0 * WCOIUF; # Umrechnen in Eingabeeinheit
	

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;
		 
		 
angles_from_pts(xeinfp,xlendp,r3,wi_z,r1);
wi_z = wi_z * 180.0 / PI;
write(wi_z);
		 
#Buegel...................
BWFORM("A3");
DURCHM   = xd_b;
ABSTAND  = xabs_b;
r1 = 2.0 * xbetde;
PARA_B = xdick - r1; 
PARA_A = xlenst;
PARA_C = xlenst:
ANZAHL  = (xlang / ABSTAND)+1;
stabmod();
STABECKE=3;
STABEIWI=180;     STABEIWI_Y=90.0;     STABEIWI_X=90.0;   
if(xumfa = 0) then
	begin
	STABEIWI_Y=270.0;
	STABEIWI_X=270.0;   
	end;
	
	STABEIWI_Y=STABEIWI_Y - wi_z;
	
VERLEGEWINKEL   = wi_le*180.0/PI;
VERLEGEWINKEL_Z = wi_z ; # lf

STABANF=xeinfp;
if(xueb_st < 0) then begin
stabanf.z = stabanf.z + xueb_st;
end;
if(xueb_st > 0) then begin
stabanf.z = stabanf.z + xlenst - xverank;
end;
if(xueb_st = 0) then begin
stabanf.z = stabanf.z - xbetde;
end;
r1 = (anzahl-1) * abstand;
r1 = r1 - xlang;
r1 = r1 / -2.0;
polar(stabanf,wi_le,r1,stabanf);
polar(stabanf,wi_br,xbetde,stabanf);
p4 = stabanf; # Punkt sichern
LAGEPOSNR=xeinfp;
polar(LAGEPOSNR,wi_br,-0.5*WCOIUF,LAGEPOSNR);
stabgeo();
		
#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;
		
#Laengseisen oben
BWFORM("A1");
	DURCHM   = xd_l;
	ANZAHL   = 2;
	r1 = 2.0 * xbetde;	# beidseitig Betondeckung abziehen
	r2 = xdick - r1;    # Eisenabstand = AK Bügel
	ABSTAND  = r2 - (xeckabst * 2.0);
	PARA_A   = xlang - (xbetde * 2.0);
stabmod();

	STABEIWI = STABEIWI + wi_z;
	STABECKE = 1;
	STABANF = xeinfp; # Stabanfang an P1
	Stabanf.z = stabanf.z - (xeckabst + xbetde));
		if(xueb_st <> 0.0) then begin
			STABANF = xeinfp;
			STABANF.z = p4.z;
			Stabanf.z = stabanf.z - xeckabst;
		end;
	polar(stabanf,wi_le,xbetde,stabanf);
	polar(stabanf,wi_br,xbetde + xeckabst,stabanf);
	LAGEPOSNR=xeinfp;
	polar(LAGEPOSNR,wi_br,0.5*WCOIUF,LAGEPOSNR);
stabgeo();
	
#Laengseisen unten (optional)
#stabmod();
#r1 = xlenst ;;
#r1 = r1 - xbetde * 2.0;
#stabanf.z = stabanf.z - r1
#stabgeo();
	
	
restore_fsm();
end.
