#***************************************************************************
#*        Bewehrungsmacro für eine beliebige Deckenaussparung              *
#***************************************************************************
# Berücksichtigt Eingabefaktor. 08.01.2004 JK / LF
# Abfrage, ob Schnitt und Schalkantengezeichnet werden 12.01.2004 LF
# Allgemeine Verbesserungen im Ablauf 12.01.2004 LF

  save_fsm();          # Alte Voreinstellung sichern


# Integervariablen
name(i60,"anz_e");    anz_e = 3;    # Anzahl der Eckpunkte
name(i61,"schk_jn");  schk_jn = 1;  # Abfrage Schalkanten zeichnen
name(i62,"schn_jn");  schn_jn = 1;  # Abfrage Schnitt zeichnen

# Realvariablen
name (r60,"xdedik");     xdedik = 0.20 * WCOIUF;   # Deckendicke
name (r61,"xbed_o");     xbed_o = 0.03 * WCOIUF;    # Betondeckung oben
name (r62,"xbed_u");     xbed_u = 0.03 * WCOIUF;    # Betondeckung unten
name (r63,"xbed_i");     xbed_i = 0.03 * WCOIUF;    # Betondeckung innen
name (r64,"xd_le");      xd_le = 14.0;    # Durchmesser Längseisen
name (r65,"xus_le");     xus_le = 1.00 * WCOIUF;  # Überstand Längseisen
name (r66,"xd_bu");      xd_bu = 6.0;     # Durchmesser Steckeisen
name (r67,"xus_bu");     xus_bu = 0.30 * WCOIUF;   # Überstand Steckeisen
name (r68,"xab_bu");     xab_bu = 0.15 * WCOIUF;   # Abstand Steckeisen
name (r69,"xaz_le");     xaz_le = 2.0;    # Anzahl der Längseisen


#   Aussparung eingeben (Punktabfrage)

    if(anz_e > 1) then begin

    newmask("Eckpunkte eingeben"); #Abfrage Anzahl Eckpunkte
    fillmask(1,2, "Anzahl der Eckpunkte          : ",anz_e);
    fillmask(1,4, "0 = Keine Schalkanten zeichnen: ",schk_jn);
    fillmask(1,5, "0 = Kein Schnitt zeichnen     : ",schn_jn);

    domask();

end

# write("Anzahl der Eckpunkte: ");
# read(anz_e);
# writeln("");

#   Abfragemasken

i89 = 1; #Parametereingabe ermöglichen

#   Parameterabfrage der Bauteildicke und Überdeckung

# if( i89 = 1) then begin
    newmask("Schnittparameter");
    maskinfo(1,1, "Alle Macros wurden nach Kundenwuenschen erstellt");
    maskinfo(1,2, "und dienen lediglich als Beispiele");
    maskinfo(1,3, "Fuer die Richtigkeit der Macros besteht keine Haftung");
    maskinfo(1,5, "Parameter der Aussparung");
    fillmask(1,6, "Deckendicke         :",xdedik);
    fillmask(1,7, "Betondeckung oben   :",xbed_o);
    fillmask(1,8, "Betondeckung unten  :",xbed_u);
    fillmask(1,9, "Betondeckung innen  :",xbed_i);

    domask();
#   end

#   Parametereingabe der Bewehrung

# if( i89 = 1) then begin
    newmask("Bewehrungsparameter");
    maskinfo(1,1, "Längseisen:");
    fillmask(1,2, "Durchmesser Längseisen       :",xd_le);
    fillmask(1,3, "Überstand Längseisen         :",xus_le);
    fillmask(1,4, "Anzahl Längseisen            :",xaz_le);
    maskinfo(1,6, "Steckeisen:");
    fillmask(1,7, "Durchmesser Steckeisen       :",xd_bu);
    fillmask(1,8, "Überstand Steckeisen         :",xus_bu);
    fillmask(1,9, "Abstand Steckeisen           :",xab_bu);

    domask();
  end

# i89 = 0; # Parametereingabe ausschalten

#   Ausführung

for i88 = 1 to anz_e do
  begin

#   Schnitt zeichnen

if(( i88 = 1) and (schn_jn = 1)) then begin

  write("Wo soll der Schnitt liegen");
  read(p10);
  writeln("");
   p11 = p10;
   p11.x = p10.x + 1.0 * WCOIUF;
   p12 = p11;
   p12.y = p11.y + xdedik;
   p13 = p10;
   p13.y = p10.y + xdedik;
   
   setcolor(3);
   line(p11,p10);
   line(p10,p13);
   line(p13,p12);
   distance(p10,p13,r20);

 end

