Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Change Body per Macro

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
Autor Thema:  Change Body per Macro (3693 mal gelesen)
V5-Maxe
Mitglied
CAD-Konstrukteur, CATIA V5


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

Beiträge: 37
Registriert: 16.06.2005

Windows7 Prof x64
CATIA V5R19
Dell Precision T5500
12GB
NVIDIA Quadro FX 580 512MB

erstellt am: 20. Jun. 2005 14:37    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

Hallo  , ich brauch mal jemanden, der mir auf die Sprünge hilft:
Ein Element in einen anderen OpenBody zu schieben (Change Body) ist ja ganz einfach, wenn dies aber per Macro geschehen soll, wird es schon schwierig.
Ich habe es nur geschafft, ein neu erzeugtes Element einem bestimmten OpenBody zuzuweisen,

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim Selection As Selection
Set Selection = partDocument1.Selection

Dim reference1 As AnyObject
Set reference1 = Selection.Item(1).Value

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim NeuoBody As HybridBody
Set NeuoBody = hybridBodies1.Add
NeuoBody.Name = "ob_new"

Dim HybSF As Factory
Set HybSF = part1.HybridShapeFactory

Dim Pt1 As Point3D
Set Pt1 = HybSF.AddNewPointCoord (10000,5000,-500)
NeuoBody.AppendHybridShape Pt1
part1.UpdateObject NeuoBody

End Sub

wenn ich aber ein selektiertes Element in einen anderen OpenBody verschieben will, sehe ich alt aus:

NeuoBody.AppendHybridShape reference1

das funktioniert so nicht, kann jemand helfen?

Vielen Dank

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

Zwenne12
Mitglied
Werkzeugkonstrukteur


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

Beiträge: 26
Registriert: 23.08.2004

erstellt am: 21. Jun. 2005 09:32    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 Nur für V5-Maxe 10 Unities + Antwort hilfreich

Hallo V5-Maxe,

Du kannst ein vorhandenes, selektiertes Element einem OpenBody auch mit cut/paste zufügen:

Selection.cut
Selection.clear
Selection.Add (NeuoBody)
Selection.Paste

Gruß
Sven

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

V5-Maxe
Mitglied
CAD-Konstrukteur, CATIA V5


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

Beiträge: 37
Registriert: 16.06.2005

Windows7 Prof x64
CATIA V5R19
Dell Precision T5500
12GB
NVIDIA Quadro FX 580 512MB

erstellt am: 21. Jun. 2005 10:58    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


COPY_PASTE.jpg

 
Danke Zwenne12,
dein Code funktioniert bei mir prima bis auf (siehe Anhang); ich darf in meiner V5-Umgebung nur copy-paste-delete verwenden.
Leider wird so auch ein weiteres Element erzeugt (und dann ist es nicht mehr das Original), was ja auch einen neuen Namen hat (den man dann auch noch ändern könnte).
Aber Danke!
Ich suche eine Möglichkeit, die das Element selbst in einen anderen OpenBody verschiebt.

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

dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 07. Sep. 2005 15:26    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 Nur für V5-Maxe 10 Unities + Antwort hilfreich

Hallo

ich hänge gerade am selben Problem.
Und keine Lösung in Sicht!

Thomas

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

V5-Maxe
Mitglied
CAD-Konstrukteur, CATIA V5


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

Beiträge: 37
Registriert: 16.06.2005

Windows7 Prof x64
CATIA V5R19
Dell Precision T5500
12GB
NVIDIA Quadro FX 580 512MB

erstellt am: 16. Sep. 2005 15:21    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

Hallo dc_tke,
kann dir leider nicht helfen, da ich auch noch keine Lösung gefunden habe 
wenn du eine Lösung hast, lass mal was hören!
Danke und Schönes Wochenende

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

AlexE78
Mitglied
Ing.


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

Beiträge: 49
Registriert: 29.08.2005

erstellt am: 19. Sep. 2005 09:39    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 Nur für V5-Maxe 10 Unities + Antwort hilfreich

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

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