# Das Macro zeichnet eine Bügelwendel aus Biegeform E1
# In Ansicht; Schnitt und einen Stahlauszug 15.10.2001 LF
# Rev. 1 05.11.2002 LF Bogenausschalten ergänzt.
# Rev. 2 31.07.2003 LF Berücksichtigung des Eingabefaktors WCOIUF
# Rev. 3 05.12.2006 LF Berücksichtigung von Betondeckung an Eingabepunkten.
# Rev. 4 06.11.2007 LF Berücksichtigung von Betondeckung an Eingabe.
# Rev. 5 21.01.2009 LF Satbdurchmesser wird berücksichtigt.
# Rev. 6 21.10.2019 LF Längsbewehrung hinzugefügt.

# Alle Macros wurden nach Kundenwuenschen erstellt
# und dienen lediglich als Beispiele
# Fuer die Richtigkeit der Macros besteht keine Haftung

save_fsm();
writeln("Wendel errechnen");

# Biegeform E1 modifizieren

name(r31,"anzwind");
name(r32,"rad");
name(r33,"steigung");
name(r34,"stadurch");
name(r35,"staabst");
name(r36,"betdeck");
name(r37,"uebdtxt");  # Text Überdeckung Bügel
name(r38,"anschllan");# Anschlusslänge Längsstäbe
name(i31,"stadurlan");# Stabdu Längseisen
name(i32,"anzlan");   # Anzahl Längsstäbe
name(r39,"abstwin");  # Variable für Rundverlegung
name(i33,"auszug");   # Auszüge ja-nein

#***************************************************************************
# Staebe spiegeln generell auf 0 setzen
stabspieg = 0;

# Bogenverlegung ausschalten
Bogen = 0;

# Stahlauszüge ein-aus
auszug = 1;

#***************************************************************************

#***************************************************************************
#*                          BEWEHRUNG                                      *
#***************************************************************************

BWFORM("E1");

stadurch = 8;
para_a = 12/100*WCOIUF;
para_b = 10;
para_c = 8/100*WCOIUF;
staabst = 100/100*WCOIUF;
rad = 0;
steigung = 8.0/100*WCOIUF;
betdeck = 5.0/100*WCOIUF;
anschllan = 80.0/100*WCOIUF;# Anschlusslänge Längsstäbe
stadurlan = 20;           # Du Längseisen
anzlan = 8;               # Anzahl Längsstäbe
begwi = 0;
endwi = 2*PI;

newmask("Bewehrung Wendel");

 maskinfo(1,1, "Das Macro zeichnet Bügelwendel aus Biegeform E1");
 maskinfo(1,2, "Sowie die Längsbewehrung");
 maskinfo(1,3, "In Ansicht; Schnitt und einen Stahlauszug");
 maskinfo(1,4, "Alle Macros wurden nach Kundenwuenschen erstellt");
 maskinfo(1,5, "und dienen lediglich als Beispiele");

fillmask(1,7, "Stabdurchesser Wendel (mm): ",stadurch);
 maskinfo(1,8, "Die folgenden Werte in Arbeitseinheiten (m, cm, mm)");
 maskinfo(1,9, "Wenn Wendel Durchesser = 0 werden Punkte abgefragt.");
fillmask(1,10, "Wendel Ddurchesser (brutto):",rad);
fillmask(1,11, "Ganghöhe Wendel:            ",steigung);
fillmask(1,12, "Betondeckung:               ",betdeck);
fillmask(1,13, "Stahlauszüge (1=Ja, 0=Nein) ",auszug);
domask();
if(wcoretval = -1) then 
    begin
restore_fsm();
exit.                                 # exit.    (punkt nicht vergessen ist macroabruch)
    end;

newmask("Bewehrung Längseisen");

 maskinfo(1,1, "Anzahl = 0 = keine Längseisen");