# Aussparung eingeben

  if( i88 = 1) then
     begin
     writeln("1. Punkt der Aussparung eingeben: ");
     read(p1);
     writeln("");
     p88 = p1 ;
     end

  if( i88 <> anz_e) then
     begin
     writeln("Nächster Punkt der Aussparung eingeben: ");
     read(p2);
     writeln("");
     end

  if( i88 = anz_e) then p2 = p88 ;

     setcolor(3);

  if(schk_jn = 1) then begin
     line(p1,p2);
  end

   distance(p1,p2,r1);
   angle(p1,p2,r2);

#   Steckeisen Modelldaten

BWFORM("A3");
durchm = xd_bu;
abstand = xab_bu;
anzahl=r1/abstand +1;
para_a= xus_bu;
para_b= r20 - xbed_o - xbed_u;
para_c=para_a;
posanzahl=1;
stabmod() ;

#   Steckeisen im Grundriss zeichnen (Geometriedaten)

Stabzei = 1;
posnrzei = 2;
verteilzei = 3;
vlposzei = 4;
ansicht = 1;
Stabkreis = 0;
stabecke = 2;
stabeiwi = 90;
verlegewinkel = r2 * 180.0 / 3.1415927;
posnrli = 0;

#   Einfügepunkt der Steckeisen

stabanf = p1;
r10 = (r1 - (anzahl - 1.0) * abstand) / 2.0;
r11 = r2 - (3.1415927 / 2.0);
r12 = xbed_i + para_a + 0.50 * WCOIUF;
polar(stabanf,r2,r10,stabanf);
polar(stabanf,r11,xbed_i,stabanf);
vtlendpkt = p1;
vtlabst = -(para_a + 0.20 * WCOIUF);
lageposnr = p1;
polar(lageposnr,r11,r12,lageposnr);
posdrewi = r2 * 180.0 / 3.1415927;
stabgeo();

#   Steckeisen im Schnitt zeichnen

if(( i88 = 1) and (schn_jn = 1)) then begin

  Stabzei=5;
  ansicht=3;
  Stabkreis=0;
  stabecke=3;
  stabeiwi=-90;
  verlegewinkel=0;
  stabanf=p10;
  stabanf.x=stabanf.x + xbed_i;
  stabanf.y=stabanf.y + xbed_u;
  posnrzei=3;
  verteilzei=0;
  vlposzei=3;
  posnrli=0;
  lageposnr = stabanf;
  lageposnr.y = lageposnr.y - 0.70 * WCOIUF;
  lageposnr.x = lageposnr.x + para_c /2.0;
  posdrewi = 0;
  vtlendpkt = stabanf;
  vtlendpkt.x = vtlendpkt.x + para_c / 2.0;
  stabgeo();

  end

#   Längseisen im Grundriss zeichnen (Modelldaten)

     setlayer("Bewehrung");
     BWFORM("A1");
     durchm=xd_le;
     anzahl=xaz_le;
     para_a= r1 + 2.0 * xus_le;
     r21 = (r20 -xbed_o - xbed_u - xd_le / 1000.0 * WCOIUF) / (anzahl - 1.0);
     abstand= r21;
     posanzahl=2;
     stabmod() ;


#   Längseisen im Grundriss zeichnen (Geometriedaten)

stabanf=p1;
polar(stabanf,r2,-xus_le,stabanf);
polar(stabanf,r2-(3.1415927/2.0),(xbed_i+0.01),stabanf);
writeln("Lage der Positionsnummer (Längseisen): ");
read(lageposnr);
writeln("");
posnrzei=3;
posdrewi= 0.0;
stabeiwi=r2 * 180.0 / 3.1415927;
verlegewinkel= 0.;
stabzei=5 ;
verteilzei=0;
stabecke=1;
ansicht=3;
vlposzei=4;
posnrli=0;
stabgeo();

#   Längseisen im Schnitt zeichnen

# if(( i88 = 1) and (schn_jn = 1)) then begin
 if( i88 = 1) then begin

  stabanf=p10;
  stabanf.x=stabanf.x+xbed_i+xd_le/2000 * WCOIUF;
  stabanf.y=stabanf.y+xbed_u+xd_le/2000 * WCOIUF;
  stabzei=1;
  posnrzei=3;
  verteilzei=4;
  ansicht=1;
  stabkreis=1;
  verlegewinkel=90.0;
  lageposnr.x = p10.x - 0.70 * WCOIUF;
  lageposnr.y = p10.y + r20 /2.0;
  posnrli=1;
  stabgeo();
 end

p1 = p2 ;

end    # Ende i88 1 ... anz_e

restore_fsm(); # Alte Voreinstellung wieder holen

end.
