Jump to content

Recommended Posts

Posted

Hallo Zusammen,

ich arbeite in einem Ingenieure Büro und wir zeichnen Pläne und legen diese Pläne struktuiert auf unseren Server ab.

Wenn wir alle Pläne fertig haben, dann erstellen wir eine Planliste die so aussieht:

Excel Tabelle

 - Ab A/6 soll z.b. der Name von der PDF-Datei eingetragen werden.

-  Für Index soll vom Dateinamen der Index ausgelesen werden.

   Beispiel:

   Dateiname ist "EP-03061-GR-DB-00-c", <-- am ende des Namens steht der Index und der sollte in der Exceltabelle unter "Index" eingetragen werden.

- Datum kann ausgelassen werden, da es nicht um das Erstellungs Datum geht sondern wann der Plan gezeichnet wurde und das kann man nicht aus einer PDF auslesen.

- Maßstab kann auch ausgelassen werden, da es auch im Schriftkopf in der PDF steht.

- Wenn es geht würde ich gern das Format auslesen aus der PDF und in Excel in "Format" einfügen.

  (wenn es keine Umstände macht auch die automatische Erkennung, dass wenn das Format "210x297" sein sollte, dass in Excel A4 eingetragen wird.)

Hier eine Tabelle:

A0
841 x 1189

A1
594 x 841

A2
420 x 594

A3
297 x 420

A4
210 x 297

- Bei Beschriftungstext muss erstmal auch nichts hin, da es auch nicht leicht wird und da mache ich ein neuen Thread auf, falls ich es nicht selber schaffe.

Also Ich möchte ein Programm schreiben das uns die Planliste automatisch ausfüllt.

Dafür habe ich im Menü die Funktion "Set Folder". Damit trägt man den Pfad zum Projekt-Ordner ein.

Der Pfad wird in der hier in eine .ini gespeichert

Bin\Sys\cfg\path.ini


[Config]
Path=I:\RRI\Projekte\02863_WHG & EKZ_Köln-Kalk\

Der darauf Folgende Pfad ist dann immer gleich:

Elektro :   "18_Zeichnungen\3_RRI\1_Elektro\1_Grundrisse"
            "18_Zeichnungen\3_RRI\1_Elektro\2_Schemen"
Heizung :   "18_Zeichnungen\3_RRI\2_Heizung\1_Grundrisse"
            "18_Zeichnungen\3_RRI\2_Heizung\2_Schemen"
Lüftung :  "18_Zeichnungen\3_RRI\3_Lüftung\1_Grundrisse"
            "18_Zeichnungen\3_RRI\3_Lüftung\2_Schemen"
Sanitär :  "18_Zeichnungen\3_RRI\4_Sanitär\1_Grundrisse"
            "18_Zeichnungen\3_RRI\4_Sanitär\2_Schemen"
Sprinkler : "18_Zeichnungen\3_RRI\5_Sprinkler\1_Grundrisse"
            "18_Zeichnungen\3_RRI\5_Sprinkler\2_Schemen"

Wie man Im Quellcode sehen kann habe ich das so gelöst, dass ich meine Excel-Vorlage in den Ordner Export kopiere und möchte die Datei danach bearbeiten.

Zum Schluss wollte ich nochmal die Planlisten in den 5 Verschiedenen Gewerken exportieren.

Alles was im Verzeichnis Elektro gefunden wurde wird in Excel geschreiben, in D/4 wird Elektro eingetragen und als Excel-Datei abgespeichert.

Das alles in den 5 Gewerken, also gibt es dann 5 Excel Dateien(außer wird haben ein Gewerk ausgelassen, dann wird die Tabelle für das Gewerk ausgelassen)

 

Hier ist mein Quellcode:

#include <File.au3>
#include <Excel.au3>
#Include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <GuiMenu.au3>
#include <FileListToArrayRecursive.au3>
$ini = @ScriptDir & "\Bin\Sys\cfg\path.ini"
Local $SourceFolder = "Bin\Sys\excl\file\"
Local $DestinationFolder = "Export\"

