Tech-Ecke / CATScript/VBS Inhalt / Tipps & Tricks

 

Tips & Tricks

Seiteninhalt:  
  Define in Work Object
  Meldungen zu Dateioperationen unterdrücken
  Workbench
  Einen Catia-Befehl absetzen
  Catia Umgebungsvariablen auslesen
  Catia Version, Release und ServicePack  ermitteln
  Umgebungssprache ermitteln


 

"Define in Work Object"

Folgender Code liefert das Objekt, welches aktuell auf "in Work" gesetzt ist.  

  Sub CATMain()

set InBearbeitung = CATIA.ActiveDocument.Part.InWorkObject
MsgBox InBearbeitung.Name


End Sub
 

Folgender Code setzt ein Objekt auf "in Work". Im Beispiel wird der PartBody "in Work" gesetzt.

  Sub CATMain()

set oPart = CATIA.ActiveDocument.Part
oPart.InWorkObject = oPart.MainBody

End Sub
 


 

Meldungen zu Dateioperationen unterdrücken

Zum Teil werden Meldungen zu Dateioperationen auch während des Ausführens eines Makros eingeblendet, was den Ablauf eines Makros mitunter erheblich behindern kann. Um diese Meldungen zu unterdrücken kann man sich folgender Codezeile bedienen.

  CATIA.DisplayFileAlerts = False
 


 

 
Die aktuelle Workbench kann über GetWorkbenchID ermittelt werden:
 
  Sub CATMain()

MsgBox catia.GetWorkbenchID

End Sub
 
Zu einer anderen Workbench wechselt man mit StartWorkbench "XYZ". Es empfiehlt sich vor dem Wechsel abzufragen ob man sich nicht schon in der entsprechenden Workbench befinden. Der passende Code hierzu könnte wie folgt aussehen:
 
  Sub CATMain()

If catia.GetWorkbenchId <> "PrtCfg" then       ' wenn Workbench nicht Part Design
    catia.StartWorkbench "PrtCfg"                   ' dann wechsel zu Part Design
end If

End Sub
 


 

Einen Catia-Befehl absetzen

Alle Befehle die sich über "View/Commands List..." aufrufen lassen, können mittels StartCommand "XYZ" direkt ausgeführt werden. Auch wenn hierfür nicht zwangsläufig eine vorangegangene Selektion erforderlich ist, so können bestimmte Catia-Befehle so auf eine Selektion losgelassen werden. Allerdings hat diese recht praktische Geschichte auch einen Nachteil: Mitunter fährt das Script weiter ohne auf das Ende des abgesetzten Befehls zu warten.

  Sub CATMain()

CATIA.StartCommand ("isolate")    ' hier z.B. alle selektierte Elemente auf einmal isolieren

End Sub
 


 

Catia Umgebungsvariablen auslesen

Mittels CATIA.SystemService.Environ("x") lassen sich alle Catia Umgebungsvariablen auslesen.

  Sub CATMain()

MsgBox CATIA.SystemService.Environ("CATInstallPath") ' Catia Installationsverzeichnis
MsgBox CATIA.SystemService.Environ("CATUserSettingPath") ' Installationspfad der User Settings

End Sub
 

Weitere:

CATCache
CATDLNAMEPATH
CATEnvironment
CATEnvName
CATERRORLOG
CATFeatureCatalogPath
CATFontPath
CATGraphicPath
CATKnowledgePath
CATReferenceSettingPath
CATReffilesPath
CATReport
CATSETPATH
CATStartupPath
CNEXTOUTPUT
CATTemp


 

Catia Version, Release und ServicePack  ermitteln

  Sub CATMain()

MsgBox CATIA.SystemConfiguration.Version
MsgBox CATIA.SystemConfiguration.Release
MsgBox CATIA.SystemConfiguration.ServicePack

End Sub
 


 

Umgebungssprache ermitteln

Leider gibt es keine (einfache) Möglichkeit die aktuell eingestellte Sprache augeben zu lassen. Wenn man jedoch mit "StartCommand" einen Catia-Befehl absetzen möchte muss man unbedingt wissen welche Sprache eingestellt ist. Da es für mich ausreicht zu wissen ob Deutsch oder Englisch verwendet wird, habe ich mir folgende kleine Routine aufgesetzt: 

 

Sub isEng()

' "call isEng" immer als erste Anweisung im Script aufrufen !!!
' "Eng" als public deklarieren und im Script nutzen. Pferdefuss:
' Wenn kein Dokument geöffnet, dann wird Eng angenommen :-/
Eng = false
if InStr(CATIA.StatusBar, "elect") > 0 then
   Eng = true
elseif CATIA.StatusBar = "" then
   Eng = true
end if

End Sub

 

Alles beruht darauf, dass im Falle einer Englischen Sprachumgebung in der Statusbar entweder "Select an object or command" oder "xyz selected" steht. In einer Deutschen Sprachumgebung würde man hier "Ein Objekt oder einen Befehl auswählen" oder "xyz ausgewählt" finden. Dies funktioniert allerdings nur wenn bereits ein Dokument geöffnet ist (was in den allermeisten Fällen zutrifft) und zum Zeitpunkt der Abfrage kein Anderer Befehl ausgeführt wird. Aus letzterem Grund muss die Abfrage unbedingt gleich zu Begin des Scripts ausgeführt werden! Da für mich eine Deutsche Umgebung die Ausnahme ist nehme ich Englisch an, wenn die Abfrage scheitert. 

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

[letzte Aktualisierung 15.02.2015]