fillmask(1,2, "Anzahl Stäbe Längsbewehrung:     ",anzlan);
fillmask(1,3, "Durchmesser Stäbe Längsbew. (mm):",stadurlan);
 maskinfo(1,4, "Die folgenden Werte in Arbeitseinheiten (m, cm, mm)");
 maskinfo(1,5, "Wenn Stossdeckung = 0, Eisenende -5cm von OKD");
fillmask(1,6, "Länge Stossdeckumg ab OKD:       ",anschllan);
domask();
if(wcoretval = -1) then 
    begin
restore_fsm();
exit.                                 # exit.    (punkt nicht vergessen ist macroabruch)
    end;

if (rad > 0) then begin
rad = rad - (2 * betdeck);
end;

if (rad = 0) then begin
writeln("1. Punkt für Stützenstadurchesser: ");
	read(p11);
writeln("2. Punkt für Stützenstadurchesser: ");
	read(p12);
distance(p11,p12,r1);
rad = r1 - (2 * betdeck);
end;

r40 = rad + (2 * betdeck);  #Sichern für Längseisen

writeln("Fußpunkt der Wendel rechts unten: ");
	read(p1); p10 = p1; # Eingabe + Sicherung der Originalpunkte
writeln("Kopfpunktder Wendel rechts oben: ");
	read(p2); p20 = p2; # Eingabe + Sicherung der Originalpunkte

  angle(p1,p2,r2); # Winkel P1 - p2

p40 = p1;           # Für Längseisen sichern

distance(p1,p2,r41); # Für Längseisen sichern

# Punkte mit Betondeckung umrechnen
 polar(p10,r2,betdeck,p1); # Abstand in Verlegerichtung
p10 = p1;
polar(p10,(r2 + (Pi/2)),betdeck,p1); # Abstand rechtw. zur Verlegerichtung

 polar(p20, -r2,betdeck,p2); # Abstand gegen Verlegerichtung
p20 = p2;
polar(p20,(r2 - (Pi/2)),betdeck,p2); # Abstand rechtw. zur Verlegerichtung

  distance(p1,p2,r1);

durchm=stadurch;
abstand=staabst;
r1 = r1 + (0.5 * steigung);
anzwind=r1 / steigung;
posanzahl=1;
para_a = rad/2;
para_b = anzwind;
para_c = steigung;
anzahl = 1;

stabmod() ;

Stabzei=1;

lageposnr.x = p1.x  - r40 - (10/100*WCOIUF);
lageposnr.y = p1.y + (60/100*WCOIUF);
posnrzei=10;
posnrli=0;
posdrewi=90;
verteilzei=0;
vlposzei=4;
ansicht=1;
Stabkreis=0;
stabecke=1;
stabeiwi=90;
verlegewinkel = r2 * 180.0 / 3.1415927;
stabanf=p1;
stabgeo();

#           Wendel im Schnitt

writeln("Mittelpunkt Schnitt für Wendel: ");
	read(p3); p30 = p3; # Mitte Schnitt für Längseisen sichern
stabanf=p3;
lageposnr.x = p3.x ;
lageposnr.y = p3.y + (rad / 2) + (30/100*WCOIUF);
verlegewinkel= 90.0 ;
ansicht=2;
posnrzei=3;
posnrli=0;
posdrewi=0;
verteilzei=0;
vlposzei=3;
vtlendpkt.x = stabanf.x;
vtlendpkt.y = stabanf.y + (rad / 2);
stabeiwi=0;
stabzei=5;
stabecke=3;
stabgeo();

#           Auszug Wendel zeichnen
if (auszug = 1) then begin
writeln("Lage Stahlauszug: ");
	read(p4);  
stabanf=p4;
stabanf= p4;
lageposnr.x = p4.x;
lageposnr.y = p4.y - (rad / 2) - (25/100*WCOIUF);
verlegewinkel= 90.0 ;
ansicht=2;
posnrzei=8;
verteilzei=-3;
vlposzei=3;
vtlendpkt=stabanf;
stabeiwi=0;
stabzei=5;
stabecke=3;
stabgeo();
end;

#  *** Längsbewehrung ***

