Autor
|
Thema: Teilenummer in Hauptkörper eintragen (1566 mal gelesen)
|
Jonas-SX Mitglied
Beiträge: 9 Registriert: 20.01.2020 R19,R21,R26,R27,R28&R29
|
erstellt am: 20. Jan. 2020 17:10 <-- editieren / zitieren --> Unities abgeben:
Hi zusammen, mit folgendem Code funktioniert es schon gut das ich die Teilenummer in den Hauptkörper eintragen kann. Language = "VBSCRIPT" Sub CATMain() Set PRTDOC=CATIA.ActiveDocument Set PRT = PRTDOC.Part Set BODIES = PRT.Bodies Set PRTBODIE=PRT.MainBody PNA = PRT.Name 'Übernahme Dokumentenname in Hauptkörpername PRTBODIE.Name=PRT.Name ' PART In Work Object setzen Set BODY = BODIES.Item(PNA) PRT.InWorkObject = BODY End Sub Nun wäre der Königweg, das er innerhalb eines Produkts jedes Part automatisch durcharbeitet. Leider komme ich hier im Moment nicht weiter, vielleicht könntet Ihr mir weiter helfen? Vielen Dank! mfg 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: 20. Jan. 2020 17:41 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Hallo, zwei Möglichkeiten: 1. Du geht über die Document Collection, d.h. alle geladenen Dokumente der laufenden Sitzung werden bearbeitet. 2. Du gehst die Produktstruktur rekursiv durch. Für beide Vorgehensweisen findest du hier im Forum (Suche nutzen) Ansätze/Codeschnipsel. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas-SX Mitglied
Beiträge: 9 Registriert: 20.01.2020
|
erstellt am: 20. Jan. 2020 21:17 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Jan. 2020 21:29 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Servus Über die Document-Collection ist es einfacher, aber es werden auch parallel geöffnete CATParts (die nicht zum Product gehören) mit geändert/angepasst. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas-SX Mitglied
Beiträge: 9 Registriert: 20.01.2020
|
erstellt am: 23. Jan. 2020 10:45 <-- editieren / zitieren --> Unities abgeben:
Ich bin jetzt auf der Suche auch über folgenden Code gestoßen, welcher eigentlich mein Problem lösen sollte. Allerdings scheint es doch nicht zu funktionieren, hat jemand ne Idee warum? (Steigt bei Linie: 5 & Spalte 15 aus laut Fehlermeldung) Language="VBSCRIPT" Sub CATMain() Dim documents1 As Documents Set documents1 = CATIA.Documents Dim Document1, aktuPartDoc As Document Set Document1 = CATIA.ActiveDocument Dim PartSelektion As Selection Set PartSelektion = Document1.Selection PartSelektion.Search "CATProductSearch.Part,all" Dim PartMenge, I As Integer PartMenge = PartSelektion.Count MsgBox(" PartMenge = " & PartMenge ) Dim aktuPart As Part Dim DocDescription As String Dim bodies1 As Bodies Dim body1 As Body For I =1 To PartMenge Set aktuPart = PartSelektion.Item(I).value.ReferenceProduct.Parent.Part DocDescription = aktuPart.Name MsgBox("DocDescription = a" & DocDescription ) Set bodies1 = aktuPart.Bodies Set body1 = aktuPart.MainBody 'Set body1 = bodies1.Item("Hauptkörper") body1.name = DocDescription Next End Sub 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: 23. Jan. 2020 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 23. Jan. 2020 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Hallo, der Code scheint mir ein wenig umständlich. Hier mal aus dem Gedächtnis (ungetestet) Code:
Sub CATMain Dim oDoc as DocumentIf Catia.Documents.Count > 0 then For Each oDoc in CATIA.Documents If TypeName(oDoc) = "PartDocument" then ' hier kommt dann die Bearbeitung des Parts/PartBody End if Next End if End Sub
Gruß Randle ------------------ Wer für nichts steht, fällt für alles! [Diese Nachricht wurde von Randle am 23. Jan. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas-SX Mitglied
Beiträge: 9 Registriert: 20.01.2020
|
erstellt am: 23. Jan. 2020 10:57 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Jan. 2020 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
|
Jonas-SX Mitglied
Beiträge: 9 Registriert: 20.01.2020
|
erstellt am: 23. Jan. 2020 11:23 <-- editieren / zitieren --> Unities abgeben:
|
Andreas Müller 1977 Mitglied Konstrukteur
Beiträge: 43 Registriert: 28.08.2010
|
erstellt am: 07. Feb. 2020 19:44 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Hallo Habe auch mal das Makro vom Jonas ausprobiert. Bei einer kleinen Baugruppen ging es ganz gut. Bei einer größeren Baugruppen mit weiteren unterbaugruppen (über 100 Teile) Kam Fehlermeldung: Laufzeitausnahme und Zeile 20 als Fehler. Kenn mich mit der Makrosprache zu wenig aus hat da jemand einen Lösungsvorschlag? Würde mich freuen wenn jemand helfen kann
------------------ Mit freundlichem Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller 1977 Mitglied Konstrukteur
Beiträge: 43 Registriert: 28.08.2010
|
erstellt am: 08. Feb. 2020 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Hallo zusammen Habe jetzt den Fehlergrund gefunden. Und zwar wenn ein lehres Product dabei ist kommt die Fehlermeldung Was muss man ändern sodass er bi einen lehren Product es einfach überspringt?
------------------ Mit freundlichem Gruß Andreas 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: 08. Feb. 2020 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas-SX
Servus Wie ein leeres Product? Du suchst doch alle Parts in einer Baugruppe. Kommt der Fehler schon beim ersten Durchlauf der Schleife? Dann ggf vor abfragen ob die Anzahl der selektierten Element größer 1 ist. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |