# Bewehrung einer einläufigen, geraden Treppe mit Poddestanschluessen
# 3D Bauteil 2021-05-05 LF

save_fsm();

# Integervariablen
name(i60,"xd_ew");		xd_ew  = 12;	# Durchmesser Eckwinkel 1 (not used)
name(i61,"xd_ewu");		xd_ewu = 12;	# Durchmesser Eckwinkel 2 (not used)
name(i62,"xd_lau");		xd_lau = 14;	# Durchmesser Lauf unten
name(i63,"xd_lao");		xd_lao = 10;	# Durchmesser Lauf oben
name(i64,"xd_vt");		xd_vt  = 10;	# Durchmesser Verteiler oben (not used)
name(i65,"xd_bu");		xd_bu  = 10;	# Durchmesser Querbügel u. + o.
name(i66,"xd_eck");		xd_eck = 12;	# Durchmesser Ecken


# Realvariablen
name(r51,"xsteiwi");		# Steigwinkel aus xy
name(r52,"xwi");			# Steigwinkel 1/2
name(r53,"xbetde");		xbetde = 0.03 * WCOIUF;	# Betondeckung
name(r54,"xtan");			# Tangens Steigwinkel
name(r55,"xtanh");			# Tangens Steigwinkel 1/2
name(r56,"xsin");			# Sinus Steigwinkel
name(r57,"xsinh");			# Sinus Steigwinkel 1/2
name(r58,"xcos");			# Cosinus Steigwinkel
name(r59,"xtrewi");			# Treppenwinkel in XY
name(r60,"xab_ew");		xab_ew  = 0.15 * WCOIUF;	# Abstand Eckwinkel 1
name(r61,"xab_ewu");	xab_ewu = 0.15 * WCOIUF;	# Abstand Eckwinkel 2
name(r62,"xab_lau");	xab_lau = 0.125 * WCOIUF;	# Abstand Lauf unten
name(r63,"xab_lao");	xab_lao = 0.15 * WCOIUF;	# Abstand Lauf oben
name(r64,"xab_vt");		xab_vt  = 0.20 * WCOIUF;	# Abstand Verteiler oben
name(r65,"xab_bu");		xab_bu  = 0.20 * WCOIUF;	# Abstand Querbew unten und Ecken
name(r66,"xtrbre");			# Treppenbreite
name(r67,"xpodu");			# Dicke Podest unten netto
name(r68,"xpodo");			# Dicke Podest oben netto
name(r69,"xlaufd");			# Laufst netto
name(r70,"xtrela");			# Lauflänge OK Pod - OK Pod

# Stringvariablen
name(s60,"txformat"); 		# Dialog Formatanweisung

# Punkteingabe (muss überarbeitet werden neue Funktion für 3D Schnittpunkte)

	#Aufruf aus 3D Bauteilbewehrung->Punkte sind vorgegeben.    
	if(DREIDBAUTEIL = 1) then 
		begin 
		sbwecke(1001,p1,0);
		sbwecke(1002,p2,0);
		sbwecke(1003,p3,0);
		sbwecke(1004,p4,0);
		sbwecke(1005,p5,0);
	end;
	
# Eingabepunkte verarbeiten ----------------------------------------------

	angles_from_pts(p1,p2,r1,xsteiwi,xtrewi); # Drehwinkel Steigung, Drehung in xy

	p21 = p1; p22 = p2; p23 = p3; p24 = p4; p25 = p5;	# seat1
	
# Lauflänge für Bügel       
	Distance_DD(p21,p22,xtrela);

# Treppengrundriss auf 0° drehen
	
	rotate_point(p21,p1,-xtrewi); 
	rotate_point(p22,p1,-xtrewi); 	
	rotate_point(p23,p1,-xtrewi);
	rotate_point(p24,p1,-xtrewi);
	rotate_point(p25,p1,-xtrewi);

# Treppenbreite ermitteln

	xtrbre = p25.y - p21.y; 	
	p25.y = p21.y; # p25 auf Ebene p21, p22...

#	line(p21,p22); line(p22,p23); line(p23,p24); line(p24,p25); line(p25,p21);	

# Treppenpunkte auf xy-Ebene drehen (seat3)

	p31.x = p21.x; p31.y = p21.z; p31.z = 0; 
	p32.x = p22.x; p32.y = p22.z; p32.z = 0;  
	p33.x = p23.x; p33.y = p23.z; p33.z = 0;  
	p34.x = p24.x; p34.y = p24.z; p34.z = 0;
	p35.x = p25.x; p35.y = p25.z; p35.z = 0;

#	line(p31,p32); line(p32,p33); line(p33,p34); line(p34,p35); line(p35,p31);

# Linien für die Schnittpunkte an den Treppenecken erzeugen

	setcolor(6);
	gst_color(2);

	p10 = p31; 
	p11.x = p31.x - 2.0 * WCOIUF; p11.y = p31.y + xbetde;
	p12.x = p31.x + 2.0 * WCOIUF; p12.y = p31.y + xbetde;
#		Line(p11,p12); text(p11,"11"); text(p12,"12");
	p13 = p32; 
	p14.x = p32.x - 2.0 * WCOIUF; p14.y = p32.y + xbetde;
	p15.x = p32.x + 2.0 * WCOIUF; p15.y = p32.y + xbetde;
#		Line(p14,p15); text(p14,"14"); text(p15,"15");
	p16 = p33; 
	p17.x = p33.x - 2.0 * WCOIUF; p17.y = p33.y - xbetde;
	p18.x = p33.x + 2.0 * WCOIUF; p18.y = p33.y - xbetde;
#		Line(p17,p18); text(p17,"17"); text(p18,"18");
	p19 = p35; 
	p19.x = p35.x - 2.0 * WCOIUF; p19.y = p35.y - xbetde;
	p20.x = p35.x + 2.0 * WCOIUF; p20.y = p35.y - xbetde;
#		Line(p19,p20); text(p19,"19"); text(p20,"20");

# Winkel im Bogenmass

	angle(p31,p32,xsteiwi); # Steigungswinkel
	xwi = xsteiwi / 2.0;	# Steigungswinkel 1/2

	tan(xsteiwi,xtan); 		# gegenkat Steigungswi
	sin(xsteiwi,xsin); 		# ankat Steigungswi
	cos(xsteiwi,xcos);		# ankat-hypo Steigungswi
	tan(xwi,xtanh); 		# gegenkat Steigungswi 1/2
	sin(xwi,xsinh); 		# ankat Steigungswi 1/2

	p21 = p31;
	p21.y = p21.y + xbetde;
	p21.x = p21.x - (xtanh * xbetde);
	p21.y = p21.y - (xtan * (1.0 * WCOIUF));
	p21.x = p21.x - (1.0 * WCOIUF);

	p22 = p32;
	p22.y = p22.y + xbetde;
	p22.x = p22.x - (xtanh * xbetde);
	p22.y = p22.y + (xtan * (1.0 * WCOIUF));
	p22.x = p22.x + (1.0 * WCOIUF);

#		Line(p21,p22); text(p21,"21"); text(p22,"22");

	p23 = p34;
	p23.y = p23.y - xbetde;
	p23.x = p23.x + (xtanh * xbetde);
	p24 = p23;
	p24.y = p24.y - (xtan * (3.0 * WCOIUF));
	p24.x = p24.x - (3.0 * WCOIUF);
	p23.y = p23.y + (xtan * (3.0 * WCOIUF));
	p23.x = p23.x + (3.0 * WCOIUF);
#		line(p23,p24); text(p23,"23"); text(p24,"24");

# Schnittpunkte an den Treppenecken ermitteln
 
	inters(p11,p12,p21,p22,p50); #text(p50,"50");
	inters(p11,p12,p24,p23,p51); #text(p51,"51");
	inters(p19,p20,p24,p23,p52); #text(p52,"52");
	inters(p19,p20,p21,p22,p53); #text(p53,"53");	
	
	inters(p14,p15,p21,p22,p54); #text(p54,"54");	
	inters(p14,p15,p24,p23,p55); #text(p55,"55");
	inters(p17,p18,p24,p23,p56); #text(p56,"56");	
	inters(p17,p18,p21,p22,p57); #text(p57,"57");

# Treppenpunkte auf xz-Ebene drehen 

	p25.x = p50.x; p25.z = p50.y; p25.y = p1.y;
	p26.x = p51.x; p26.z = p51.y; p26.y = p1.y;
	p27.x = p52.x; p27.z = p52.y; p27.y = p1.y;
	p28.x = p53.x; p28.z = p53.y; p28.y = p1.y;
	p29.x = p54.x; p29.z = p54.y; p29.y = p1.y;
	p30.x = p55.x; p30.z = p55.y; p30.y = p1.y;
	p31.x = p56.x; p31.z = p56.y; p31.y = p1.y;
	p32.x = p57.x; p32.z = p57.y; p32.y = p1.y;

# Treppengrundriss auf 0° drehen
	
	rotate_point(p25,p1,xtrewi); #text(p25,"25");
	rotate_point(p26,p1,xtrewi); #text(p26,"26");
	rotate_point(p27,p1,xtrewi); #text(p27,"27");
	rotate_point(p28,p1,xtrewi); #text(p28,"28");
	rotate_point(p29,p1,xtrewi); #text(p29,"29");
	rotate_point(p30,p1,xtrewi); #text(p30,"30");
	rotate_point(p31,p1,xtrewi); #text(p31,"31");
	rotate_point(p32,p1,xtrewi); #text(p32,"32");
	
# Treppengeometrie netto ermitteln	

	xpodu = p27.z - p26.z; # Dicke Podest unten netto	
	xpodo = p31.z - p30.z; # Dicke Podest oben netto

	distance(p29,p30,r22);	# hyp Laufst netto
	xlaufd = (r22 * xsin);	# Laufst netto

# Ende Treppenpunkte verarbeiten -------------------------------------

# Eingabemaske ------------------------------------

	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,12,"Breite","");
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	STRING_COPY(s2,s1);  STRING_CAT(s2," "); STRING_CAT(s2,s3);
	STRING_CAT(s2,":  "); STRING_CAT(s2,xtrbre,s21);
			dlg_label(1,1,s2,30);

	r20 = xlaufd; r20 = r20 + (xbetde * 2.0);
	TRANSLATE_TEXT(s1,37,"Dicke","");
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	STRING_COPY(s2,s1);  STRING_CAT(s2," "); STRING_CAT(s2,s3);
	STRING_CAT(s2,":  "); STRING_CAT(s2,r20,s21);
			dlg_label(1,2,s2,30);
			
	r20 = xpodu; r20 = r20 + (xbetde * 2.0);
	TRANSLATE_TEXT(s1,37,"Dicke","");
	TRANSLATE_TEXT(s3,39,"Podest","");
	TRANSLATE_TEXT(s4,20,"unten","");			
	STRING_COPY(s2,s1);  STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," ");
	STRING_CAT(s2,s4); STRING_CAT(s2,":  "); STRING_CAT(s2,r20,s21);
			dlg_label(1,3,s2,30);
			
	r20 = xpodo; r20 = r20 + (xbetde * 2.0);
	TRANSLATE_TEXT(s1,37,"Dicke","");
	TRANSLATE_TEXT(s3,39,"Podest","");
	TRANSLATE_TEXT(s4,21,"oben","");			
	STRING_COPY(s2,s1);  STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_CAT(s2," ");
	STRING_CAT(s2,s4); STRING_CAT(s2,":  "); STRING_CAT(s2,r20,s21);
			dlg_label(1,4,s2,30);				
	
	TRANSLATE_TEXT(s1,1001,"Betondeckung",txformat);		dlg_editbox(1,6,s1,xbetde,10);

	TRANSLATE_TEXT(s2,1003,"Durchmesser",""); 
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	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,7,s1,xd_lau,10);

	TRANSLATE_TEXT(s2,1002,"Abstand",""); 
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	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,8,s1,xab_lau,10);

	TRANSLATE_TEXT(s2,1003,"Durchmesser",""); 
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	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,9,s1,xd_lao,10);		
		
	TRANSLATE_TEXT(s2,1002,"Abstand",""); 
	TRANSLATE_TEXT(s3,38,"Treppenlauf","");
	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,10,s1,xab_lao,10);		
		
	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,11,s1,xd_bu,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,xab_bu,10);