if (anzlan > 0) then begin # Keine Längseisen zeichnen

HAKENVORN = 0;
HAKENHINT = 0;

BWFORM("A1");

if (anschllan = 0) then begin
   para_a = r41 - (5.0/100*WCOIUF);
  end;

if (anschllan <> 0) then begin
   para_a = r41 + anschllan;
  end;

#           Längseisen im Schnitt
  
anzahl = anzlan;                    # Stabanzahl
begwi  = 0;                         # der Anfangswinkel, falls im bogen verlegt werden soll (Winkel an dem der erste Stab liegt !)
endwi  = (2*PI/anzahl)*(anzahl-1);  # Winkel an dem der letzte Stab liegt ! (hier Vollkreis)
abstwin = (endwi-begwi)/(anzahl-1); # selbsterstellte Variable Winkel zw. Eisen 
rad = rad / 2;
radius = rad - ((stadurch/10)/100*WCOIUF) - ((stadurlan/10)/100*WCOIUF); # bestimmt den Radius bei Bogenverlegung
posanzahl=1;
durchm = stadurlan;
stabmod() ;

bogen = 1;     # Rundverlegung ein
stabanf=p30;
lageposnr.x = p30.x + rad + (25/100*WCOIUF);
lageposnr.y = p30.y;
verlegewinkel= 0.0;
posnrzei=3;
verteilzei=1;
vlposzei=1;
vtlabst= rad + (12.5/100*WCOIUF);
vtlendpkt.x = stabanf.x;
vtlendpkt.y = stabanf.y + rad;
ansicht = 1;   # Aus X
Stabkreis = 1; # Kreis aus X (ansicht=1)
stabeiwi=0.0;
stabzei=1;
stabecke=1;
posnrli=0;
posdrewi=0;
stabgeo();

#           Längseisen im Ansicht

bogen = 0;     # Rundverlegung aus
p41 = p40; p41.x = p41.x - (r40 / 2); # Mitte UK Stütze
r50 =0; r51 = 360 / anzahl;     # Winkel errechnen

verlegewinkel= 180.0;
ansicht = 2;   # Aus y
posnrzei = 3;
verteilzei= 0;
vlposzei=3;
Stabkreis = 0; # Kreis aus X (ansicht=1)
stabeiwi=-90.0;
stabzei=5;
stabecke=1;
posnrli=0;
posdrewi=90;

for i = 1 to anzahl do
	begin
	polar(p41,(r50 / 360) * (2 * PI),radius,p51); #Stäbe im Kreis rechnen
    r50 = r50 + r51;
    
    p53 = p41;        # Stäbe in Reihe zeichnen
    p53.x = p51.x;
    p53.y = p41.y;
    stabanf = p53;
    
    lageposnr.x = p41.x + r40  + (5/100*WCOIUF);
    lageposnr.y = p41.y + (40/100*WCOIUF);
    vtlendpkt.x = stabanf.x;
    vtlendpkt.y = lageposnr.y;
stabgeo();
end;

#           Längseisen im Stahlauszug
if (auszug = 1) then begin
bogen = 0;     # Rundverlegung aus
#p41 = p40; p41.x = p41.x + (r40 * 2) + (60/100*WCOIUF); stabanf = p41;
p41 = p40; p41.x = p41.x + (50/100*WCOIUF); stabanf = p41;
lageposnr.x = p41.x + (25/100*WCOIUF);
lageposnr.y = p41.y + (40/100*WCOIUF);
verlegewinkel= 180.0;
ansicht = 2;   # Aus y
posnrzei = 8;
verteilzei= -3;
vlposzei=0;
vtlendpkt.x = stabanf.x;
vtlendpkt.y = stabanf.y + rad;
Stabkreis = 0; # Kreis aus X (ansicht=1)
stabeiwi=-90.0;
stabzei=5;
stabecke=1;
posnrli=0;
posdrewi=90;
stabgeo();
end; # Auszüge ja-nein
end; # Keine Längseisen zeichnen

restore_fsm();
END.
