speedikon Stapelbetrieb (Elementreport) funktioniert nicht immer

Hallo,

ich möchte mittels Stapelbetrieb den Elementreport "LuftRaum" in den Geschossen 1-4 automatisch starten.

Leider funktioniert der Stapelbetrieb nur gelegendlich.. ich konnte leider noch keinerlei Hinweis darauf finden, warum das so passiert.

Wenn man den Elementreport seperat in den jeweiligen Geschossen startet funktioniert es.

Hier der VBA-Code für den Stapelbetrieb:

Sub Elementreport()

Dim FF As Integer
Dim pfad As String              ' Pfad zur job.lst-Datei
Dim Pfad1 As String             ' Pfad zum Speedikon-Programmverzeichnis
Dim pfad2 As String             ' Pfad zur area.bat-Datei
Dim retval As Double


FF = FreeFile

pfad = Left(ActiveDesignFile.Path, InStr(ActiveDesignFile.Path, ".bpd") + 7) + "\bat\"

' Es wird geprüft, ob das Verzeichnis "...bpd\bat" im Projektordner vorhanden ist - wenn nicht wird es erstellt.
If Dir(pfad, vbDirectory) = "" Then
  MkDir (pfad)
End If

pfad = pfad + Environ$("Computername")

' Es wird geprüft, ob das Verzeichnis "...bpd\bat\$COMPUTERNAME$" im Projektordner vorhanden ist - wenn nicht wird es erstellt.
If Dir(pfad, vbDirectory) = "" Then
  MkDir (pfad)
End If

pfad = pfad + "\rpt"

' Es wird geprüft, ob das Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" im Projektordner vorhanden ist - wenn nicht wird es erstellt.
If Dir(pfad, vbDirectory) = "" Then
  MkDir (pfad)
End If

pfad = pfad + "\job.lst"

' Es wird geprüft, ob die Datei "...bpd\bat\$COMPUTERNAME$\rpt\job.lst" im Projektordner vorhanden ist - wenn nicht wird es erstellt.
If Dir(pfad, vbNormal) = "" Then

  Open pfad For Output As #FF

  Print #FF, "#"
  Print #FF, "# Job script for reporting elements"
  Print #FF, "# ================================="
  Print #FF, "#"
  Print #FF, "CMDNAME"
  Print #FF, "ReportElement"
  Print #FF, "#"
  Print #FF, "# Documents to process"
  Print #FF, "#"
  Print #FF, "CMDQUEUE"
  Print #FF, "floor 01:01"
  Print #FF, "floor 02:01"
  Print #FF, "floor 03:01"
  Print #FF, "floor 04:01"
  Print #FF, "#"
  Print #FF, "# Queue processing arguments"
  Print #FF, "#"
  Print #FF, "CMDARGS"
  Print #FF, "integer P_report_listing_output=1"
  Print #FF, "string P_report_listing_name=" + Chr(34) + "luftraum" + Chr(34)
  Print #FF, "string P_report_layout_name=" + Chr(34) + "luftraum" + Chr(34)
  Print #FF, "#"
  Print #FF, "# End of job script"
  Print #FF, "#"

  Close #FF

End If

' Pfad zum Speedikon-Programmverzeichnis wird als pfad1 gespeichert.
Pfad1 = Left(ActiveWorkspace.ConfigurationVariableValue("MS_CONFIG"), InStrRev(ActiveWorkspace.ConfigurationVariableValue("MS_CONFIG"), "\") - 1)

' Pfad zum Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" wird als pfad2 gespeichert.
pfad2 = Left(pfad, Len(pfad) - 8)

' Datei "area.bat" wird im Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" angelegt (bzw. neu erstellt)
Open pfad2 + "\rpt.bat" For Output As #FF

Print #FF, Environ$("Systemdrive")
Print #FF, "cd " + Chr(34) + Pfad1 + Chr(34)
Print #FF, "chcp 1252>nul"
Print #FF, "rptbatch.bat " + Chr(34) + Left(ActiveDesignFile.Path, InStr(ActiveDesignFile.Path, ".bpd") + 3) + Chr(34)
Close #FF


'Shell wartet nicht, bis die Ausführung beendet ist...
retval = ExecuteWait(pfad2 & "\rpt.bat", hidden:=True)



End Sub

Public Function ExecuteWait(ByVal pfad As String, Optional ByVal Argumente As String = "", Optional ByVal ArbeitsVerzeichnis As String, Optional ByVal FensterStil As Elkmenu.OMProcessWindowStyle = 1, Optional ByVal hidden As Boolean = True) As Integer
Dim p As Elkmenu.Process
Set p = New Elkmenu.Process
p.CreateNoWindow = Not hidden
p.WorkingDirectory = ArbeitsVerzeichnis
p.windowstyle = FensterStil
p.FileName = pfad
p.Arguments = Argumente
p.StartWait
ExecuteWait = p.ExitCode
End Function

 

Luftraum.mcr:
# ******************************************************************************************************************************
# *   file:    LuftRaum.mcr
# *   date:    12.10.2016
# *   translated and formated with                 
# *   Bentley Speedikon MacroTranslator
# *   Purpose: Erstellt fuer das Luftmengenprotokoll Datei mit Raumnr und Raumname2   
# *   User: Jaci
# ******************************************************************************************************************************

BESCHREIBUNG LuftRaum;
  UMGEBUNG report;
 
    VARIABLEN
        GANZZAHL EE, EENr, iRet2;
        DEZIMAL Vol1, Vol2, Umf;
        ZEICHEN Pfad, Gesch, Bauab, Vol, uUmfang;
  ENDE

    projektpfad(Pfad);

    Text_ersetzen(Pfad,'/','\');
    
    Wenn RP_STOCKWERK > 9 DANN
        Format(2, GZ2);
        Text(2, Gesch, RP_STOCKWERK);
        Text(2, Bauab, RP_BAUABSCHNITT);
    SONST
        Format(3, GZ1);
        Text(3, Gesch, RP_STOCKWERK);
        Text(3, Bauab, RP_BAUABSCHNITT);
    ENDE
        
    OEFFAUSGAB (Pfad +  '\ELK.project.data\Lueftung\' + gesch + '_' + Bauab + '_Luft_Raum.dat', 1);
    
    EE := Setze_Bauteil(RP_RAUM);
    WENN EE > 0 DANN
        FUER EENr := 1 SCHRITT EENr := EENr + 1 BIS EENr = EE;

            iRet2 := Bauteil_Info(EENr);
            
            WENN iRet2 = 0 DANN    
                
                Vol1 := RP_RA_VOLUMEN;
                Vol1 := Vol1 / 1000000000;                
                
                Format(4, DZ4.2);
                Text(4, Vol, Vol1);

                Ausgabe (1, RP_RA_NUMMER + '_' + RP_RA_NAME_2 + '_' + Vol);
                
            ENDE            

        ENDE
    ENDE
    
    SCHLAUSGAB;
    
ENDE
    
   

Ich hoffe jemand hat eine Idee, wo der Fehler begraben sein könnte?

Parents
  • Hi,

    wenn der Stapelbetrieb manchmal funktioniert ist das Vorgehen wohl grundsätzlich korrekt. Stellt sich also die Frage was läuft noch im Hintergrund, das Einfluss auf den Prozess hat? Es muss ja etwas sein, das mal läuft und mal nicht. Oder ist es Rechner oder Anwender bezogen?
    Was passiert denn, wenn der Stapelbetrieb nicht komplett durchläuft? Gibt es eine Meldung oder wird nur ein Grundriss abgearbeitet oder startet der Prozess erst gar nicht?

    Viele GrĂĽĂźe,
    S. Janku



  • Hallo,

    Im Hintergrund sollte hier sonst nichts laufen, ich rufe nur den Stapelbetrieb auf.
    Auf meinem Rechner (lokal) funktioniert es meistens sofort, bzw. nach einiger Male aufrufen.

    (Bei meinem Rechner konnte ich mal ganz kurz sehen, wie im Hintergrund die Meldung <!> - Error - <!>- Undo-Lib nicht initialisiert (Undo Exit) erscheint, kommt aber mittlerweile nicht mehr vor..)

    Bei Anwendern die auf einem virtuellen Desktop arbeiten funktioniert es gar nicht.
    Es gibt keine Meldung, gar nichts. Der Grundriss wird zwar im Hintergrund geöffnet, aber das Makro das aufgerufen werden sollte, wird nicht ausgeführt. (Das Makro manuell auszuführen funktioniert aber, also am Makro sollte es nicht liegen)

    Viele Grüße

  • Hallo, guten Morgen,

     

    hmm, ich fürchte da kann der Support nicht weiterhelfen. speedikon ist nicht auf virtuellen Desktops getestet und zertifiziert. Es gibt dafür so viele Systeme, das würde den Support sprengen und unmöglich machen. Folglich kennt sich bei uns niemand mit dieser Technologie aus und wie sie sich von "normalen" Rechnern unterschiedet.

    Man kann versuchen die Software auf diesem Weg zu betreiben und meistens wird es auch funktionieren, aber falls nicht haben wir leider nicht die Möglichkeiten bei der Fehlersuche zu helfen.

    Vielleicht schauen Sie, ob Sie die Routine lokal laufen lassen können… Oder, da VBA ja nicht speedikon spezifisch ist, kann Ihnen jemand im internationalen MicroStation Forum helfen: MicroStation Forum (Frage auf Englisch stellen).

     

    Viel Erfolg und alles Gute,

    S. Janku



    Answer Verified By: Silbermann 

Reply
  • Hallo, guten Morgen,

     

    hmm, ich fürchte da kann der Support nicht weiterhelfen. speedikon ist nicht auf virtuellen Desktops getestet und zertifiziert. Es gibt dafür so viele Systeme, das würde den Support sprengen und unmöglich machen. Folglich kennt sich bei uns niemand mit dieser Technologie aus und wie sie sich von "normalen" Rechnern unterschiedet.

    Man kann versuchen die Software auf diesem Weg zu betreiben und meistens wird es auch funktionieren, aber falls nicht haben wir leider nicht die Möglichkeiten bei der Fehlersuche zu helfen.

    Vielleicht schauen Sie, ob Sie die Routine lokal laufen lassen können… Oder, da VBA ja nicht speedikon spezifisch ist, kann Ihnen jemand im internationalen MicroStation Forum helfen: MicroStation Forum (Frage auf Englisch stellen).

     

    Viel Erfolg und alles Gute,

    S. Janku



    Answer Verified By: Silbermann 

Children
No Data