# Mattenliste mit Schneideskizze auf A4 Format
# Wird in Plan abgelegt. Mit Eintrag Blattdaten.
# 18.09.2008/LF überarbeitet 05.12.2008/LF überarbeitet 05.03.2009/LF
#überarbeitet 05.12.2010/LF - mehrseitiger Druck
# Überarbeitet 25.10.2022/LF - Schriftfeld Texthöhen verändert

# Zuweisung Variablennamen
name(i30,"reihe") ;
name(i31,"spalte");
name(i32,"blatnr");
name(i33,"anzlis");
name(r30,"abstx");
name(r31,"absty");

name(i40,"penrah");
name(i41,"penpos");
name(i42,"penlb") ;
name(i43,"penbez");
name(r40,"txhvau");
name(r41,"txhpos");
name(r42,"txhlb") ;
name(r43,"txhbez");
name(r44,"mstb");


name(s30,"bauva");
name(s31,"bauvb");
name(s32,"bauta");
name(s33,"bautb");
name(s34,"plnr");
name(s35,"prjnr");
name(s36,"datu");
name(s37,"lisnr");
name(s38,"gezei");
name(s39,"koptxt");

# Zuweisung Farben und Texthöhen Matten
penrah = 2 ;    # Farbe fuer den Rahmen               0=Nicht zeichnen
txhvau = 0.0 ;  # Texthoehe fuer den Auszug darunter  0.0 = nicht
penpos = 4;
txhpos = 17.5;  # Farbe+Texthoehe Positionsnummer in Matte
penlb  = 1;
txhlb  = 10.0;  # Farbe+Texthoehe Laenge/Breite
penbez = 3;
txhbez = 17.5;  # fuer Bezeichnung ueber der Matte

# Zuweisungen Einträge Listenkopf
	project(s50,"FIRMA_NAME1")
	project(s51,"FIRMA_NAME2")
	project(s52,"FIRMA_NAME3")
	project(s53,"FIRMA_STRASSE")
	project(s54,"FIRMA_PLZ")
	project(s55,"FIRMA_ORT")
		string_cat(s54," "); string_cat(s54,s55);
	project(s56,"FIRMA_TEL")
		string_cat(s59, "Tel. "); string_cat(s59,s56);
	project(s57,"FIRMA_FAX")
		string_cat(s60, "Fax. "); string_cat (s60,s57);
	project(s62,"FIRMA_E_MAIL");
	string_cat(s61, "e-mail: "); string_cat (s61,s62);

project(datu,"DATE");

project(plnr,"ZEICHNUNG");
lisnr = "2";
bauva = "Bauvor_1";
bauvb = "Bauvor_2";
bauta = "Bauteil_1";
bautb = "Bauteil_2";
prjnr = "ProjNr";
gezei = "";

#  --------------------------------------------------------------
# Prüfen, ob Datei Kopftext.txt vorhanden, wenn nein, dann anlegen.

# Dateiname festlegen
# koptxt = plnr;
#    string_cat(koptxt,"_Kopfdaten.txt");
koptxt = "Kopfdaten.txt";

    project(s1,"ZEICHNDIR") # Aktuelles Planverzeichnis einlesen
    string_cat(s1,"\");
    string_cat(s1,koptxt);

DATOPEN(-1,s1,""); # -1= nur pruefen ob Datei da ist-> wcoretval 0=Nein 1=Ja
writeln(s1);

if(wcoretval = 0) then 
    begin
 datopen(0, s1,"w"); # Daten schreiben
    writeln(bauva); # 1. Zeile für Blattkopf Bauv.1
    writeln(bauvb); # 2. Zeile für Blattkopf Bauv. 2
    writeln(bauta); # 3. Zeile für Blattkopf Baut. 1
    writeln(bautb); # 4. Zeile für Blattkopf Baut. 2
    writeln(prjnr); # 5. Zeile für Blattkopf Projektnr
    writeln(gezei); # 6. Zeile für Blattkopf Zeichner
 datclose();
	end;

if(wcoretval <> 0) then 
    begin
 datopen(0, s1,"r"); # Vorhandene Daten lesen
    readln(bauva); # 1. Zeile für Blattkopf 
    readln(bauvb); # 2. Zeile für Blattkopf 
    readln(bauta); # 3. Zeile für Blattkopf 
    readln(bautb); # 4. Zeile für Blattkopf 
    readln(prjnr); # 5. Zeile für Blattkopf 
    readln(gezei); # 6. Zeile für Blattkopf Zeichner
 datclose();
	end;

#  --------------------------------------------------------------
# Listenkopf.

dlg_init(): #Init new Dialog

    #Label
     dlg_editbox(1,2,"Bauvorh-1:*",bauva,60);
     dlg_editbox(1,3,"Bauvorh-2:*",bauvb,60);
     dlg_editbox(1,4,"Bauteil-1:*",bauta,60);
     dlg_editbox(1,5,"Bauteil-2:*",bautb,60);
     dlg_editbox(1,6,"Plan Nr. : ",plnr,30);
     dlg_editbox(1,7,"Proj. Nr.:*",prjnr,30);
     dlg_editbox(1,8,"Datum    : ",datu,30);
     dlg_editbox(1,9,"Gez.     :*",gezei,30);
     dlg_editbox(1,10,"Liste Nr.: ",lisnr,30);
     dlg_label(1,12,"Automatisieren Sie Listeneinträge und Planköpfe mit der artifex Zeichnungsverwaltung",85);
     dlg_label(1,13,"artifex-Projektserver-Information unter www.artifex-cad.de oder +49 6222 98010",85);
     #CheckBox schreiben
     i52 = 0;
     dlg_checkbox(1,11,"* Änderungen speichern? Häkchen = 'JA'",50,i52);
	  # Maßstab
	 dlg_list_set(1,"1 :  -",1);                  
	 dlg_list_set(2,"1 : 25",1);
	 dlg_list_set(3,"1 : 50",1);
	 dlg_list_set(4,"1 : 20",1);
	 dlg_list_set(5,"1 : 10",1);
	 dlg_list_set(6,"1 :100",1);
	 dlg_list_set(7,"1 :  5",1);
	 dlg_listbox(1,15,"Maßstab   ",10,1);          
	 #Edit Field
	 i92 = 50;
	 dlg_editbox(1,16,"Maßstab 1:",i92,10);  

     dlg_start("Daten für Listenkopf",i5); # 0= OK;  -1=Cancel;  > 0 =Button Number
	 if( i5 < 0) then exit;
	
	if((i52 > 0) and ( i5 >= 0)) then
      begin
	  datopen(0, s1,"w"); # Daten schreiben
      writeln(bauva); # 1. Zeile für Blattkopf Bauv.1
      writeln(bauvb); # 2. Zeile für Blattkopf Bauv. 2
      writeln(bauta); # 3. Zeile für Blattkopf Baut. 1
      writeln(bautb); # 4. Zeile für Blattkopf Baut. 2
      writeln(prjnr); # 5. Zeile für Blattkopf Projektnr
      writeln(gezei); # 6. Zeile für Blattkopf Gez.
	  datclose();
    end;
	
	if((i92 > 0) and ( i5 >= 0)) then
    begin
	  i93 = 0;
	  dlg_list_get(s7,i1,1);
	  if (s7 = "1 :  -") then i93 = 0;
	  if (s7 = "1 : 25") then i93 = 25;
	  if (s7 = "1 : 50") then i93 = 50;
	  if (s7 = "1 : 20") then i93 = 20;
	  if (s7 = "1 : 10") then i93 = 10;
	  if (s7 = "1 :100") then i93 = 100;
	  if (s7 = "1 :  5") then i93 = 5;
	  if (i93 > 0) then i92 = i93;
	end;
	
	mstb = (i92 / 100 * wcoiuf);

	
	if(i5 >= 0) then
		begin
		# Text und Zeichner zusammenfassen
		string_cat (s70, "gez.: "); string_cat (s70, gezei);
		gezei = s70;
		# Text und Projektnummer zusammenfassen
		if(prjnr > 0) then
			string_cat(s71,"Prj.Nr.: "); string_cat (s71,prjnr);
		prjnr = s71;
	end;

	

#  --------------------------------------------------------------

   setlayer("T_LISTEN_");

# writeln (mstb);
#Einfügepunkt auf 0 setzen
	p1.x = 0;
	p1.y = 0;
	p1.z = 0;

# Abfrage Einfügepunkt
# Mehrseitiger Druck?
	if (WCOPLOTPAGE = 0 ) then
		begin
		# Einfügepunkt 1. Skizze links unten
		write("Einfuegepunkt Schneideskizze:");
		read(p1);
	end

  p11 = p1; # Lage Einfügepunkt sichern

# -------------------------------
# Rechnen wieviele Listen gebraucht werden

    mbwanzbieg = mbwanzbieg + 12;  #Auffüllen für Int Variable
    r89 = mbwanzbieg / 13;
    anzlis = r89;

# writeln (mbwanzbieg);
# writeln (r89);
# writeln (anzlis);

# -------------------------------
# Listen einfügen
   blatnr = 1;
   spalte = 0;
   
  for i88 = 1 to anzlis do
  begin
  
  plotpage(blatnr,p11);
  
   insert("WCOMSK","ARTIFEX",p11,mstb,mstb,0.0);
   # Block/Zelle wcomsk in Bibliothek ARTIFEX
   
# --------------------------------------------
# Listentext einfügen : Firma

      gst_justify(1);          # unten mitte
      gst_rotation(0.0);
      gst_height(0.25 * mstb);
      gst_color(7);

  p9 = p11;
  p9.x = p9.x + (2.5 * mstb);
  p9.y = p9.y + (2.59 * mstb);
    text(p9,s50); #Firma 1
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s51); #Firma 2
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s52); #Firma 3
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s53); #Strasse
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s54); #plz Ort
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s59); #tel
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s60); #Fax
  p9.y = p9.y - (0.343 * mstb);
    text(p9,s61); #e-mail

# --------------------------------------------
# Listentext einfügen : Bauteil

      gst_justify(2);          # unten rechts
      gst_rotation(0.0);
      gst_height(0.25 * mstb);
      gst_color(7);

  p9 = p11;
		p9.x = p9.x + (15.514 * mstb);
		p9.y = p9.y + (2.329 * mstb);
		text(p9,bauva); #BV 1
		p9.y = p9.y - (0.483 * mstb);
		text(p9,bauvb); #BV 2
		p9.y = p9.y - (0.483 * mstb);
		text(p9,bauta); #BT 1
		p9.y = p9.y - (0.483 * mstb);
		text(p9,bautb); #BT 2
		gst_height(0.35 * mstb);
		gst_color(2);
		p9.y = p9.y - (0.483 * mstb);
		text(p9,plnr); #Planname
		gst_color(7);
		gst_height(0.20 * mstb);
		p9.y = p9.y - (0.383 * mstb);
		text(p9,prjnr); #Projektnummer

# --------------------------------------------
# Listentext einfügen : Datum Blattnr

      gst_justify(1);          # unten mitte
      gst_rotation(0.0);
      gst_color(2);

# Listen- und Blattnr kombinieren.
   s99 = "";
   string_cat (s99,lisnr);
   string_cat (s99," - ");
   string_cat (s99,blatnr);

  p9 = p11;
  p9.x = p9.x + (17.0 * mstb);
  p9.y = p9.y + (1.845 * mstb);
      gst_height(0.30 * mstb);
    text(p9,datu); #Datum
  p9.y = p9.y - (1.34 * mstb);
      gst_height(0.35 * mstb);
    text(p9,s99); #Listennummer - Blattnr
#    text(p9,blatnr); #Blattnr
      gst_height(0.25 * mstb);
      gst_color(7);
  p9.y = p9.y - (0.40 * mstb);
    text(p9,s70); #Zeichner

  blatnr = blatnr + 1;

  p11.x = p11.x + 31 * mstb;

end;

# --------------------------------------------

#******************************************************************************
# Matten in Listen einfügen

   gst_justify(0); # unten links
   gst_rotation(0); # horizontal

penrah = 2 ;   # Farbe fuer den Rahmen 0=Nicht zeichnen
txhvau = 0.0 ; # Texthoehe fuer den Auszug darunter  0.0 = nicht
penpos = 4;
txhpos = (17.5 / 50 * mstb); # Farbe+Texthoehe Positionsnummer in Matte
penlb  = 1;
txhlb  = (10.0 / 50 * mstb); # Farbe+Texthoehe Laenge/Breite
penbez = 3;
txhbez = (17.5 / 50 * mstb); # fuer Bezeichnung ueber der Matte

# Einfügen Schneideskizzen
   r45 = 100 / i92; # Massstab für Mattendarstellung
   gst_justify(0); # unten links Text für Mattendarstellungen

mbwbiegevor(r45,penrah,penpos,penlb,penbez,txhvau,txhpos,txhlb,txhbez);
   
   abstx= 3.4 * mstb; # Mattenabstand x
   absty= 7.1 * mstb; # Mattenabstand y
   p3 = p1 ;
   p3.x = p3.x + 1.2 * mstb ; # Lage erste Darstellung x
   p3.y = p3.y + 6.6 * mstb ; # Lage erste Darstellung y

   blatnr = 1;
   reihe  = 0;
   spalte = 0;

   write(mbwanzbieg);
   
   for i88 = 1 to mbwanzbieg do
     begin
     
     plotpage(blatnr,p1);
     
      p2 = p3 ;
      p2.x = p2.x + reihe * abstx;
      p2.y = p2.y + spalte * absty;

      i87 = 5 ; # Anzahl Darst. nebeneinander
      if(spalte = 0) then i87 = 3 ; # 3 Darst. in 1 Reihe
          reihe = reihe + 1;
      if( reihe = i87) then
         begin
          reihe = 0;
          spalte = spalte + 1;
         end 

   if( spalte = 3) then
     begin
       spalte = 0 ;
       reihe = 0 ;
     if(blatnr < anzlis) then
       begin
       blatnr = blatnr + 1;
       end:
    if(anzlis >= blatnr) then
       begin
       p1.x = p1.x + 31.0 * mstb;
       p3 = p1 ;
       p3.x = p3.x + 1.2 * mstb ;
       p3.y = p3.y + 6.6 * mstb ;
    end; # fi spalte =  3
    
   end;  # i88 mbwanzbieg

      mbwplbiege(p2,i88);
      
     end
# -------------------------------------------------
# Gewichtsliste schreiben

# für mehrseitigen Druck P1 zurücksetzen
   p1.x = p1.x - 31.0 * mstb;

   abstx = 2.0 * mstb; #  Textabstand Gewichtslistex
   absty = 0.5 * mstb; # Textabstand Gewichtsliste y
   p2  = p1;
   p2.x = p2.x + 12.2 * mstb;
   p2.y = p2.y + 9.9 * mstb;

   gst_height(12.5 / 50 * mstb);
   gst_justify(0);    # unten links
   gst_rotation(0.0); # horizontal
   gst_color(2);

    plotpage(blatnr,p1);

    for i88 = 1 to mbwanzmatt do
     begin

      p3=p2;
      mbwliste(i88,"GANZ","7",s1);
      text(p3,s1);
      p3.x = p3.x + abstx ;
      mbwliste(i88,"GTYP","7",s1);
      text(p3,s1);
      p3.x = p3.x + abstx ;
      mbwliste(i88,"GGWP","7.2",s1);
      text(p3,s1);
      p2.y = p2.y - 0.5 * mstb ;
      
     end

# -------------------------------------------------
# Summen schreiben

   p2 = p1;
   p2.x = p2.x + 12.2 * mstb;
   p2.y = p2.y + 4.2 * mstb;
   mbwliste(i88,"GSTUECK","7",s1);
   text(p2,s1);
   p2.x = p2.x + 4.0 * mstb;
   mbwliste(i88,"GGEW","7.2",s1);
   text(p2,s1);
   end # fi listart = 1

end;
end;

	# Start mehrseitiger Druck   
	plotpage(0,p1);
	write("");

END.
