
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("xxx")
lassen sich 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
MsgBox CATIA.SystemConfiguration.ProductCount
// Anzahl installierter Produktpakete
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.

Lizenzen abfragen
Temporäre Lizenzen (Shareable
License)
Mit folgendem Code kann
abgefragt werden ob eine bestimmte Lizenz gerade
gezogen ist oder nicht.
| |
Sub
CATMain()
set oSetContr =
CATIA.SettingControllers
s = oSetContr.Item("CATSysDynLicenseSettingCtrl").GetLicense("KIN.prd")
msgbox s
End Sub
|
Im Codebeispiel wird
nach der Kinematic-Lizenz gefragt. Diese ist in der
Lizenzliste (Shareable License/Produkte für
gemeinsame Benutzung) mit "KIN" aufgeführt.

Der Bezeichnung wird
noch ein ".prd" (license product) und
der Funktion "GetLicense" übergeben. Die Antwort
darauf lautet entweder
- Requested (Lizenz
ist gerade gezogen)
- NotRequested (aktuell nicht gezogen)
- Undef (Lizenz ist nicht bekannt)
Hinweis: Wenn eine
Lizenz permanent gezogen wird, dann erscheint diese
nicht in der Liste der gemeinsam benutzbaren
Lizenzen (Shareable) und folglich ist der
Rückgabewert "Undef" für undefined.
Permanent gezogene
Lizenzen
Um abzufragen ob eine
Lizenz permanent gezogen wird muss der Code nur
leicht abgeändert werden: CATSysLicenseSettingCtrl
anstatt CATSysDynLicenseSettingCtrl.
| |
Sub
CATMain()
set oSetContr =
CATIA.SettingControllers
s = oSetContr.Item("CATSysLicenseSettingCtrl").GetLicense("KIN.prd")
msgbox s
End Sub
|
Der Rückgabewert
einer gezogenen Lizenz ist unter R19 der Name der
Lizenz, im Beispiel also "KIN.prd". Eventuell
verhält sich das in höheren Releases anders? Der
Rückgabewert einer nicht gezogenen Lizenz ist jedoch
"NotRequested".
