Autor
|
Thema: Verlinkung zwischen Parts aktivieren (2754 mal gelesen)
|
joneta Mitglied Ingenieur
Beiträge: 8 Registriert: 04.10.2011 Win XP CatiaV5R19x64 HD2-Lizenz VBA6.0V1053
|
erstellt am: 31. Okt. 2011 16:14 <-- editieren / zitieren --> Unities abgeben:
Hallo! ich habe ein Produkt mit 3 Parts: 1 Grundmodell von dem die Elemente (Linien, Flächen) in die 2 Arbeitsparts verlinkt sind. Die Konstruktion baut also auf den verlinkten Linien und Flächen aus Part 1 auf. Part 1 mit der Konstruktion wird zum Teil über das VBA-Macro erstellt. Wenn ich nun die weiteren Parts über das Macro öffne erkennt Catia die Verlinkungen nicht mehr richtig (rotes Fragezeichen im Strukturbaum). Da hilft auch kein PartDocument.Update, welches zwar ausgeführt wird aber die Links nicht aktualisiert.
Code: Dim par2 As PartDocument Set par2 = d1.Open(qpfad & "PROFIL_WORK.CATPart") Set par2 = CATIA.ActiveDocument Dim pd2 As Part Set pd2 = par2.Part pd2.Update
Wie kann die Verlinkung aktiviert werden, bzw. wie erkennt Catia die Zusammengehörigkeit der geöffneten Dateien an?joneta ------------------ Mit freundlichen Grüßen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Okt. 2011 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für joneta
|
joneta Mitglied Ingenieur
Beiträge: 8 Registriert: 04.10.2011 Win XP CatiaV5R19x64 HD2-Lizenz VBA6.0V1053
|
erstellt am: 02. Nov. 2011 11:07 <-- editieren / zitieren --> Unities abgeben:
Hallo! Die Verlinkung erfolgt von Part zu Part (CCP). In der Zwischenzeit habe ich schon mal folgende Variante probiert, und damit ein neues weiteres Problem:
Code: product1.ApplyWorkMode DESIGN_MODE 'Die Verlinkung ist aktiv! … UselLine.Copy ’funktioniert -> Linie in ZWA … Set par1 = CATIA.Documents.Item("Datei") ’open(Datei) funktioniert nicht mehr; aber Zuweisung über .Documents … ziel.Add hb '## container der selektion hinzufügen -> funktioniert auch! ziel.PasteSpecial "CATPrtResultWithOutLink" ’funktioniert nicht; Copy-Fehler: Selected element(s) not allowed for this operation.
Auch im aktuellen CATIA-Fenster ist der Befehl ausgegraut, da das Part nicht im Edit-Modus ist. Wie bekomme ich das Part in den Edit-Modus? ODER wie gelange ich innerhalb des Products zum Part?
Code: Dim par1 As PartDocument Set par1 = CATIA.Documents.Item("Datei") par1.Activate ... Dim ziel As Selection Set ziel = par1.Selection 'par1 ziel.Clear
zeigt keine Wirkung, die Datei wird nicht zum aktiven Dokument.joneta ------------------ Mit freundlichen Grüßen [Diese Nachricht wurde von joneta am 02. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 03. Nov. 2011 00:00 <-- editieren / zitieren --> Unities abgeben: Nur für joneta
Hallo joneta, um Dir hier wirklich helfen zu können, wäre der gesamte Code wichtig. Nur so lassen sich Fehler erkennen. Ansonsten ist das ein Raten mit der "Glaskugel". Also: Für die Probleme "Synchronisieren" und "Copy-Paste" ist mehr Code erforderlich. Für das Problem "...die Datei wird nicht zum aktiven Dokument." stelle ich mal die Gegenfrage: Woher weißt Du das? Die Aktivierung eines Parts in einer Product-Struktur per Makro kannst Du interaktiv nur in Sonderfällen erkennen. Prüfen kannst Du dies im Makro allerdings schon, z.B. mit "MsgBox CATIA.ActiveDocument.Name". mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joneta Mitglied Ingenieur
Beiträge: 8 Registriert: 04.10.2011 Win XP CatiaV5R19x64 HD2-Lizenz VBA6.0V1053
|
erstellt am: 03. Nov. 2011 08:24 <-- editieren / zitieren --> Unities abgeben:
Hallo! "...die Datei wird nicht zum aktiven Dokument." ist natürlich eine Vermutung: Laut Watchfenster ist und bleibt das Product das aktive Dokument für CATIA. Clicke ich mit der rechten Maustaste an die Stelle zum Einfügen ist der Paste-Befehl ausgegraut und bei Macro-Ausführung erfolgt eine Fehlermeldung "Copy-Error : Einfügen nicht möglich/nicht erlaubt" Übrigens kann ich die Linie manuell, aus der ZWA, nach doppelclick auf das Part, ordnungsgemäß einfügen. d.h. entweder muß ich über das Product einen Weg zum Part definieren oder ich muß für die einzelnen Parts die Synchronisierung einschalten. Mehr Code versuche ich mal anzuhängen... joneta
------------------ Mit freundlichen Grüßen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 04. Nov. 2011 02:09 <-- editieren / zitieren --> Unities abgeben: Nur für joneta
Hallo joneta, o.k., führen wir die Fehlersuche mal weiter: Dass das Dokument "aktiv" sein muss, um damit zu arbeiten, ist bei der Makro-Abarbeitung ein Trugschluss! Der Weg per Makro ist hier völlig anders als interaktiv. Sorry, aber da war meine Aussage nicht korrekt. (Da bin ich wohl etwas eingerostet!!!) Bei der Makroabarbeitung ist normalerweise der oberste Knoten des aktiven Fensters das aktive Dokument. Um mit einem Part oder Product irgendwo im Baum zu arbeiten, muss ich dieses nur ansprechen. D.h. ich muss die entsprechenden Operationen nur auf dem entsprechenden Dokument ausführen. Aber nun wieder zum konkreten Code: Dein Problem liegt aus meiner Sicht in der Deklaration der 2. Selektion. Es gibt pro "Fenster" nur eine Selektion. Daher sollte es wie folgt lauten: Code: Set ziel = prod1.Selection
Die doppelte Zuweisung von "Ziel" und das doppelte Bereinigen der Selektion solltest Du natürlich noch korrigieren. Auch bin ich mir nicht sicher, ob Deine Deklarationen stimmen. Ein "Dim hyb3, hyb2, hyb1, hyb As HybridBodies" bedeutet nach meinem Verständnis, dass hyb3, hyb2, hyb1 ohne Typ deklariert sind und nur hyb vom Typ PartBodies ist. mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |