#***+***********************************************************************
#*        Bewehrungsmacro für Deckenaussparung rund                        *
#***************************************************************************
# 22.02.2021 LF
# Alle Macros wurden nach Kundenwuenschen erstellt
# und dienen lediglich als Beispiele
#
   save_fsm()  # SAVE PRESETS
#
name(s60,"txformat"); # Dialog Formatanweisung

name(r1,"diamtr");   # Durchmesser Aussparung
name(r2,"wandst");   # Wandstärke
name(r3,"sudurhb");  # Summe Durchmesser Hauptbewehrung
name(r4,"betdeck");  # Betondeckung
name(r5,"abststeck");# Abstand Steckeisen 
name(r6,"rad_kr");   # Radius Kreiverlegung SteckeisenAussparung
name(r7,"l_randst"); # Stablänge Randstäbe
name(r8,"abstlang"); # Abstand Längsstäbe
#
# ********************** Variablen
diamtr = 0.5 * WCOIUF;    # Durchmesser Aussparung
wandst = 0.25 * WCOIUF;   # Wandstärke
sudurhb = 0.048 * WCOIUF; # Summe Stabdur Hauptbew
betdeck = 0.035 * WCOIUF; # Betondeckung
abststeck = 0.15 * WCOIUF; # Abstand Steckbügel

i2 = 8;                 # Durchmesser Steckeisen
i10 = 14;            # Durchmesser Längseisen
i11 = 0;             # Schnitt 1=ja 0=nein
i12 = 1;             # Linien zeichnen 1=ja 0=nein

r11 = 0.40 * WCOIUF;    # Schenkel Steckbuegel
r12 = 0.60 * WCOIUF;    # Überstand Längseisen re+li
#
   # Abrunden der Eisen in Liste -> STABLZABR, sonst STABZABR
   # 0=Nach Voreinstellung
   # 1= Nicht abgerundet
   # 2= Abgerundet, keine Doppellinie
   # 3= Als Doppellinie aus Ansicht  Z
   # 4= Immmer als Doppellinie 
STABZABR = 2; 

dlg_init(): #Init new Dialog
string_copy(txformat,"-30.30");
#Icon
	dlg_button(0,0,"WPS_2D",0,0,0);# 0 = Path for Icons /artifex/data/bmp/wpsdemo
	# (Spalte,Zeile,Bildname,Breite Spalten,Höhe Zeilen,-1=Icon/+1=Button) -----------------  + string
	dlg_button(1,1,"WD_Rund",31,10,-1);# Button Nr 4 (less 0 means Icon )
   TRANSLATE_TEXT(s1,0,"Geometrie",txformat);
   string_copy(s2,"--- "); string_cat(s2,s1);
   dlg_label(1,11,s2,50);                          
   dlg_label(1,12,"Radius über Punktabfrage",50);
TRANSLATE_TEXT(s1,0,"Eingabe der Wanddicke:",txformat);	        dlg_editbox(1,13,s1,wandst,10);
TRANSLATE_TEXT(s1,0,"Betonüberdeckung:",txformat);             	dlg_editbox(1,14,s1,betdeck,10);
TRANSLATE_TEXT(s1,0,"Summe Durchm. Hauptbewehrung:",txformat);	dlg_editbox(1,15,s1,sudurhb,10);
dlg_checkbox(3,16,"  Schnitt zeichnen? (Häkchen an = Ja)",50,i11);
   TRANSLATE_TEXT(s1,0,"Bewehrung",txformat);
   string_copy(s2,"--- "); string_cat(s2,s1);
   dlg_label(1,18,s2,50);
TRANSLATE_TEXT(s1,0,"Durchmesser Längseisen:",txformat);    dlg_editbox(1,19,s1,i10,10);
TRANSLATE_TEXT(s1,0,"Überstand Längseisen:",txformat);    	dlg_editbox(1,20,s1,r12,10);
TRANSLATE_TEXT(s1,0,"Durchmesser Steckeisen:",txformat);    dlg_editbox(1,21,s1,i2,10);  
TRANSLATE_TEXT(s1,0,"Schenkellänge Steckeisen:",txformat);  dlg_editbox(1,22,s1,r11,10);  
TRANSLATE_TEXT(s1,0,"Abstand der Steckeisen:",txformat);    dlg_editbox(1,23,s1,abststeck,10);  
dlg_start("Runde Aussparung",i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
if( i5 < 0) then
	restore_fsm();
if( i5 < 0) then exit;
#
# Durchmesser abfragen
    writeln(" ");
    writeln("1. Punkt für Mitte der Aussparung"); read(p1);
    writeln(" ");
    writeln("2. Punkt für Radius"); read(p21);
    distance(p1,p21,diamtr); diamtr = diamtr * 2);
#
r51 = i10/1000*WCOIUF; #Durchm. Längseisen für Abstandsberechnungen
r50 = i2/1000*WCOIUF;  #Durchm. Steckeisen für Abstandsberechnungen

sudurhb = sudurhb + (0.01 * WCOIUF); #Zu Summe Stabdurchmesser 1. Lg. u+o 1cm addieren
#
rad_kr = (diamtr / 2); rad_kr = rad_kr + betdeck; # Radius Steckbügelverlegung
#
abstlang = wandst - (2 * betdeck) - r51 - (2 * r50) - sudurhb);
#
stabspieg = 0; # Staebe spiegeln generell auf 0 setzen
#
#***************************************************************************
#*                          BEWEHRUNG                                      *
#***************************************************************************
#
#    Stablänge Randeisen errechnen
#
  r21 = betdeck + r50 + (diamtr / 2); # Abstand Randeisen
  sin((pi / 8),r22);                  # Länge 1/2 Seite 8-Eck
  i23 = r22 * r21;´                   # Abrunden
  l_randst = ((i23 * 2) + (0.15 * WCOIUF));# Länge Zugabe 20cm
  i23 = l_randst / 10;                     # Abrunden
  l_randst = i23 * 10;                     # 
  l_randst = l_randst + (2 * r12);         # Länge + 2x Überstand = Stablänge
#text(p1,l_randst);
#
#                            Längseisen horizontal
#
setlayer("Bewehrung");
BWFORM("A1");

Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
abstand = abstlang;
anzahl=2;
para_a = l_randst;
posanzahl=1;
stabmod() ;

#***************************************************************************
#*                   SCHNITT ZEICHNEN                                      *
#***************************************************************************
#
#                            Aussparung im Schnitt zeichnen
#
if (i11=1) then begin
  setlayer("ausspar");
  writeln(" ");
  write("Wo soll der Schnitt liegen");
  read(p6);
  p7=p6;
  p7.y=p7.y+wandst;
  p5=p6;
  p5.x=p5.x+r11+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 - (l_randst / 2);
stabanf.y = stabanf.y - betdeck - r50 - (diamtr / 2);
lageposnr.x = stabanf.x + para_a + (0.50 * WCOIUF);
lageposnr.y = stabanf.y - 0.40 * 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();
#
#                            1 Längseisen schräg links unten
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang - (2 + i10);
para_a = l_randst;
posanzahl=1;
stabmod() ;
#
rotate_point(stabanf,p1,(pi / 180 * -45));
verlegewinkel= 315.0 ;
lageposnr.x = stabanf.x - (0.50 * WCOIUF);
lageposnr.y = stabanf.y;
vlposzei=3;
vtlendpkt=stabanf;
posnrzei=3;
posnrli=1;
stabgeo();
#
#                            2 Längseisen schräg links oben
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang - (2 + i10);
para_a = l_randst;
posanzahl=1;
stabmod() ;
#
rotate_point(stabanf,p1,(pi / -2));

