Autor
|
Thema: It's a match! xD zwischen zwei Parts-Liste finden und Publikationen kopieren (431 mal gelesen)
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 09. Jun. 2022 09:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Ich bin gerade bei ein klein Projekt, wo ich habe Excel-Part-Liste, wo in zwei Kolonnen ich SourcePart Name und TargetPart Name habe. Was ich für jedes selektiertes Part in 3D muss machen ist: -in Excel Datei für TargetName suchen (das wurde selektiertes Part.Name vom Selektion) -vom Excel Datei entsprechendes SourceName nahmen (TargetPart<->SourcePart Relation finden) -Vom SourcePart publizierte PartBody kopieren -zum TargetPart kopiertes Body mit Link einfugen Ich weiß wie kann ich die Excel-Liste ins Variant bringen. Ich weiß aber nicht wie kann ich den Match finden Und dann ich habe keine Ahnung, wie kann ich zu SourcePart Produkt zugreifen (für die Publications), wenn ich nur die SourcePart.Name haben... Danke im Voraus für deine Hife Lucas 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: 09. Jun. 2022 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Lukas Zum suchen in Excel: zB mit Find (ggf mal auch mal in einem Excel Tutorial bzw Forum suchen) Was ist bei dir SourcePart.Name? Die PartNumber, der Instance-Name, ....? Je nach dem was du hast: über die Selection, über eine Schleife über die Products- oder Documents-Collection, oder direkt mit dem Namen in der Products-Collection Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 09. Jun. 2022 10:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd Code:
Sub CATMain() Dim oHP As Product Dim oSel As Selection Set oHP = CATIA.ActiveDocument.Product Dim oSourceProd As Product Dim oTargetProd As Product Dim InputObjectType(0) As Variant InputObjectType(0) = "Product" Set oSel = CATIA.ActiveDocument.Selection Dim Source As Part Dim Target As PartDim oDSel Set oDSel = oSel oDSel.Clear Result = oDSel.SelectElement2(InputObjectType(), "Wybierz zrodlowy komponent", True) Set oSourceProd = oSel.Item(1).Value oDSel.Clear Result = oDSel.SelectElement2(InputObjectType(), "Wybierz docelowy komponent", True) Set oTargetProd = oSel.Item(1).Value For i = 1 To oSourceProd.Products.Count Set Source = oSourceProd.Products.Item(i).Products.Item(1).ReferenceProduct.Parent.Part Set Target = oTargetProd.Products.Item(i).Products.Item(1).ReferenceProduct.Parent.Part oSel.Clear oSel.Add Source oSel.Add Source.MainBody oSel.Copy oSel.Clear oSel.Add Target oSel.PasteSpecial "CATPrtResultWithLink" oSel.Clear Next End Sub
es sieht mir aus, das Kwelle un Ziel Produkt haben glaiche Parts Sortordnung, also ich kann einfach Schrit per Schrit gehen ;) Wo das Problem liegt is die Linie:
Code:
oSel.Copy
Ich kriege die Meldung "CSO is empty" Kannst do mir das helfen? Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 09. Jun. 2022 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Hallo, offenbar scheint deine Selection leer zu sein. Du solltest in deiner Schleife vielleicht mal überprüfen ob es sich wirklich jeweils um ein CATPart handelt (wenn es kein Part ist, gibt es auch keinen Mainbody -> Selection = leer). Alternativ (und etwas unsauber) könntest du überprüfen ob deine Selection nicht leer ist. z.b:
Code:
if oSel.Count > 0 then oSel.Copy oSel.Clear oSel.Add Target oSel.PasteSpecial "CATPrtResultWithLink" oSel.Clear End if
Gruß Randle ------------------ Wer für nichts steht, fällt für alles! 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: 09. Jun. 2022 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Zusätzlich zum Hinweis von Randle: warum selektierst du das Source-Part und den Körper? Sollte da der Körper nicht reichen? Gruß Bernd PS: Die Zeile mit Set Source = und Set Target = sieht auch sonderbar aus: warum zwei mal Products.Item, warum überhaupt auf die Products-Collection zugreifen? ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 09. Jun. 2022 10:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Wenn ich nur Korper aus Source nimme, Ich kriege die Meldung in Catia: "Error Copying Data: Selected element(s) not allowed for this operation". Und die Selektion is immer <> 0 (immer genau =1) Gruß 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: 09. Jun. 2022 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Schau dir nochmal die Zeilen Set Source und Set Target. Dass da zweimal Products.Item vorkommt irritiert mich (ich kenne aber auch deine Struktur nicht) IMHO gibt es "CATPrtResultWithLink" bei PasteSpecial nicht. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 09. Jun. 2022 11:26 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: ServusSchau dir nochmal die Zeilen [i]Set Source und Set Target. Dass da zweimal Products.Item vorkommt irritiert mich (ich kenne aber auch deine Struktur nicht) IMHO gibt es "CATPrtResultWithLink" bei PasteSpecial nicht. Gruß Bernd [/i]
SourceProdukt is ein Component mit mehreren Componenten mit nur ein Part darain: SourceProduct→ ZwischenProdukt1→ SourcePart1→ MainBody zu kopieren ZwischenProdukt2→ SourcePart2→ MainBody zu kopieren TargetProduct→ ZwischenProdukt1→ TargetPart1→ MainBody zu einfügen und symmetry nach ZX machen ZwischenProdukt2→ TargetPart2→ MainBody zu einfügen und symmetry nach ZX machen
[Diese Nachricht wurde von Sylas am 09. Jun. 2022 editiert.] 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: 09. Jun. 2022 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Bei mir läuft dein Code (ohne oSel.Add Source und PasteSpecial korrigiert) wenn ich solch eine Struktur nachbilde. Also muss bei dir was anders sein. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Zeichner (m/w/d) Maschinen- und Anlagenbau | Was unsere Kunden von ihren Technologielösungen erwarten? Das nächste Level! Das gelingt unserem Team bei FERCHAU Tag für Tag. Wir suchen dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden im Maschinen- und Anlagenbau und arbeiten mit an anspruchsvollen Lösungen für die Industrie.
Technischer ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 09. Jun. 2022 13:37 <-- editieren / zitieren --> Unities abgeben:
|