#***+***********************************************************************
#*        Bewehrungsmacro für Deckenaussparung                             *
#***************************************************************************
# Berücksichtigt Eingabefaktor. 22.01.2003 LF
# Abfrage : Linien; L/B über Punkte 27.10.2009 LF
# Bew-Lagen berücksichtigen; Steckbügellage + Darstellung; Maskendesign 10.10.2019 LF 

   save_fsm()  # SAVE PRESETS
#
name(s60,"txformat"); #Dialog Formatanweisung
#
# ********************** Variablen
r1 = 0.5 * WCOIUF;   #Abmessung in x
r2 = 0.5 * WCOIUF;   #Abmessung in y
r3 = 0.25 * WCOIUF;  #Deckendicke
r4 = 0.024 * WCOIUF; #Summe Stabdur 1.Lg. ob+unt. Hauptbew
r9 = 0.035 * WCOIUF; #Betondeckung
i11 = 0;             #Schnitt 1=ja 0=nein
i12 = 1;             #Linien zeichnen 1=ja 0=nein
i13 = 0;             #ALinien zeichnen 1=ja 0=nein;
i14 = 1;             #Masse über Punkte 1=x 0=y
i15 = 1;             #1. Lage Hauptbew u+o in x

dlg_init(): #Init new Dialog
string_copy(txformat,"-50.50");
dlg_label(1,1,"**** Rechteckige Aussparung, nicht gedreht *****",50); #50= use 50 columns for text
dlg_label(1,2,"Alle Macros wurden nach Kundenwuenschen erstellt",50); #50= use 50 columns for text
dlg_label(1,3,"und dienen lediglich als Beispiele",50);               #50= use 50 columns for text
TRANSLATE_TEXT(s1,0,"Länge der Aussparung in x-Richtung:",txformat);    	dlg_editbox(1,5,s1,r1,10);
TRANSLATE_TEXT(s1,0,"Breite der Aussparung in y-Richtung:",txformat);    	dlg_editbox(1,6,s1,r2,10);
TRANSLATE_TEXT(s1,0,"Eingabe der Deckendicke:",txformat);	                dlg_editbox(1,7,s1,r3,10);
TRANSLATE_TEXT(s1,0,"Betonüberdeckung:",txformat);                   	    dlg_editbox(1,8,s1,r9,10);
TRANSLATE_TEXT(s1,0,"Summe Durchm. 1.Lg. ob+unt Hauptbewehrung:",txformat);	dlg_editbox(1,9,s1,r4,10);
dlg_checkbox(3,11,"  1. Lage Hauptbew u+o in x-Richtung? (Häkchen an = Ja)",50,i15);
dlg_checkbox(3,12,"  Schalkanten in Plan vorh.? (Häkchen an = Ja)",50,i14);
dlg_label(3,13,"Wenn nein (kein Häkchen), Maße über Diagonale eingeben",60); #50= use 50 columns for text
dlg_checkbox(3,14,"  Schnitt zeichnen? (Häkchen an = Ja)",50,i11);
dlg_start("Geometrie",i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
if( i5 < 0) then
	restore_fsm();
if( i5 < 0) then exit;

if (i14 > 0) then begin
  i12 = 0; i13 = 1;
end;

# Eckpunkte abfragen
if (i13=1) then begin
write("1. Punkt der Diagonale"); read(p21);
write("2. Punkt der Diagonale"); read(p22);
r1 = (p21.x - p22.x);
r2 = (p21.y - p22.y);
  if (r1 < 0) then begin
  r1 = r1 -(r1 *2);
  end;
  if (r2 < 0) then begin
  r2 = r2 -(r2 *2);
  end;
end;

i10 = 14;              #Durchmesser Längseisen
r8 = 1.00 * WCOIUF;    #Überstand Längseisen re+li
i2 = 8;                #Durchmesser Steckeisen
r7 = 0.40 * WCOIUF;    #Schenkel Steckbuegel
r10 = 0.15 * WCOIUF;   #Abstand Steckeisen

if (i14 > 0) then begin
  dlg_init(): #Init new Dialog
  string_copy(txformat,"-50.50");
  dlg_label(1,1,"*** Angaben zur Bewehrung ***",50); #50= use 50 columns for text
  TRANSLATE_TEXT(s1,0,"Durchmesser Längseisen:",txformat);    	dlg_editbox(1,2,s1,i10,10);
  TRANSLATE_TEXT(s1,0,"Überstand Längseisen:",txformat);    	dlg_editbox(1,3,s1,r8,10);
  TRANSLATE_TEXT(s1,0,"Durchmesser Steckeisen:",txformat);    	dlg_editbox(1,4,s1,i2,10);  
  TRANSLATE_TEXT(s1,0,"Schenkellänge Steckeisen:",txformat);    dlg_editbox(1,5,s1,r7,10);  
  TRANSLATE_TEXT(s1,0,"Abstand der Steckeisen:",txformat);      dlg_editbox(1,6,s1,r10,10);  
  dlg_label(1,7,"*** Korrekturmöglichkeit der Geometrie ***",50); #50= use 50 columns for text    
  TRANSLATE_TEXT(s1,0,"Länge der Aussparung in x-Richtung:",txformat);    	dlg_editbox(1,8,s1,r1,10);
  TRANSLATE_TEXT(s1,0,"Breite der Aussparung in y-Richtung:",txformat);    	dlg_editbox(1,9,s1,r2,10);
  TRANSLATE_TEXT(s1,0,"Eingabe der Deckendicke:",txformat);	                dlg_editbox(1,10,s1,r3,10);
  TRANSLATE_TEXT(s1,0,"Betonüberdeckung:",txformat);                   	    dlg_editbox(1,11,s1,r9,10);
  TRANSLATE_TEXT(s1,0,"Summe Durchm. 1.Lg. ob+unt Hauptbewehrung:",txformat);	dlg_editbox(1,12,s1,r4,10);
  dlg_checkbox(3,13,"  1. Lage Hauptbew u+o in x-Richtung? (Häkchen an = Ja)",50,i15);
  dlg_checkbox(3,14,"  Schalkanten in Plan vorh.? (Häkchen an = Ja)",50,i14);
  dlg_label(3,15,"Wenn nein (kein Häkchen), Maße über Diagonale eingeben",60); #50= use 50 columns for text
  dlg_checkbox(3,16,"  Schnitt zeichnen? (Häkchen an = Ja)",50,i11);
  dlg_start("Bewehrung und Geometrie-Korrektur",i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
   if( i5 < 0) then
	   restore_fsm();
     if( i5 < 0) then exit;

end;

if (i14 = 0) then begin

  string_copy(s91,r1); string_copy(s92,r2); # Abmessungen DD zu Text
  string_copy(s90,"*** Korrekturmöglichkeit der Geometrie DD "); 
  string_cat(s90,s91); string_cat(s90,"x"); string_cat(s90,s92); string_cat(s90," ***");
  
  dlg_init(): #Init new Dialog
  string_copy(txformat,"-50.50");
  dlg_label(1,1,"*** Angaben zur Bewehrung ***",50); #50= use 50 columns for text
  TRANSLATE_TEXT(s1,0,"Durchmesser Längseisen:",txformat);    	dlg_editbox(1,2,s1,i10,10);
  TRANSLATE_TEXT(s1,0,"Überstand Längseisen:",txformat);    	dlg_editbox(1,3,s1,r8,10);
  TRANSLATE_TEXT(s1,0,"Durchmesser Steckeisen:",txformat);    	dlg_editbox(1,4,s1,i2,10);  
  TRANSLATE_TEXT(s1,0,"Schenkellänge Steckeisen:",txformat);    dlg_editbox(1,5,s1,r7,10);  
  TRANSLATE_TEXT(s1,0,"Abstand der Steckeisen:",txformat);      dlg_editbox(1,6,s1,r10,10);  
  dlg_label(1,7,s90,60); #50= use 50 columns for text    
  TRANSLATE_TEXT(s1,0,"Eingabe der Deckendicke:",txformat);	                dlg_editbox(1,8,s1,r3,10);
  TRANSLATE_TEXT(s1,0,"Betonüberdeckung:",txformat);                   	    dlg_editbox(1,9,s1,r9,10);
  TRANSLATE_TEXT(s1,0,"Summe Durchm. 1.Lg. ob+unt Hauptbewehrung:",txformat);	dlg_editbox(1,10,s1,r4,10);
  dlg_checkbox(3,11,"  1. Lage Hauptbew u+o in x-Richtung? (Häkchen an = Ja)",50,i15);
  dlg_checkbox(3,12,"  Schalkanten in Plan vorh.? (Häkchen an = Ja)",50,i14);
  dlg_label(3,13,"Wenn nein (kein Häkchen), Maße über Diagonale eingeben",60); #50= use 50 columns for text
  dlg_checkbox(3,14,"  Schnitt zeichnen? (Häkchen an = Ja)",50,i11);
  dlg_start("Bewehrung und Geometrie-Korrektur",i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
   if( i5 < 0) then
	   restore_fsm();
     if( i5 < 0) then exit;
end;

r4 = r4 + (0.01 * WCOIUF); #Zu Summe Stabdurchmesser 1. Lg. u+o 1cm addieren
p1 = p21;                  #Punktvariable umsetzen, wenn Linienzeichnen = nein

if (i14 = 0) then begin
 write("Eingabe Aussparung links unten"); read(p1);
 writeln(" ");
end; 

#***************************************************************************
# Staebe spiegeln generell auf 0 setzen
#***************************************************************************
stabspieg = 0;

#***************************************************************************
#*                          ZEICHNEN                                       *
#***************************************************************************
#
#                            Ausparung im Grundriss zeichnen
# Punkte umrechnen
  p2=p1 ; p2.x=p2.x+r1 ;
  p3=p2 ; p3.y=p3.y+r2;
  p4=p3 ; p4.x=p1.x
# Zeichnen nur auf Wunsch
if (i12=1) then begin
  setlayer("Ausspar");
  setcolor(3);
  line(p1,p2); line(p2,p3);line(p3,p4);line(p4,p1);
end;
#***************************************************************************
#*                          BEWEHRUNG                                      *
#***************************************************************************
#
#                            Längseisen horizontal
#
setlayer("Bewehrung");
BWFORM("A1");

Hakenvorn = 0; Hakenhint = 0;

r51 = i10/1000*WCOIUF; #Durchm. Längseisen für Abstandsberechnungen
r50 = i2/1000*WCOIUF;  #Durchm. Steckeisen für Abstandsberechnungen

durchm = i10 #Durchmesser setzen

anzahl=2;
para_a= r1 + 2.0 * r8;
#
if (i15 = 0) then begin # Wenn 1.Lg u+o in y  
r5 = r3;
r5 = r5 - r4;           # Eisendicke o+u abziehen
abstand = r5 - (2 * r9) - (2 * r50) - (1 * r51);
end
#
if (i15 = 1) then begin # Wenn 1.Lg u+o in x 
r5 = r3; 
abstand = r5 - (2 * r9) - (2 * r50) - (1 * r51);
end
#
posanzahl=2;
stabmod() ;
#***************************************************************************
#*                          ZEICHNEN                                       *
#***************************************************************************
#
#                            Aussparung im Schnitt zeichnen
#
if (i11=1) then begin
  setlayer("ausspar");
  write("Wo soll der Schnitt liegen");
  read(p6);
  p7=p6;
  p7.y=p7.y+r3;
  p5=p6;
  p5.x=p5.x+r7+0.50 * WCOIUF;
  p8=p7;
  p8.x=p5.x;
  setlayer("Ausspar");
  setcolor(3);
  line(p5,p6);line(p6,p7);line(p7,p8);
  setlayer("Bewehrung");
end
#***************************************************************************
#*                          BEWEHRUNG                                      *
#***************************************************************************
#
#                            Längseisen im Grundriss unten zeichnen
#
stabanf=p1;
stabanf.x = stabanf.x - r8  ;
stabanf.y = stabanf.y - r9 - r50;
lageposnr.x = stabanf.x + para_a + (0.50 * WCOIUF);
lageposnr.y = stabanf.y - 0.20 * WCOIUF;
posnrzei=3;
posdrewi= 0.0;
stabeiwi=0;
verlegewinkel= 0.;
stabzei=5 ;
verteilzei=0;
stabecke=1;
ansicht=3;
vlposzei=3;
vtlendpkt=stabanf;
vtlendpkt.x=vtlendpkt.x+para_a;
posnrli=0;
stabgeo();
#
#                            Längseisen im Grundriss oben zeichnen
#
stabanf=p4;
stabanf.x = stabanf.x - r8;
stabanf.y = stabanf.y + r9 + r50;
lageposnr.x = stabanf.x +para_a + (0.50 * WCOIUF);
lageposnr.y = stabanf.y + 0.50 * WCOIUF;
vlposzei=3;
vtlendpkt=stabanf;
vtlendpkt.x=vtlendpkt.x+para_a
posnrzei=3;
stabgeo();
#
#                            Längseisen im Grundriss vertikal
#
para_a=r2+2.0*r8;
posanzahl=2;
stabmod();
#
#                            Längseisen im Grundriss links zeichnen
#
stabanf=p4;
stabanf.x = stabanf.x - r9 - R50;
stabanf.y = stabanf.y + r8;
lageposnr.x = stabanf.x - (0.50 * WCOIUF);
lageposnr.y = stabanf.y - para_a - (0.20 * WCOIUF);
verlegewinkel= 90.0 ;
posnrzei=3;
verteilzei=0;
vlposzei=3;
vtlendpkt=stabanf;
vtlendpkt.y=vtlendpkt.y-para_a;
stabeiwi=0;
stabecke=2;
posnrli=1;
stabgeo();
#
#                            Längseisen im Grundriss rechts zeichnen
#
stabanf=p3;
stabanf.x = stabanf.x + r9 + r50;
stabanf.y = stabanf.y + r8;
lageposnr.x = stabanf.x + (0.50 * WCOIUF);
lageposnr.y = stabanf.y - para_a - (0.20 * WCOIUF);
vlposzei=3;
vtlendpkt=stabanf;
vtlendpkt.y=vtlendpkt.y-para_a
posnrzei=3;
stabecke=2;
posnrli=0;
stabgeo();
#
#                            Längsseisen im Schnitt zeichnen
#
if (i11=1) then begin
  stabanf=p6;
#  
   if (i15 = 0) then begin # Wenn 1.Lg u+o in y
      stabanf.x = stabanf.x + r9 + r50 + (r51/2);  
      stabanf.y = stabanf.y + r9 + r50 + (r51/2) + (r4 / 2); # 1/2 Eisendicke Hauptbew addieren
   end
#
   if (i15 = 1) then begin # Wenn 1.Lg u+o in x  
      stabanf.x = stabanf.x + r9 + r50 + (r51/2);
      stabanf.y = stabanf.y + r9 + r50 + (r51/2);
   end
#
  stabzei=1;
  posnrzei=3;
  verteilzei=4;
  ansicht=1;
  stabkreis=1;
  verlegewinkel=90.0;
  lageposnr.x = p6.x - (0.35 * WCOIUF);
  lageposnr.y = p6.y + (r3 / 2);
  posnrli=1;
  stabgeo();
end
#
#                            Steckeisen
#
BWFORM("A3");
durchm =i2;   #Durchmesser setzen
abstand = r10;
#
#                            Steckeisen oben und unten
#
if (i15 = 1) then begin # Wenn 1.Lg u+o in x  
r5 = r3;
r5 = r5 - r4;           # Eisendicke o+u abziehen
end
#
if (i15 = 0) then begin # Wenn 1.Lg u+o in y  
r5 = r3;
end
#
anzahl=r1/abstand +1;
para_a= r7;
para_b=r5 - (2 * r9);
para_c=para_a
posanzahl=1;
stabmod() ;
#
r15 = (r1 - (anzahl - 1) * abstand) / 2; #AP verschieben für Lage vermitteln
#
#                            Steckeisen unten zeichnen
#
Stabzei=1;
ansicht=1;
Stabkreis=0;
stabecke=2;
stabeiwi=90;
verlegewinkel=0;
stabanf=p1;
stabanf.x=stabanf.x + r15;
stabanf.y=stabanf.y - r9;
posnrzei=6;
verteilzei=3;
vlposzei=4;
posnrli=1;
posdrewi=90;
vtlabst= - r7 - (0.15 * WCOIUF);
lageposnr=stabanf;
lageposnr.x=lageposnr.x + (r1 / 2);
lageposnr.y=lageposnr.y - r7 - (0.50 * WCOIUF);
stabgeo();
#
#                            Steckeisen oben zeichnen
#
stabmod()
Stabzei=1;
ansicht=1;
Stabkreis=0;
stabecke=2;
stabeiwi=-90;
verlegewinkel=0;
stabanf=p4;
stabanf.x=stabanf.x + r15;
stabanf.y=stabanf.y + r9;
posnrzei=6;
verteilzei=3;
vlposzei=4;
posnrli=0;
posdrewi=90;
vtlabst= r7 + (0.15 * WCOIUF);
lageposnr=stabanf;
lageposnr.x=lageposnr.x + (r1 / 2);
lageposnr.y=lageposnr.y + r7 + (0.50 * WCOIUF);
stabgeo();
#
if (i15 = 0) then begin # Wenn 1.Lg u+o in y  
r5 = r3;
r5 = r5 - r4;           # Eisendicke o+u abziehen
end
if (i15 = 1) then begin # Wenn 1.Lg u+o in x  
r5 = r3;
end
#                            Steckeisen links und rechts
#
anzahl=r2/abstand +1;
para_a= r7;
para_b=r5 - (2 * r9);
para_c=para_a
posanzahl=1;
stabmod() ;
#
r16 = (r2 - (anzahl - 1) * abstand) / 2; #AP verschieben für Lage vermitteln
#
#                            Steckeisen links zeichnen
#
Stabzei=1;
ansicht=1;
Stabkreis=0;
stabecke=2;
stabeiwi=-90;
verlegewinkel=90;
stabanf=p1;
stabanf.x=stabanf.x - r9;
stabanf.y=stabanf.y + r16;
posnrzei=6;
verteilzei=3;
posnrli=1;
posdrewi=0;
vlposzei=4;
vtlabst= r7 + (0.15 * WCOIUF);
lageposnr=stabanf;
lageposnr.x=lageposnr.x - para_a - (0.50 * WCOIUF);
lageposnr.y=lageposnr.y + (r2 / 2);
stabgeo();
#
#                            Steckeisen rechts zeichnen
#
stabmod()
Stabzei=1;
ansicht=1;
Stabkreis=0;
stabecke=2;
stabeiwi=-90;
verlegewinkel=-90;
stabanf=p3;
stabanf.x=stabanf.x + r9;
stabanf.y=stabanf.y - r16;
posnrzei=6;
verteilzei=3;
vlposzei=4;
posnrli=0;
posdrewi=0;
vtlabst= r7 + (0.15 * WCOIUF);
lageposnr=stabanf;
lageposnr.x=lageposnr.x + para_a + (0.50 * WCOIUF);
lageposnr.y=lageposnr.y - (r2 / 2);
vtlendpkt.x=stabanf.x + para_a;
vtlendpkt.y=stabanf.y;
stabgeo();
#
#                            Steckeisen im Schnitt zeichnen
#
if (i11=1) then begin
  Stabzei=5;
  ansicht=3;
  Stabkreis=0;
  stabecke=3;
  stabeiwi=-90;
  verlegewinkel=0;
  stabanf=p6;
#
   if (i15 = 0) then begin # Wenn 1.Lg u+o in y
      stabanf.x = stabanf.x + r9;  
      stabanf.y = stabanf.y + r9 + (r4 / 2); # 1/2 Eisendicke Hauptbew addieren
   end
#
   if (i15 = 1) then begin # Wenn 1.Lg u+o in x  
      stabanf.x = stabanf.x + r9;
      stabanf.y = stabanf.y + r9;
   end  
# 
  posnrzei=6;
  verteilzei=0;
  vlposzei=3;
  posnrli=0;
  lageposnr=stabanf;
  lageposnr.x=lageposnr.x + para_a + (0.20 * WCOIUF);
  lageposnr.y=lageposnr.y - (0.30 * WCOIUF);
  vtlendpkt.x=stabanf.x + (para_a / 2);
  vtlendpkt.y=stabanf.y;
  stabgeo();
end
#
   restore_fsm()  # gesicherte Voreinstellung holen
#
end.