; Form1.
$Form1 = GUICreate("RRI Planlisten Exporter 2018", 763, 222, 198, 597)
$MenuItem1 = GUICtrlCreateMenu("&File")
$MenuItem6 = GUICtrlCreateMenuItem("Set Folder", $MenuItem1)
$MenuItem4 = GUICtrlCreateMenuItem("Save", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem5 = GUICtrlCreateMenu("&Update")
$MenuItem7 = GUICtrlCreateMenuItem("Check", $MenuItem5)
$MenuItem2 = GUICtrlCreateMenu("&?")
$MenuItem8 = GUICtrlCreateMenuItem("Info", $MenuItem2)
$Pic1 = GUICtrlCreatePic("Bin\Sys\img\EX_BG_2018.jpg", -280, 0, 865, 225)
$Progress1 = GUICtrlCreateProgress(16, 168, 550, 17)
$Button1 = GUICtrlCreateButton("Export", 592, 160, 161, 33)
$ListText = GUICtrlCreateList("", 16, 8, 297, 147)
$Radio1 = GUICtrlCreateRadio("Tenbrinke", 600, 32, 145, 33)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
GUICtrlSetCursor (-1, 0)
$Radio2 = GUICtrlCreateRadio("Reim und Reimers", 600, 64, 145, 25)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
GUICtrlSetCursor (-1, 0)
$Label1 = GUICtrlCreateLabel("Planschlüssel ", 600, 8, 118, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
GUISetState(@SW_SHOW)
; Form1 end.

; Form2.
$Form2 = GUICreate("Project path selection", 502, 83, 615, 493)
$invoer = GUICtrlCreateInput("Projekt Path here", 24, 16, 449, 21)
$voerin = GUICtrlCreateButton("Save Path", 24, 48, 91, 25)
$Button3 = GUICtrlCreateButton("Exit", 392, 48, 83, 25)
GUISetState(@SW_HIDE)
; Form2 end.


; Loop until the user exits.
    While 1
      $nMsg = GUIGetMsg(1)
         Switch $nMsg[1]
         Case $Form1
             Switch $nMsg[0]
                Case $GUI_EVENT_CLOSE, $MenuItem3
                    Exit
               Case $MenuItem6
                  GUISetState(@SW_SHOW, $Form2)
                  GUICtrlSetData($invoer, IniRead($ini, "Config", "Path", ""))
               Case $MenuItem8
                  MsgBox($MB_SYSTEMMODAL, "Info", "Version 0.3 // Made By Adam Gabler")
               Case $MenuItem7
                  MsgBox($MB_SYSTEMMODAL, "Update Check", "Zurzeit kein Update verfügbar")
               Case $Button1 , $MenuItem4
               GUICtrlSetData($ListText, "Loading...")
               GuiCtrlSetData($Progress1, 25)
                Sleep(800)
               _ExportData()
                GuiCtrlSetData($Progress1, 44)
                GUICtrlSetData($ListText, "")
                GUICtrlSetData($ListText, "Loading...")
                GUICtrlSetData($ListText, "Create a Excel file")
                Sleep(1800)
                GuiCtrlSetData($Progress1, 88)
                GUICtrlSetData($ListText, "")
                GUICtrlSetData($ListText, "Loading...")
                GUICtrlSetData($ListText, "Create a Excel file")
                GUICtrlSetData($ListText, "")
                GuiCtrlSetData($Progress1, 100)
                GUICtrlSetData($ListText, "Finish! The file is saved")
                Sleep(800)

               EndSwitch
         Case $Form2
               Switch $nMsg[0]
                Case $GUI_EVENT_CLOSE
                    GUISetState(@SW_HIDE, $Form2)
                Case $Button3
                    GUISetState(@SW_HIDE, $Form2)
                Case $voerin
                IniWrite($ini, "Config", "Path", GUICtrlRead($invoer))
               EndSwitch
      EndSwitch
     WEnd


    Func _ExportData()
         Local $Array = _FileListToArrayRecursive($SourceFolder, "excel.xlsx", 1, 1)
         If Not IsArray($Array) Or Not $Array[1] Then Exit Msgbox(4096, 'No Files Found', 'Cannot Find any Files in ' & $SourceFolder)

         Local $CopyArray[$Array[0] + 1][2]
         $CopyArray[0][0] = $Array[0]

         For $i = 1 to $Array[0]
            $CopyArray[$i][0] = $Array[$i]
            $CopyArray[$i][1] =  StringRegExpReplace($Array[$i], StringReplace($SourceFolder, "\", "\\"), StringReplace($DestinationFolder, "\", "\\"))
         Next
         For $i = 1 to $CopyArray[0][0]
         FileCopy($CopyArray[$i][0], $CopyArray[$i][1], 9)
   Next
EndFunc

 

Ich bin noch ein Anfänger , das ist mein erstes Programm mit Autoit und bis hier kam ich alleine zurecht. 

Ich kann mich schnell einarbeiten aber hierbei bräuchte ich Hilfe mit der Auslesung der Dateien und Eintragung in der Excel Tabellen.

Mir ist auch klar das der Code..

Case $Button1 , $MenuItem4
               GUICtrlSetData($ListText, "Loading...")
               GuiCtrlSetData($Progress1, 25)
                Sleep(800)
               _ExportData()
                GuiCtrlSetData($Progress1, 44)
                GUICtrlSetData($ListText, "")
                GUICtrlSetData($ListText, "Loading...")
                GUICtrlSetData($ListText, "Create a Excel file")
                Sleep(1800)
                GuiCtrlSetData($Progress1, 88)
                GUICtrlSetData($ListText, "")
                GUICtrlSetData($ListText, "Loading...")
                GUICtrlSetData($ListText, "Create a Excel file")
                GUICtrlSetData($ListText, "")
                GuiCtrlSetData($Progress1, 100)
                GUICtrlSetData($ListText, "Finish! The file is saved")
                Sleep(800)

..Ziehmlich schlecht ist :D aber ich wusste jetzt auch nicht wie ich den Text untereinander anzeigen lassen kann (wie bei einer Installation).

Ist auch nicht das wichtigste :) 

ich hoffe es ist nicht zu viel verlangt und das ich mich Verständlich ausgedruckt habe ansonsten einfach nachfragen.

Ich bedanke mich schon mal für Eure Mühen :) 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...