Hallo allerseits,
ich kann Euch eine halbe Lösung anbieten... halb deswegen, weil sie nur mit Windows läuft. dazu muß ich noch anmerken, daß das ganze kein CATIA-Makro ist - ich mach das ganze mit einem stinknormalen VBScript (*.vbs), in dem ich auf CATIA.Application zugreife (mit vba sicherlich auch in dieser weise machbar). außerdem brauch man dazu noch ein WShell-Objekt. und das ist auch der grund, warum das ganze auf Windoof beschränkt ist...
so gehts los:
dim WShell, CATIA
set WShell = CreateObject("WScript.Shell")
if WShell.AppActivate("CATIA V5") then
'prüfen, ob CATIA-Fenster existiert
set CATIA = GetObject("", "CATIA.Application")
Main
end if
jetzt wirds bissl komplexer:
man selektiert das entsprechende Element, ruft die CATIA Funktion auf und klickt sich durch das popup. wichtig dabei ist, daß man (bzw. das *vbs-script) geduld hat. also warten, bis das popup da ist, und ihm auch n bisschen erholungszeit zwischen den einzelnen klicks gönnen. "iLong" und "iShort" für die Sleep-Prozesse hab ich momentan auf 100 bzw. 25 ms, und damit scheint es stabil zu funktionieren.
Kann auf ner anderen Maschine oder bei Hintergrundlast schon wieder ganz anders aussehen.
jetzt zum eigentlichen ChangeBody...man nehme:
-oItem: das zu verschiebende Element (bisher hab ich's nur mit HybridBodies und HybridShapes benutzt)
-oDestination: das Ziel (HybridBody)
(wie's mit Bodies und OrderedGeometricalSets aussieht, müßte man mal noch testen)
sName = oDestination.Name
oDestination.Name = "*"
oSelection.Clear
oSelection.Add oItem
do
CATIA.StartCommand "Change Geometrical Set"
WScript.Sleep iLong
loop until WShell.AppActivate("Change Geometrical Set")
WShell.AppActivate "Change Geometrical Set"
'Cursor ins Popup (auf dem "Cancel")
WShell.SendKeys "{TAB}"
'Cursor ins "Destination" Auswahlfeld
WScript.Sleep iShort
WShell.AppActivate "Change Geometrical Set"
'nur zur Sicherheit, falls der böse Anwender sonst noch irgendwas
'anderes macht
WShell.Sendkeys "*"
'selektiert das (umbenannte!) Ziel
WScript.Sleep iShort
WShell.AppActivate "Change Geometrical Set"
WShell.Sendkeys "{ENTER}"
'OK und weg damit
oDestination.Name = sName
oPart.Update
alle Klarheiten beseitigt? prima )
mfg alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP