#**************************************************************************
#  Rechteck Deckenfeld unt+ob Bewehrung
#**************************************************************************
#
# 2021-04-30 LF

save_fsm();
# Integervariablen
name(i60,"xdu_x");		xdu_x = 12;		# Durchmesser A1-Eisen X_Richtung unten
name(i62,"xdu_y");		xdu_y = 10;		# Durchmesser A1-Eisen Y_Richtung unten 
name(i66,"xdo_x");		xdo_x = 10;		# Durchmesser A1-Eisen X_Richtung oben
name(i67,"xdo_y");		xdo_y = 10;		# Durchmesser A1-Eisen Y_Richtung oben
name(i70,"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,"xlen_x");		xlen_x = 4.00 * WCOIUF;		# Deckenlänge X-Richtung
name(r62,"xlen_y");		xlen_y = 3.50 * WCOIUF;		# Deckenlänge Y-Richtung
name(r63,"xaufl");		xaufl  = 0.03 * WCOIUF;		# Variable fuer Betondeckung seitlich (- = Auflager)
name(r64,"xhoch");		xhoch  = 0.25 * WCOIUF;		# Deckendicke 
name(r65,"xabu_x");		xabu_x = 0.15 * WCOIUF;		# Abstand Eisen X-Richtung unten
name(r66,"xabu_y");		xabu_y = 0.175 * WCOIUF;	# Abstand Eisen Y-Richtung unten
name(r67,"xabo_x");		xabo_x = 0.15 * WCOIUF;		# Abstand Eisen X-Richtung oben
name(r68,"xabo_y");		xabo_y = 0.15 * WCOIUF;		# Abstand Eisen Y-Richtung oben
name(r69,"xwi_k");	                                # Jeweiliger Winkel entlang Kante 1-2
name(r70,"xwi_a");	                                # Jeweiliger senkrechter Winkel (nach aussen)entlang Kante 1-2
name(r71,"xlen_k");	                                # Jeweilige Kantenlaenge
# Eisendurchmesser für Berechnungen
name(r71,"xdu_x_b");	xdu_x_b = xdu_x / 1000 * WCOIUF;
name(r72,"xdu_y_b");	xdu_y_b = xdu_x / 1000 * WCOIUF;
name(r73,"xdo_x_b");	xdo_x_b = xdo_x / 1000 * WCOIUF;
name(r74,"xdo_y_b");	xdo_y_b = xdo_y / 1000 * WCOIUF;

# Punktvariablen
name(p60,"xecka"); 
name(p61,"xeckb"); 
name(p62,"xeckc"); 
name(p63,"xeckd"); 
name(p65,"xecke"); 

# Textvariablen
name(s60,"txformat"); #Dialog Formatanweisung
  
	#Aufruf aus 3D Bauteilbewehrung->Punkte sind vorgegeben.    
	if(DREIDBAUTEIL = 1) then 
		begin 
		sbwecke(1001,xecka,0);
		sbwecke(1002,xeckb,0);
		sbwecke(1003,xeckc,0);
		sbwecke(1004,xeckd,0);
		xhoch = xeckc.z - xecka.z;  
		if(xhoch < 0.0)then xhoch = xhoch * -1.0;
		xeckd = xeckc; xeckd.z = xecka.z;
	end;
      
	# Umfahrungssinn wg. drehen der Eisen 
	p1 = xecka;
	p2 = xeckb;
	p3 = xeckd;
	CALC_AREA(1,3,r1,p4,xumfa);

	distance(xecka,xeckd,xlen_x);          # Deckenlänge X-Richtung
	distance(xeckd,xeckb,xlen_y);          # Deckenlänge y-Richtung			

	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,"-34.34");

   	dlg_init(): #Init new Dialog
   	
	TRANSLATE_TEXT(s1,25,"Abmessungen","");
	STRING_COPY(s2,s1);  STRING_CAT(s2,"  X:  "); STRING_CAT(s2,xlen_x,s21);
	STRING_CAT(s2," Y: "); STRING_CAT(s2,xlen_y,s21);STRING_CAT(s2," Z: "); STRING_CAT(s2,xhoch,s21);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,50);	
			dlg_label(1,1,s1,55); 
			
	TRANSLATE_TEXT(s2,1001,"Betondeckung","");
	TRANSLATE_TEXT(s3,20,"unten","");
	TRANSLATE_TEXT(s4,34,"und","");
	TRANSLATE_TEXT(s5,21,"oben","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); ; STRING_CAT(s2,s4); 
	STRING_CAT(s2," "); STRING_CAT(s2,s5);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,2,s1,xbetde,10);
		
	TRANSLATE_TEXT(s2,1001,"Betondeckung","");
	TRANSLATE_TEXT(s3,36,"Seiten","");
	TRANSLATE_TEXT(s4,17,"Auflager","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); ; STRING_CAT(s2,"(- = "); 
	STRING_CAT(s2,s4); STRING_CAT(s2,")"); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,3,s1,xaufl,10);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," X "); STRING_CAT(s2,s4);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,4,s1,xabu_x,10);
		
	TRANSLATE_TEXT(s2,1003,"Durchmesser","");
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," X "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,5,s1,xdu_x,10);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," Y "); STRING_CAT(s2,s4);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,6,s1,xabu_y,10);
		
	TRANSLATE_TEXT(s2,1003,"Durchmesser","");
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,20,"unten","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," Y "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,7,s1,xdu_y,10);

	TRANSLATE_TEXT(s2,1017,"Bewehrung","");
	TRANSLATE_TEXT(s3,20,"unten","");
	TRANSLATE_TEXT(s4,34,"und","");
	TRANSLATE_TEXT(s5,21,"oben","");
	TRANSLATE_TEXT(s6,35,"gleich","");
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," "); ; STRING_CAT(s2,s4); 
	STRING_CAT(s2," "); STRING_CAT(s2,s5); STRING_CAT(s2," "); ; STRING_CAT(s2,s6); STRING_CAT(s2,"? ");
	STRING_COPY(s1,""); STRING_CAT(s1,s2,50);		

	#CheckBox
	i31 = 0;
	dlg_checkbox(1,9,s1,50,i31);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," X "); STRING_CAT(s2,s4);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,11,s1,xabo_x,10);
		
	TRANSLATE_TEXT(s2,1003,"Durchmesser","");
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," X "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,12,s1,xdo_x,10);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," Y "); STRING_CAT(s2,s4);
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,13,s1,xabo_y,10);
		
	TRANSLATE_TEXT(s2,1003,"Durchmesser","");
	TRANSLATE_TEXT(s3,1008,"Stäbe","");
	TRANSLATE_TEXT(s4,21,"oben","");		 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," Y "); STRING_CAT(s2,s4); 
	STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);		
		dlg_editbox(1,14,s1,xdo_y,10);

	TRANSLATE_TEXT(s1,26,"Decke",txformat); 
	dlg_start(s1,i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
	if( i5 < 0) then exit;
	   
	if(i31 = 1) then begin
	xabo_x = xabu_x; xdo_x = xdu_x; xabo_y = xabu_y; xdo_y = xdu_y;
	end;

	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;

	if(xumfa = 1) then 	begin
		p3 = p1;
		p1 = p2;
		p2 = p3;
	end;

	# Stäbe X (y_Richtung) unten
	
	angle(xecka,xeckd,xwi_k);
	r1 = PI / -2.0;
	xwi_a = xwi_k - r1;	
	
	BWFORM("A1");
		DURCHM   = xdu_x;
		ABSTAND  = xabu_x;
		PARA_A = xlen_y - (xaufl * 2.0);
		ANZAHL  = (xlen_x / ABSTAND) + 1;
		r1 = (anzahl-1) * abstand;
		r1 = r1 - xlen_x;
		r1 = r1 / -2.0;
		if(r1 < xbetde) then begin
			ANZAHL = ANZAHL - 1;
			r1 = (anzahl-1) * abstand;
			r1 = r1 - xlen_x;
			r1 = r1 / -2.0;	
		end;
	stabmod();
	
		STABECKE = 1;
		STABEIWI = 270.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
		VERLEGEWINKEL = xwi_k * 180.0/PI;
		VERLEGEWINKEL_Z = 0.0;
		STABANF = xecka;
		stabanf.z = stabanf.z  + xbetde + (xdu_x_b / 2.0);
		polar(stabanf,xwi_k,r1,stabanf);
		polar(stabanf,xwi_a,xaufl,stabanf);
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,1.5*WCOIUF,LAGEPOSNR);
	stabgeo();

	# Stäbe X (y_Richtung) oben
	
	BWFORM("A1");
		DURCHM   = xdo_x;
		ABSTAND  = xabo_x;
		PARA_A = xlen_y - (xaufl * 2.0);
		ANZAHL  = (xlen_x / ABSTAND) + 1;
		r1 = (anzahl-1) * abstand;
		r1 = r1 - xlen_x;
		r1 = r1 / -2.0;
		if(r1 < xbetde) then begin
			ANZAHL = ANZAHL - 1;
			r1 = (anzahl-1) * abstand;
			r1 = r1 - xlen_x;
			r1 = r1 / -2.0;	
		end;
	stabmod();
	
		STABECKE = 1;
		STABEIWI = 270.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
		VERLEGEWINKEL = xwi_k * 180.0/PI;
		VERLEGEWINKEL_Z = 0.0;
		STABANF = xecka;
		stabanf.z = stabanf.z + xhoch;
		stabanf.z = stabanf.z  - xbetde - (xdo_x_b / 2.0);
		polar(stabanf,xwi_k,r1,stabanf);
		polar(stabanf,xwi_a,xaufl,stabanf);
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,1.5*WCOIUF,LAGEPOSNR);
	stabgeo();
	
	# Stäbe y (x_Richtung) unten
	
	angle(xeckd,xeckb,xwi_k);
	r1 = PI / 2.0;
	xwi_a = xwi_k - r1;	
		
	BWFORM("A1");
		DURCHM   = xdu_y;
		ABSTAND  = xabu_y;
		PARA_A = xlen_x - (xaufl * 2.0);
		ANZAHL  = (xlen_y / ABSTAND) + 1;
		r1 = (anzahl-1) * abstand;
		r1 = r1 - xlen_y;
		r1 = r1 / -2.0;
		if(r1 < xbetde) then begin
			ANZAHL = ANZAHL - 1;
			r1 = (anzahl-1) * abstand;
			r1 = r1 - xlen_y;
			r1 = r1 / -2.0;	
		end;
	stabmod();
	
		STABECKE = 1;
		STABEIWI = 270.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
		VERLEGEWINKEL = xwi_k * 180.0/PI;
		VERLEGEWINKEL_Z = 0.0;
		STABANF = xeckd;
		stabanf.z = stabanf.z  + xbetde + (xdu_x_b / 2.0) + xdu_x_b;
		polar(stabanf,xwi_k, r1,stabanf);
		polar(stabanf,xwi_a, -xaufl,stabanf);
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,1.5*WCOIUF,LAGEPOSNR);
	stabgeo();

	# Stäbe x (y_Richtung) oben
	
	BWFORM("A1");
		DURCHM   = xdo_y;
		ABSTAND  = xabo_y;
		PARA_A = xlen_x - (xaufl * 2.0);
		ANZAHL  = (xlen_y / ABSTAND) + 1;
		r1 = (anzahl-1) * abstand;
		r1 = r1 - xlen_y;
		r1 = r1 / -2.0;
		if(r1 < xbetde) then begin
			ANZAHL = ANZAHL - 1;
			r1 = (anzahl-1) * abstand;
			r1 = r1 - xlen_y;
			r1 = r1 / -2.0;	
		end;
	stabmod();
	
		STABECKE = 1;
		STABEIWI = 270.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
		VERLEGEWINKEL = xwi_k * 180.0/PI;
		VERLEGEWINKEL_Z = 0.0;
		STABANF = xeckd;
		stabanf.z = stabanf.z  + xhoch;
		stabanf.z = stabanf.z  - xbetde - (xdo_x_b / 2.0) - xdo_x_b;
		polar(stabanf,xwi_k, r1,stabanf);
		polar(stabanf,xwi_a, -xaufl,stabanf);
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,1.5*WCOIUF,LAGEPOSNR);
	stabgeo();

restore_fsm();
end.
