#**************************************************************************
#  Deckenaussparung 4 Seiten
#**************************************************************************
# Überarb. 2021-03-16 LF Eingabemaske + div.
#
save_fsm();
# Integervariablen
name(i60,"xanz_l");		xanz_l = 2;    # Anzahl A1-Laengseisen
name(i62,"xd_l");		xd_l   = 12;   # Durchmesser A1-Laengseisen 
name(i66,"xd_b");		xd_b   = 8;    # Durchmesser A3 Stecker
name(i67,"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,"xhoch");		xhoch   = 2.50 * WCOIUF;    # Hoehe 
name(r62,"xabs_b");		xabs_b   = 0.20 * WCOIUF;   #  Abstand Stecker
name(r63,"xverank");	xverank  = 0.50 * WCOIUF;   # Verankerungslaenge/Ueberstand A1 Eisen
name(r64,"xueb_st");	xueb_st  = 0.50 * WCOIUF;   # Stecker Länge oben/unten
name(r65,"xwi_k");	                                # Jeweiliger Winkel entlang Kante 1-4
name(r66,"xwi_a");	                                # Jeweiliger senkrechter Winkel (nach aussen)entlang Kante 1-4
name(r67,"xlen_k");	                                # Jeweilige Kantenlaenge

# Punktvariablen
name(p60,"xecka"); 
name(p61,"xeckb"); 
name(p62,"xeckc"); 
name(p63,"xeckd"); 
name(p64,"xecke"); 

# Textvariablen
name(s60,"txformat"); #Dialog Formatanweisung
  
    TRANSLATE_TEXT(s1,-1,"WCO_SBW","");	# aktiviert übersetzte Texte aus Datei

	#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);
		sbwecke(1005,xecke,0);
		xhoch = xecke.z - xeckd.z;  
	end;

	distance(xecka,xeckb,r20);          # Länge (p1-p2)
	distance(xeckb,xeckc,r21);          # Länge (p2-p3)

	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; 
      
	# Umfahrungssinn wg. drehen der Eisen 
	p1 = xecka;
	p2 = xeckb;
	p3 = xeckc;
	p4 = xeckd;
	CALC_AREA(1,4,r1,p4,xumfa);
		
	string_copy(txformat,"-25.25");
   	dlg_init(): #Init new Dialog

	TRANSLATE_TEXT(s1,25,"Abmessungen","");
	STRING_COPY(s2,s1);  STRING_CAT(s2,":  "); STRING_CAT(s2,r20,s21);
	STRING_CAT(s2," / "); STRING_CAT(s2,r21,s21); STRING_CAT(s2," / "); STRING_CAT(s2,xhoch,s21);
			dlg_label(1,1,s2,45); 

	TRANSLATE_TEXT(s1,1001,"Betondeckung",txformat);			dlg_editbox(1,2,s1,xbetde,10);

	TRANSLATE_TEXT(s2,1002,"Abstand","");	
	TRANSLATE_TEXT(s3,1005,"Steckeisen","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);	
		dlg_editbox(1,3,s1,xabs_b,10);

	TRANSLATE_TEXT(s2,1003,"Durchmesser","");
	TRANSLATE_TEXT(s3,1005,"Steckeisen","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,4,s1,xd_b,10);

	TRANSLATE_TEXT(s3,1006,"ls Steckeisen","");
	STRING_COPY(s2,"ls "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,5,s1,xueb_st,10);
	
	TRANSLATE_TEXT(s2,1004,"Anzahl",""); 
	TRANSLATE_TEXT(s3,1006,"Längseisen","");	 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,6,s1,xanz_l,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(s3,1006,"ls Längseisen","");
	STRING_COPY(s2,"ls "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
		dlg_editbox(1,8,s1,xverank,10);

	TRANSLATE_TEXT(s1,11,"Deckenaussparung",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;

	# Alle 4 Kanten...............
	for i88 = 1 to 4 do  
      begin
	    
		if(i88 = 1) then begin	p1 = xecka;	p2 = xeckb; end;
		if(i88 = 2) then begin	p1 = xeckb;	p2 = xeckc;	end;
		if(i88 = 3) then begin	p1 = xeckc;	p2 = xeckd;	end;
		if(i88 = 4) then begin	p1 = xeckd;	p2 = xecka;	end;
		if(xumfa = 1) then 	begin
			p3 = p1;
			p1 = p2;
			p2 = p3;
		end;
		distance(p1,p2,xlen_k)
		angle(p1,p2,xwi_k);
		r1 = PI /2.0;
		xwi_a = xwi_k - r1;
		
		#Stecker
		BWFORM("A3");
		DURCHM   = xd_b;
		ABSTAND  = xabs_b;
		PARA_A = xueb_st;
		r1 = 2.0 * xbetde;
		PARA_B = xhoch  - r1;
		PARA_A = xueb_st;
		PARA_C = xueb_st;
		ANZAHL  = (xlen_k / ABSTAND);
		stabmod();
		STABECKE=2;
		STABEIWI=0.0;     STABEIWI_Y=-90.0;     STABEIWI_X=180.0;
		VERLEGEWINKEL   = xwi_k * 180.0/PI;
		VERLEGEWINKEL_Z = 0.0;
		STABANF=p1;
		r1 = (anzahl-1) * abstand;
		r1 = r1 - xlen_k;
		r1 = r1 / -2.0;
		stabanf.z = stabanf.z + xbetde;
		polar(stabanf,xwi_k,r1,stabanf);
		polar(stabanf,xwi_a,xbetde,stabanf);
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,1.5*WCOIUF,LAGEPOSNR);
		stabgeo();
		
		#Laengs am Rand
		BWFORM("A1");
		DURCHM   = xd_l;
		r2 = 2.0 * xbetde;
		r3 = xd_b / 1000.0 * WCOIUF;
		r4 = xd_l / 1000.0 * WCOIUF;
		r5 = r3 + r4;
		r1 = xhoch - (r2+2.0*r5);
		ANZAHL  = xanz_l;
		if(ANZAHL < 2)then ANZAHL = 2;
		ABSTAND  = r1 / (anzahl-1);
		PARA_A = xlen_k + 2.0 * xverank;
		
		stabmod();
		STABECKE=1;
		r1 = xwi_k * 180.0/PI;
		STABEIWI=360 - r1; STABEIWI_Y=270.0;     STABEIWI_X=0;
		VERLEGEWINKEL   = 0.0;
		VERLEGEWINKEL_Z = 90.0;
		STABANF=p1;
		stabanf.z = stabanf.z + r5 + xbetde;
		polar(stabanf,xwi_k, xverank*-1.0,stabanf);
		polar(stabanf,xwi_a, xbetde*2+r5,stabanf);
		
		LAGEPOSNR=p1;
		polar(LAGEPOSNR,xwi_a,0.5*WCOIUF,LAGEPOSNR);
		stabgeo();

		
	
	end; # i88 4 Kanten


	
	
restore_fsm();
end.