verlegewinkel= 225.0 ;
lageposnr.x = stabanf.x;
lageposnr.y = stabanf.y + (0.50 * WCOIUF);
vlposzei=3;
vtlendpkt=stabanf;
posnrzei=3;
posnrli=1;
stabgeo();
#
#                            3 Längseisen schräg rechts oben
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang - (2 + i10);
para_a = l_randst;
posanzahl=1;
stabmod() ;
#
rotate_point(stabanf,p1,(pi / -2));
Verlegewinkel= 135.0 ;
lageposnr.x = stabanf.x + (0.50 * WCOIUF);
lageposnr.y = stabanf.y;
vlposzei=3;
vtlendpkt=stabanf;
posnrzei=3;
posnrli=0;
stabgeo(); 
#
#                            4 Längseisen schräg rechts unten
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang - (2 + i10);
para_a = l_randst;
posanzahl=1;
stabmod() ;
#
rotate_point(stabanf,p1,(pi / -2));
Verlegewinkel= 45.0 ;
lageposnr.x = stabanf.x;
lageposnr.y = stabanf.y - (0.50 * WCOIUF);
vlposzei=3;
vtlendpkt=stabanf;
posnrzei=3;
posnrli=0;
stabgeo();
#
#                            Längseisen im Grundriss oben zeichnen
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang;
para_a = l_randst;
posanzahl=1;
stabmod() ;
#
stabanf=p1;
verlegewinkel= 0.0 ;
stabanf.x = stabanf.x - (l_randst / 2);
stabanf.y = stabanf.y + betdeck + r50 + (diamtr / 2);
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 links zeichnen
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang;
para_a = l_randst;
posanzahl=1;
stabmod() ;

stabanf=p1;
verlegewinkel= 0.0 ;
stabanf.x = stabanf.x - betdeck - r50 - (diamtr / 2);
stabanf.y = stabanf.y + (l_randst / 2);
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
#
BWFORM("A1");
Hakenvorn = 0; Hakenhint = 0;
durchm = i10 #Durchmesser setzen
anzahl=2;
abstand = abstlang;
para_a = l_randst;
posanzahl=1;
stabmod() ;

stabanf=p1;
stabanf.x = stabanf.x + betdeck + r50 + (diamtr / 2);
stabanf.y = stabanf.y + (l_randst / 2);
lageposnr.x = stabanf.x + (0.50 * WCOIUF);
lageposnr.y = stabanf.y - para_a - (0.55 * WCOIUF);
verlegewinkel= 90.0 ;
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
  p9 = p6;
  p9.x = p9.x + betdeck + r50 + r51;
  p9.y = p9.y + (wandst / 2) - (abstlang / 2);
  stabanf=p9;
  stabzei=1;
  posnrzei=3;
  verteilzei=4;
  ansicht=1;
  stabkreis=1;
  verlegewinkel=90.0;
  lageposnr.x = p6.x - (0.35 * WCOIUF);
  lageposnr.y = p6.y + (wandst / 2);
  posnrli=1;
  stabgeo();
end
#
#                            Steckeisen
#
BWFORM("A3");
durchm =i2;    # Durchmesser setzen
abstand = abststeck;
anzahl = ((rad_kr * 2 * PI) / abstand) + 1;
begwi = 0;
endwi = (2*PI/anzahl)*(anzahl-1);
radius = rad_kr;
para_a = r11;
para_b = wandst - (2 * betdeck) - sudurhb;
para_c = para_a;
posanzahl = 1;
stabmod();
#
#                            Steckeisen verlegen
#
Stabzei=1;
ansicht=1;
stabkreis=0;
Bogen = 1;
stabecke=2;
stabeiwi=180;
verlegewinkel=0;
stabanf=p1;
posnrzei=6;
verteilzei=1;
vlposzei=4;
posnrli=0;
posdrewi=0;
VTLABST=(rad_kr - (3 * betdeck));
lageposnr=stabanf;
lageposnr.x=lageposnr.x + rad_kr + (1.15 * WCOIUF);
lageposnr.y=lageposnr.y + (0.30 * WCOIUF);
stabgeo();
#
#                            Steckeisen im Schnitt zeichnen
#
if (i11=1) then begin
STABZABR = 4; # Stäbe als Doppellinie
  Stabzei=5;
  ansicht=3;
  Stabkreis=0;
  stabecke=3;
  stabeiwi=-90;
  verlegewinkel=0;
  Bogen = 0;
  p9 = p6;
  p9.x = p9.x + betdeck;
  p9.y = p9.y + (wandst / 2) - (para_b / 2);
  stabanf=p9;
  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.