# DU Eckeisen = DU Treppenlauf unten
	xd_eck = xd_lau;

	TRANSLATE_TEXT(s1,1017,"Bewehrung",txformat); 
	TRANSLATE_TEXT(s2,38,"Treppenlauf",""); 
	STRING_CAT(s2," "); STRING_CAT(s2,s3); STRING_COPY(s1,""); STRING_CAT(s1,s2,txformat);
	dlg_start(s1,i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
	if( i5 < 0) then exit;

# Ende Eingabemaske ------------------------------------

# Winkel quer zur Treppe Verlegewinkel = xtrewi 
	r1 = xtrewi + (pi / 2.0);

		# Bewehrung ***********

	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;

		# 	Eckeisen unten unten-unten *********
		
BWFORM("C1");

# Stabanzahl rechnen
	r33 = xtrbre - (2.0 * xbetde); i40 = (r33 / xab_lau) + 1;
	r34 = xtrbre - ((i40 - 1) * xab_lau); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;
    	if(r34 > (xab_lau / 1.99)) then begin
    		i40 = i40 + 1;
    		r34 = xtrbre - ((i40 - 1) * xab_lau); 
    		r34 = r34 / 2.0;	
		end;

    Anzahl = i40;
	Abstand = xab_lau;
	Durchm = xd_lau;
# Parameter berechnen
	para_a = 1.0 * WCOIUF; 
	r10 = (1.0 * WCOIUF) * xcos;	# Ankathete		
	para_b = r10;
	r10 = (1.0 * WCOIUF) * xsin;	# Ankathete	
	para_c= r10;		
stabmod();
	
	STABECKE = 2;		STABCO = 1;
	STABEIWI = 90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p25;
	stabanf.z = stabanf.z + (xd_bu / 1000 * WCOIUF);
	polar(stabanf,xtrewi, - (xd_bu / 1000 * WCOIUF) * (xtan / 2.0),stabanf);
	polar(stabanf,r1,r34 + ((xd_lau / 1000 * WCOIUF) / 2.0),stabanf);	
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Eckeisen unten oben-unten *********
		
BWFORM("C1");

# Stabanzahl rechnen
	r33 = xtrbre - (2.0 * xbetde); (i40 = r33 / xab_lau) + 1;
	r34 = xtrbre - ((i40 - 1) * xab_lau); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;	
    	if(r34 > (xab_lau / 1.99)) then begin
    		i40 = i40 + 1;
    		r34 = xtrbre - ((i40 - 1) * xab_lau); 
    		r34 = r34 / 2.0;
		end;

    Anzahl = i40;
	Abstand = xab_lau;
	Durchm = xd_lau;
# Parameter berechnen
	para_a = 1.0 * WCOIUF; 
	r10 = (0.30 * WCOIUF) * xcos;	# Ankathete		
	para_b = r10;
	r10 = (0.30 * WCOIUF) * xsin;	# Ankathete	
	para_c= r10;		
stabmod();
	
	STABECKE = 2;		STABCO = 2;
	STABEIWI = 90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p28;
	stabanf.z = stabanf.z - ((xd_bu + xd_lau) / 1000 * WCOIUF);
	polar(stabanf,xtrewi, - (((xd_bu + xd_lau) / 1000 * WCOIUF) / xsin),stabanf);		 
	polar(stabanf,xtrewi, - (((xd_bu + xd_lau) / 1000 * WCOIUF) / xtan),stabanf);	
	polar(stabanf,r1,r34 + ((xd_lau / 1000 * WCOIUF) / 2.0),stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Eckeisen unten unten-oben *********
		
stabmod();
	
	STABECKE = 2;		STABCO = 3;
	STABEIWI = 90.0 + (180 / PI * xsteiwi);     STABEIWI_Y = 90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p26; 
	stabanf.z = stabanf.z + ((xd_bu + xd_lau) / 1000 * WCOIUF);
	polar(stabanf,xtrewi, + (((xd_bu + xd_lau) / 1000 * WCOIUF) / xtan),stabanf);		 
	polar(stabanf,xtrewi, + (((xd_bu + xd_lau) / 1000 * WCOIUF) / xsin),stabanf);	
	polar(stabanf,r1,r34 - ((xd_lau / 1000 * WCOIUF) / 2.0),stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Eckeisen oben unten-oben *********
		
stabmod();
	
	STABECKE = 2;		STABCO = 4;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p30;
	stabanf.z = stabanf.z + ((xd_bu + xd_lau) / 1000 * WCOIUF); 
	polar(stabanf,xtrewi, + (((xd_bu + xd_lau) / 1000 * WCOIUF) / xsin),stabanf);
	polar(stabanf,xtrewi, + (((xd_bu + xd_lau) / 1000 * WCOIUF) / xsin),stabanf);
	polar(stabanf,r1,r34,stabanf);			
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Laufeisen unten unten-oben *********

BWFORM("C1");

# Stabanzahl rechnen
	r33 = xtrbre - (2.0 * xbetde); i40 = (r33 / xab_lau) + 1;
	r34 = xtrbre - ((i40 - 1) * xab_lau); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;
    	if(r34 > (xab_lau / 1.99)) then begin
    		i40 = i40 + 1;
    		r34 = xtrbre - ((i40 - 1) * xab_lau); 
    		r34 = r34 / 2.0;	
		end;
    Anzahl = i40;
	Abstand = xab_lau;
	Durchm = xd_lau;
# Parameter berechnen
	para_a = xtrela - (0.10 * WCOIUF); 
	r10 = (0.30 * WCOIUF) * xcos;	# Ankathete		
	para_b = r10;
	r10 = (0.30 * WCOIUF) * xsin;	# Ankathete	
	para_c= r10;		
stabmod();
	
	STABECKE = 2;		STABCO = 7;
	STABEIWI = -90.0 + (180 / PI * xsteiwi);     STABEIWI_Y = 90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p32; 
	Stabanf.z = stabanf.z - ((xd_bu + xd_lao) / 1000 * WCOIUF); 
	polar(stabanf,xtrewi, - (((xd_bu + xd_lao) / 1000 * WCOIUF) / xtan),stabanf);
	polar(stabanf,xtrewi, - (((xd_bu + xd_lau) / 1000 * WCOIUF) / xsin),stabanf);
	polar(stabanf,r1,r34 - ((xd_lau / 1000 * WCOIUF) / 2.0),stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Laufeisen oben oben-oben *********

BWFORM("C1");

# Stabanzahl rechnen
	r33 = xtrbre - (2.0 * xbetde); i40 = (r33 / xab_lao) + 1;
	r34 = xtrbre - ((i40 - 1) * xab_lao); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;	
    	if(r34 > (xab_lao / 1.99)) then begin
    		i40 = i40 + 1;
    		r34 = xtrbre - ((i40 - 1) * xab_lao); 
    		r34 = r34 / 2.0;	
		end;

    Anzahl = i40;
	Abstand = xab_lao;
	Durchm = xd_lao;
# Parameter berechnen
	para_a = xtrela - (0.10 * WCOIUF); 
	r10 = (1.0 * WCOIUF) * xcos;	# Ankathete		
	para_b = r10;
	r10 = (1.0 * WCOIUF) * xsin;	# Ankathete	
	para_c= r10;		
stabmod();
	
	STABECKE = 2;		STABCO = 6;
	STABEIWI = -90.0 + (180 / PI * xsteiwi);     STABEIWI_Y = 90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = r1 * 180.0 / PI;
	VERLEGEWINKEL_Z = 0.0;
	STABANF = p31; 
	Stabanf.z = stabanf.z - (xd_bu / 1000 * WCOIUF); 
	polar(stabanf,xtrewi, + (((xd_bu + xd_lao) / 1000 * WCOIUF) * (xtan / 2.0)),stabanf);
	polar(stabanf,r1,r34,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Bügel unten *********

BWFORM("A4");

# Stabanzahl rechnen
	r33 = xtrela / xab_bu; i40 = r33;
	r34 = xtrela - ((i40 - 1) * xab_bu); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;	
    Anzahl = i40;
	Abstand = xab_bu;
	Durchm = xd_bu;
# Parameter berechnen
	para_a = 0.40 * WCOIUF; para_e = para_a;
	r9 = 20.1556 * xsin; # Plattenstärke netto ermitteln
	para_b = r9; para_d = para_b;
	para_c = xtrbre - (xbetde * 2.0); 
stabmod();
	
	STABECKE = 3;		STABCO = 124;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p25; 
	stabanf.z = stabanf.z + (r34 * xsin);
	polar(stabanf,xtrewi, + (r34 * xcos),stabanf);	
	polar(stabanf,xtrewi, - (((xd_bu / 1000 * WCOIUF) / 2.0) * xsin),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	p99 = stabanf;
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Bügel oben *********

BWFORM("A1");

# Stabanzahl rechnen
	r33 = xtrela / xab_bu; i40 = r33;
	r34 = xtrela - ((i40 - 1) * xab_bu); # r34=Randabstand i40=Anzahl
    r34 = r34 / 2.0;	
    Anzahl = i40;
	Abstand = xab_bu;
	Durchm = xd_bu;
# Parameter berechnen
	para_a = xtrbre - (xbetde * 4.0); 
stabmod();

	STABECKE = 1;		STABCO = 156;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p99; 
	stabanf.z = stabanf.z + ((r9 - ((xd_bu / 2.0) / 1000 * WCOIUF)) * xcos);
	polar(stabanf,xtrewi, - ((r9 - ((xd_bu / 2.0) / 1000 * WCOIUF)) * xsin),stabanf);
	stabanf.z = stabanf.z + ((xd_bu / 1000 * WCOIUF) * xsin);
	polar(stabanf,xtrewi, + ((xd_bu / 1000 * WCOIUF) * xcos),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Ecken unten *********

BWFORM("A1");

    Anzahl = 1;
	Abstand = xab_vt;
	Durchm = xd_eck;
# Parameter berechnen
	para_a = xtrbre - (xbetde * 2.0); 
stabmod();

	STABECKE = 1;		STABCO = 20;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p25;
		r99 =  (xd_bu + xd_lau + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z + r99;	
	polar(stabanf,xtrewi, - (r99 * (xtan / 2.0)),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 20;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p26; 
		r99 =  (xd_bu + (xd_lau * 2.0) + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z + r99;	
	polar(stabanf,xtrewi, + (r99 / xtan),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 20;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p27;
		r99 =  (xd_bu + xd_lau + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z - r99;	
	polar(stabanf,xtrewi, + (r99 * (xtan / 2.0)),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 20;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p28; 
		r98 = (xd_bu / 1000 * WCOIUF) - ((xd_eck / 1000 * WCOIUF) / 2.0)
		r99 = (xd_bu + (xd_lau * 2.0) + xd_eck) / 1000 * WCOIUF);
	stabanf.z = stabanf.z - r98;	
	polar(stabanf,xtrewi, - (r99 / xsin),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

		# 	Ecken oben *********

stabmod();

	STABECKE = 1;		STABCO = 126;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p31;
		r99 =  (xd_bu + xd_lau + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z - r99;	
	polar(stabanf,xtrewi, + (r99 * (xtan / 2.0)),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 126;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p29;
		r99 =  (xd_bu + xd_lau + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z + r99;	
	polar(stabanf,xtrewi, - (r99 * (xtan / 2.0)),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 126;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p32;
		r99 =  (xd_bu + (xd_lau * 2.0) + (xd_eck / 2.0)) / 1000 * WCOIUF);
	stabanf.z = stabanf.z - r99;	
	polar(stabanf,xtrewi, - (r99 / xtan),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

stabmod();

	STABECKE = 1;		STABCO = 126;
	STABEIWI = -90.0;     STABEIWI_Y = -90.0;     STABEIWI_X = 0.0;
	VERLEGEWINKEL   = xtrewi * 180 / PI;
	VERLEGEWINKEL_Z = xsteiwi * 180 / PI;
	STABANF = p30; 
		r98 = (xd_bu / 1000 * WCOIUF) - ((xd_eck / 1000 * WCOIUF) / 2.0)
		r99 = (xd_bu + (xd_lau * 2.0) + xd_eck) / 1000 * WCOIUF);
	stabanf.z = stabanf.z + r98;	
	polar(stabanf,xtrewi, + (r99 / xsin),stabanf);
	polar(stabanf,r1,xbetde,stabanf);
	LAGEPOSNR = stabanf;
	polar(LAGEPOSNR,r1 + PI,1.5 * WCOIUF,LAGEPOSNR);
stabgeo();

restore_fsm();
end.