Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Gelöst Catia V5 Step Daten per Batch in Explorer umwandeln

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min
  
KISTERS 3DViewStation: Unterstützung für 3D CAD Kollaboration mit Lieferanten, eine Pressemitteilung
Autor Thema:  Gelöst Catia V5 Step Daten per Batch in Explorer umwandeln (423 / mal gelesen)
Lionel Hutz
Moderator



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 491
Registriert: 26.03.2014

CATIA V5 R26

erstellt am: 22. Dez. 2024 17:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


CreateBatchFile_CATScript.txt

 
Eigentlich wollte ich hiermit meinen Doktor in Catia machen, aber das Problem stellte sich dann doch als weniger kniffelig heraus, als es schien.

Ich habe ein Batch-Skript geschrieben, das es ermöglicht, Step-Dateien im Explorer zu konvertieren.
Voraussetzung sind eine funktionierende Catia-Installation und eine verfügbare Step-Lizenz.
Das Batch-Skript erzeugt eine XML-Datei im Aufbau wie bei Tools/Utilities/Batch-DXF-IGES-STEP, wenn statt Run auf Save gedrückt wird.
Mit dieser XML wird über den CATBatchStarter der Prozess Tools/Utilities/Batch-DXF-IGES-STEP autark ansprochen.

Der Prozess wird in einem DOS-Fenster ausgeführt, zieht eine Catia-Lizenz und die Step-Lizenz für den Zeitraum der Konvertierung an und gibt sie nach Abschluss direkt wieder frei.
Wenn bereits eine Catia-Instanz läuft, wird keine zusätzliche Lizenz verwendet (wenn dieselbe Lizenzkonfiguration verwendet wird).
Somit ist es möglich, Step-Daten umzuwandeln ohne manuelles Anziehen der Step-Lizenz.

Da ein paar Informationen über die Catia-Installation gesammelt werden müssen, beauftrage ich ein Makro damit, die Batchdatei zu erzeugen.

Features
Die neuen Dateien werden am selben Speicherort abgelegt.
Drag'n'Drop ist implementiert.
Verknüpfung von Step-Dateien über "Öffnen mit" ist möglich (für Doppelklick)
Multifile-Unterstützung ist implementiert bei Drag'n'Drop (bei Multifile/"Öffnen mit" wird allerdings für jede Datei ein eigener Prozess angestoßen).
Catia-Dateien zu Step ist implementiert.
Wenn keine Step-Lizenz verfügbar ist, wartet das Skript 30 Sekunden und startet den Prozess erneut (3 Versuche).

Schwächen des Programms:
"Öffnen mit" von mehreren Dateien startet für jede Datei einen eigenen Prozess. (Bei Multi-Drag'n'Drop wird EIN Prozess gestartet, der alle Dateien nacheinander abarbeitet.)
Fehlerbehandlung bei nicht-unterstützten Formaten ist nicht implementiert, da zur Zeit zwei Schleifen durchlaufen werden, die nicht miteinander kommunizieren. Dafür braucht es einen separaten String, um die Output-Section innerhalb der Schleife der Input-Section zu erstellen und dabei ungültige Dateitypen zu verwerfen.
Es sind nicht alle unterstützten Formate implementiert, da die Abfrage der Dateitypen in Groß- und Kleinschreibung eine ekelhafte Litanei im Quelltext ergibt. Eine elegante Case-Abfrage und ein einfaches UCASE im Batch sind mir nicht bekannt.
Das Skript wird bei jedem Fehler, der auftritt, drei mal neu gestartet. Das kann auch eine falsche Input-Datei sein. Die Meldung ist immer "Step-Lizenz nicht verfügbar".

Die eigentliche Vorgehensweise ist echt simpel, weshalb ich davon ausgehe, dass in den nächsten Tagen/Wochen eine Vielzahl von Neuimplementierungen in den Lieblingssprachen der jeweiligen Programmierer entstehen werden.
Und da eine Programmidee nicht mit einer Software-Lizenz schützbar ist, spare ich mir die Nennung einer Lizenz. Ich freue mich trotzdem über einen Vermerk "Inspired by Lionel Hutz at cad.de" oder ähnlich.

Hier der Inhalt der Batchdatei:

Code:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
REM Don't modify the order of the next 6 lines.
REM ------------Local CATIA Settings---------------
SET sLicPack=MD2.slt
SET env_dir=C:\Users\username\AppData\Local\Temp
SET env_file=env_CATIAV5_R32.txt
SET sCATTEMP=C:\Temp\CATIAV5\username\CATTemp
SET install_path=C:\Program Files\Dassault Systemes\B32\win_b64

REM -------------File Properties----------------
SET /A count = 0
SET sTimestamp=%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%
SET sTimestamp=%sTimestamp: =0%
REM Add a random number to filename to avoid overwriting of xml when using File-open-dialog on multiple files.
SET sBatchfile=Batch_stp_%sTimestamp%_%Random%.xml
SET BatchFileFull=%sCATTEMP%\%sBatchfile%

ECHO.^<?xml version="1.0" encoding="UTF-8"?^>> %BatchFileFull%
ECHO.^<^^!DOCTYPE root SYSTEM "Parameters.dtd"^>>> %BatchFileFull%
ECHO.^<root batch_name="BatchDataExchange" user="" password="" env="" version="" licfile="" ^>>> %BatchFileFull%
ECHO.^<inputParameters^>>> %BatchFileFull%

