| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bauteile ersetzen (2616 mal gelesen)
|
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006 MS Windows 7-64bit SP1 4GB RAM AIP 2010, SP3 PSP 2010
|
erstellt am: 01. Sep. 2006 11:00 <-- editieren / zitieren --> Unities abgeben:
Hi Forum, ich habe folgendes vor: Ich habe eine Baugruppe mit Einzelteilen. In der Entwicklungsfase müssen einige Bauteile ersetzt werden. Dieses mache ich mit der SaveAs Methode. Das funktioniert auch bis zu einem gewisen Punkt: Wenn die zu speichernde neue Datei schon in der Baugruppe verbaut ist (Dateiname vorhanden), bekomme ich eine Fehlermeldung. Wie kann ich es machen, dass bereits verbaute Teile (Dateiname vorhanden) in der Baugruppe ersetzt werden? In der mitgelieferten Hilfe konnte ich nichts darüber finden. Weiterhin müssen in der Baugruppe einzelne Teile herausgefiltert werden welche welche über gleiche Parameter verfügen. Das suchen ist ja kein Problem, aber diese Teile müssen durch VBA selektiert werden. Wie geht das? Ich hoffe es kann mir einer helfen (oder zwei ...) . Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 01. Sep. 2006 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für RoccoRalle
Hallo, ersetzen: Code:
Dim odoc2 as Document Set odoc2 = ThisApplication.ActiveDocument Dim oCompDef As ComponentDefinition Set oCompDef = odoc2.ComponentDefinition Dim oOccs As ComponentOccurrences Set oOccs = oCompDef.Occurrences Dim oOcc As ComponentOccurrence For Each oOcc In oOccs On Error Resume Next i = 1 Do While ostr(i) <> "" If Right(oOcc.Definition.Document.FullFileName, 3) = "iam" And oOcc.Name = ostr(i) Then oDer = oOcc.Definition.Document.FullFileName Call oIPT(oDer) Call oOcc.Replace(oname, True) End If i = i + 1 Loop Next
Du mußt halt noch irgendwie eine Zuordnung zwischen den zu ersetzenden Teilen machen, A.ipt ersetzt durch b.ipt. Teile selektieren: Code:
Function oEnabled() Dim ThePane As BrowserPaneSet odoc = ThisApplication.ActiveDocument Set ThePane = odoc.BrowserPanes("AmBrowserArrangement") Dim temp As String Dim oTopNode As BrowserNode Set oTopNode = ThePane.TopNode If oTopNode.Selected = True Then oflag = True Exit Function End If i = 1 Dim Node As BrowserNode 'need to loop thru nodes to match label For Each Node In oTopNode.BrowserNodes If Node.Selected = True Then ostr(i) = Node.BrowserNodeDefinition.Label temp = Node.BrowserNodeDefinition.Label i = i + 1 End If Next For Each Node In oTopNode.BrowserNodes If Node.Selected = False Then Node.DoSelect End If Next End Function
Hilft das? Oder das Ganze mit dem Designassistenten machen. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Ehrenmitglied V.I.P. h.c.
Beiträge: 11977 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 01. Sep. 2006 22:31 <-- editieren / zitieren --> Unities abgeben: Nur für RoccoRalle
RMB: Komponente ersetzen ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006
|
erstellt am: 04. Sep. 2006 10:36 <-- editieren / zitieren --> Unities abgeben:
Besten Dank, leider selektiert die Funktion "oEnabled" nicht automatisch die Bauteile, welche ich ersetzen will. Wie funkionier es, wenn ich Bauteile in einer Unterbaugruppe selektieren lassen möchte? Ich kann auch damit leben, wenn ALLE Bauteile selektiert werden.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 04. Sep. 2006 22:53 <-- editieren / zitieren --> Unities abgeben: Nur für RoccoRalle
Hallo RoccoRalle, erklär doch nochmal was du durch was ersetzen willst. Den Code mußt du natürlich noch an dein Vorhaben anpassen. Alle Dateien zu selektieren wird nichts bringen, oder willst du alle Dateien durch die gleiche ersetzen? die raplace-methode ersetzt das gewählte Modell durch das Modell mit dem Pfad oname. Der Zweite Parameter gibt an, ob alle Vorkommnisse in der aktiven Baugruppe erstzt werden sollen. Um Dateien in der Unterbaugruppe zu ersetzen mußt du in die Unterbaugruppe wechseln. Wie übergibst du dem Programm was ausgetauscht werden soll? Gruß Reinhard
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006
|
erstellt am: 05. Sep. 2006 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Reinhard, ich versuche es recht simpel zu formulieren: ich habe ein VBA-Tool geschrieben um Normteilen aus dem Inhaltscentern Material zuweisen zu können, damit die Normteildatenbanken nicht geändert bzw. erweitert werden müssen und somit die volle Funktionalität von IV 11 (Konstruktionsassistenten) genutzt werden können. Die Normteile werden dann in der Baugruppe unter einem anderen Namen gesichert (Materialabhängig). Ist das Normteil mit dem entsprechenden Material bereits vorhanden und in der Baugruppe verbaut, muß ich dieses Normteil in der Baugruppe ersetzen (replace) da beim VBA-Befehl "saveas" ein fehler auftritt. Ich hoffe die Beschreibung ist verständlich. Und jetzt suche ich ein verfahren, dass die bereits vorhandenen Bauteile selbstständig über VBA ausgetauscht werden. Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 06. Sep. 2006 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für RoccoRalle
Hallo Rocco, ich verstehe dein Problem nicht wirklich. Du hast eine Baugruppe: BG.iam. Darin ist ein Teil verbaut: Teil.ipt, entspricht Schraube M6x20 DIN 912 A2. Diese Teil hat einen Pfad: D:\xxx\Teil.ipt. Jetzt möchtest du aus Schraube M6x20 DIN 912 A2 Schraube M6x20 DIN 912 A4 machen und unter D:\xxx\Teil.ipt abspeichern? Erklär dein Problem mal mit einem Beispiel. Struktur der BG und Pfad der Dateien? Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006
|
erstellt am: 06. Sep. 2006 14:06 <-- editieren / zitieren --> Unities abgeben:
Hi, Also: Ich habe eine Baugruppe BG.iam. In dieser Baugruppe befinden sich die Schrauben M8x30-A2.ipt, M8x30-A4.ipt und M8x30.ipt. Jetzt möchte ich dass die Schraube M8x30.ipt durch M8x30-A4.ipt über ein VBA-Tool automatisch ersetzt wird. Eigendlich eine simple Aufgabe aber ich habe dafür leider noch keine Lösung gefunden. Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 06. Sep. 2006 22:52 <-- editieren / zitieren --> Unities abgeben: Nur für RoccoRalle
Hallo RoccoRalle, du schreibst die Lösung ja schon selber, etwas VB dazu uns schon geht es. Hier ein paar Tips: Code:
For Each oOcc In oOccs If Right(oOcc.Definition.Document.FullFileName, 3) = "M8x30 A2.ipt" Then Call oOcc.Replace("M8x30 A4.ipt", True) Exit For End If Loop Next End Function
Wenn du noch rekursiv durch deine BG durchgehst, kannst du alle Schrauben ersetzen. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006
|
erstellt am: 07. Sep. 2006 09:31 <-- editieren / zitieren --> Unities abgeben:
|