REM Create input section of xml-file
FOR %%A IN (%*) DO (
    SET sFilePath=%%~A

    ECHO.^<file id="FileToProcess" destination="" filePath="!sFilePath!" type="bin" upLoadable="RightNow" automatic="1"/^>>> !BatchFileFull!
)
ECHO.^</inputParameters^>>> %BatchFileFull%
ECHO.^<outputParameters^>>> %BatchFileFull%

REM Create output section of xml-file
FOR %%A IN (%*) DO (
    SET sInputFiletype=%%~xA
    SET sfolderPath=%%~dpA
    SET sfolderPath=!sfolderPath:~0,-1!
    ECHO %%A
    ECHO %%~xA
    REM ECHO sInputFiletype !sInputFiletype!

    IF "!sInputFiletype!" == ".stp" (
          SET sOutputFiletype=CATPart/CATProduct
    ) ELSE (
        IF "!sInputFiletype!" == ".step" (
            SET sOutputFiletype=CATPart/CATProduct
        ) ELSE (
            IF "!sInputFiletype!" == ".STP" (
                    SET sOutputFiletype=CATPart/CATProduct
                ) ELSE (
                    IF "!sInputFiletype!" == ".STEP" (
                        SET sOutputFiletype=CATPart/CATProduct
                    ) ELSE (
                        IF "!sInputFiletype!" == ".CATProduct" (
                            SET sOutputFiletype=stp
                        ) ELSE (
                            IF "!sInputFiletype!" == ".CATPart" (
                                SET sOutputFiletype=stp
                            ) ELSE (
                                SET sOutputFiletype=unsupported
        ))))))
    ECHO OutputFiletype !sOutputFiletype!
    SET /A count += 1
    ECHO.^<folder id="OutputFolder" destination="!sfolderPath!" folderPath="!sfolderPath!" type="bin" upLoadable="RightNow" extension="*" automatic="1"/^>>> !BatchFileFull!
    ECHO.^<simple_arg id="OutputExtension!count!" value="!sOutputFiletype!"/^>>> !BatchFileFull!
)
ECHO.^</outputParameters^>>> %BatchFileFull%
ECHO.^<PCList^>>> %BatchFileFull%
ECHO.^<PC name="%sLicPack%" /^>>> %BatchFileFull%
ECHO.^<PC name="ST1.prd" /^>>> %BatchFileFull%
ECHO.^</PCList^>>> %BatchFileFull%
ECHO ^</root^>>> %BatchFileFull%

ECHO xml %BatchFileFull% erstellt.

REM ----------Execute Catia batch-------------
SET CounterAttempts=3
SET ERRORLEVEL = 0
REM ECHO ERRORLEVEL=%ERRORLEVEL%
ECHO Conversion will be started.
:loop
%install_path%\code\bin\CATSTART.exe -run "CATBatchStarter -input %BatchFileFull%" -env %env_file% -direnv %env_dir%


IF %ERRORLEVEL% NEQ 0 (
    SET /a CounterAttempts=%CounterAttempts%-1
    IF %CounterAttempts% GTR 0 (
         ECHO No Step License available at this moment. 
         timeout /T 30
         goto loop
    ) ELSE (
         ECHO.
         ECHO ------No Step License available at this moment. Please try again later.-----
         ECHO.
         goto exitloop
    )
) ELSE (
DEL %BatchFileFull%
    ECHO.
    ECHO ----------BATCH SUCCHESSFULL FINISHED-----------
)

:exitloop
endlocal
REM pause
goto :end


Der Aufbauf der XML-Datei sieht so aus.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "Parameters.dtd">
<root batch_name="BatchDataExchange" user="" password="" env="" version="Catia Version and Build Date deleted]" licfile="" >
<inputParameters>
<file id="FileToProcess" destination="" filePath="C:\Temp\SomeStep.STP" type="bin" upLoadable="RightNow" automatic="1"/>
<file id="FileToProcess" destination="" filePath="C:\Temp\SomePart.CATPart" type="bin" upLoadable="RightNow" automatic="1"/>
<file id="FileToProcess" destination="" filePath="C:\Temp\SomeDrawing.CATDrawing" type="bin" upLoadable="RightNow" automatic="1"/>
</inputParameters>
<outputParameters>
<folder id="OutputFolder" destination="C:\Temp\" folderPath="C:\Temp\" type="bin" upLoadable="RightNow" extension="*" automatic="1"/>
<simple_arg id="OutputExtension1" value="CATPart/CATProduct"/>
<folder id="OutputFolder" destination="C:\Temp\" folderPath="C:\Temp\" type="bin" upLoadable="RightNow" extension="*" automatic="1"/>
<simple_arg id="OutputExtension2" value="stp"/>
<folder id="OutputFolder" destination="C:\Temp\" folderPath="C:\Temp\" type="bin" upLoadable="RightNow" extension="*" automatic="1"/>
<simple_arg id="OutputExtension3" value="dwg"/>
</outputParameters>
<PCList>
<PC name="MD2.slt" />
<PC name="ST1.prd" />
</PCList>
</root>

[Diese Nachricht wurde von Lionel Hutz am 22. Dez. 2024 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz