| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bauteilreferenz in einer Baugruppe (1181 mal gelesen)
|
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 15. Apr. 2016 10:22 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander, ich möchte in einer Baugruppe automatisch die Refenzen der Einzelteile ersetzen. Ich habe eine parametrische Bg mit mehreren parametrischen Einzelteilen. Die Baugruppe und alle Bauteile werden kopiert und in einem anderen Ordner abgelegt. Die Einzelteile in der Bg haben allerdings noch den Pfad zum alten Ordner. Wie kann ich diesen per vb .net ändern? ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 533 Registriert: 07.01.2005
|
erstellt am: 15. Apr. 2016 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Hallo Felix, das geht mit ComponentOccurence.Replace (siehe API-Hilfe) ComponentOccurrence.Replace Method Parent Object: ComponentOccurrence Description Method that replaces the occurrence or all instances of an occurrence with another file. Syntax:
Code: ComponentOccurrence.Replace( FileName As String, ReplaceAll As Boolean )
------------------ Gruß Roland [Diese Nachricht wurde von RolandD am 15. Apr. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 18. Apr. 2016 08:56 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Hi Felix, das geht auch noch über den ReferencedFileDescriptor. Code:
Dim oDoc As Inventor.AssemblyDocument oDoc = m_inventorApplication.Documents.Open(FilePath, False) Dim oRefFileDesc As ReferencedFileDescriptor For Each oRefFileDesc In oDoc.ReferencedFileDescriptors If oRefFileDesc.FullFileName = "URSPRUNGSPFAD" Then Call oRefFileDesc.PutLogicalFileNameUsingFull("PFAD ZUM KOPIERTEN TEIL") End If Next
Edit: Den Weg finde ich etwas einfacher, als alle Teile als ComponentOccurence zu referenzieren und dann zu ersetzen. ------------------ MFG
Chris [Diese Nachricht wurde von Chris 31 am 18. Apr. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 18. Apr. 2016 15:26 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die beiden Kommentare, leide hatte ich bis jetzt noch keine Zeit es zu probieren werde ich aber demnächst machen. Eine Frage hätte ich noch wenn wir grad bei Referenzen sind. kann man auch den Pfad zur Exceltabelle mit den Parametern ersetzen? ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 19. Apr. 2016 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
|
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 19. Apr. 2016 09:34 <-- editieren / zitieren --> Unities abgeben:
Also Chris danke dir die Variante klappt super. Jetzt ist bloß noch das Problem das ich die Baugruppe und alle Bauteile über eine Exceltabelle mit allen Parametern verknüpft habe. Der Pfad diesem Verknüpfung ist leider noch falsch nach dem kopieren, kann man den auch irgendwie ändern? ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 19. Apr. 2016 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Hey Felix, probiers mal mit: Code: Dim table As ParameterTable table = m_inventorApplication.ActiveDocument.componentdefinition.parameters.parametertables If table.FileName = "ALTER PFAD DER EXCEL-TABELLE .xlsx" Then table.FileName = "NEUER PFAD DER EXCEL-TABELLE .xlsx" End If
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 19. Apr. 2016 15:56 <-- editieren / zitieren --> Unities abgeben:
Ich habe über deine Variante mal versucht den Link anzeigen zu lassen Dim table As ParameterTable table = ThisApplication.ActiveDocument.componentdefinition.parameters.parametertables MsgBox(table.FileName) Dabei kommt aber eine Fehlermeldung wie aus dem Anhang ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Hallo Felix, das Beispiel aus der Hilfe: Code: Public Sub TableParameters() Dim oPartDoc As Inventor.PartDocument ' Obtain the active document, this assumes that ' a part document is active in Inventor Set oPartDoc = ThisApplication.ActiveDocument 'Obtain the Parameters collection Dim oParams As Parameters Set oParams = oPartDoc.ComponentDefinition.Parameters ' Add a parameter table using an existing spreadsheet. oParams.ParameterTables.AddExcelTable "C:\Temp\params.xls", "A1", True ' Accessing a parameters in a linked/embedded file Dim oParamTableFiles As ParameterTables Set oParamTableFiles = oParams.ParameterTables ' Traverse through the collection of linked files Dim oParamTableFile As ParameterTable For Each oParamTableFile In oParamTableFiles ' Change the linked file to another file If LCase(oParamTableFile.FileName) = "C:\temp\params.xls" Then oParamTableFile.FileName = "C:\Temp\newparams.xls" End If ' Get the Parameters collection from the file Dim oTableParams As TableParameters Set oTableParams = oParamTableFile.TableParameters ' Traverse through the table parameters collection and display them Dim iNumTableParams As Long Debug.Print "TABLE PARAMETER VALUES" For iNumTableParams = 1 To oTableParams.Count ' Display the name Debug.Print " Name: " & oTableParams.Item(iNumTableParams).Name ' Display the expression Debug.Print " Expression: " & oTableParams.Item(iNumTableParams).Expression ' Display the value. This will be in database units. Debug.Print " Value: " & oTableParams.Item(iNumTableParams).Value Next iNumTableParams Next End Sub
Vielleicht hilft dir das ja weiter... ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 Inventor 20xx, Visual Studio Express
|
erstellt am: 20. Apr. 2016 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Zitat: Original erstellt von Fiedel93felix: ...kann man auch den Pfad zur Exceltabelle mit den Parametern ersetzen? ...
Die Verwendung von verknüpften Exceltabellen bereitet an versch. Stellen Probleme und ist eine suboptimale Arbeitsweise. Besser und von vielen empfohlen wird folgende Vorgehensweise: Die Exceltabelle wird in ein Parameterbaueil.ipt eingebettet und alle abhängigen Teile leiten sich dann die entsprechenden Parameter nur aus der IPT ab. Einziger Unterschied: Der Bearbeiter der Tabelle muss über EXCEL und INVENTOR verfügen. Das sehen viele (mich eingeschlossen) mittlerweile sogar als Vorteil an.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Hi Felix, ich glaube ich habe den Grund für den Fehler gefunden. Es muss natürlich ein Item angegeben werden. Die Zuweisung von mir war nicht ganz vollständig. Besser wäre es ähnlich, wie im Beispiel: Code: Dim oParamTableFiles As ParameterTables Set oParamTableFiles = oParams.ParameterTables ' Traverse through the collection of linked files Dim oParamTableFile As ParameterTable For Each oParamTableFile In oParamTableFiles ' Change the linked file to another file If oParamTableFile.FileName = "URSPRUNGSPFAD" Then oParamTableFile.FileName = "NEUER PFAD" End If Next
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 08:37 <-- editieren / zitieren --> Unities abgeben:
Danke Chris jetzt funktioniert es Aber irgendwie komm ich mit der Hilfe nicht klar ich finde da nie Beispiele oder so...irgendwas mach ich da falsch. Herr Hübner vielen Dank für die Information aber mit dem einbetten und dann aus dem Bauteil die Parameter übernehmen hab ich irgendwie noch nicht so wirklich hinbekommen, von daher habe ich es immer über eine Verknüpfung gemacht. Der Vorteil den ich bei einer Verknüpfung noch sehe ist, dass die Tabelle mit den Parametern auch über ein Passwort geschützt werden kann. ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 10:38 <-- editieren / zitieren --> Unities abgeben:
|
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 11:07 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Zitat: Original erstellt von Fiedel93felix: Okay Chris der Fehler liegt vor dem Desktop zwischen de Ohren
Das Problem kenne ich Ich muss in der Hilfe auch immer ne Weile suchen, bis ich das finde, was ich eigentlich suche. Meist komme ich dann auch nur über Umwege dort hin ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 11:36 <-- editieren / zitieren --> Unities abgeben:
Wie gehst du überhaupt in der Hilfe vor? Denn man kann ja nur die Gliederungspunkte durchsuchen und da finde ich eig ni was passendes ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Also ich habe immer unten den Haken drin: Ähnliche Wörter suchen. Und die anderen beiden Haken habe ich raus. Dann findet er bei mir auch Einträge in den einzelnen Unterpunkten. ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 11:53 <-- editieren / zitieren --> Unities abgeben:
Hm komisch hab ich eig auch so naja ich probiers noch mal beim nächsten problem was ganz sicher kommt. Mir ist grad noch ein Problem aufgefallen. und zwar wenn ich den Pfad zu der Excel-Liste geändert habe und dann die Baugruppe aktualisere funktioniert alles. Aber wenn ich jetzt händisch in der Liste etwas ändere wird das nicht mehr übernommen. Weist du woran das liegen könnte?
------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Ich könnte mir vorstellen, dass die Verknüpfungen mit den Parametern verloren gegangen sind. Die musst du dann neu verknüpfen. Da sollte dir dann Beispiel aus der Hilfe helfen können. ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 14:23 <-- editieren / zitieren --> Unities abgeben:
Also in der Baugruppe funktioniert es mit Tabelle löschen und neu Verknüpfen. Wenn ich das gleiche dann in einem Bauteil machen will komm ich bis zum löschen der Verknüpfung aber dann wenn ich die Verknüpfung zu der neuen Tabelle einrichten will wird die Verknüpfung zur vorherigen tabelle erstellt. Aber ich weiß nicht warum. Wenn ich erst den Pfad ändere, dann die Verknüpfung löschen und neu Verknüpfe geht warum auch immer... so: If oParamTableFile.FileName.Contains("Austausch\Fiedler\Diplomarbeit\Inventor\Modelle") Then oParamTableFile.FileName = OrdnerPfadAblage & "Parameter.xlsx" oParamTableFile.Delete() oParams.ParameterTables.AddExcelTable(OrdnerPfadAblage & "Parameter.xlsx", "A1", True) End If ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Apr. 2016 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Fiedel93felix
Zitat: Original erstellt von Fiedel93felix: Also in der Baugruppe funktioniert es mit Tabelle löschen und neu Verknüpfen. Wenn ich das gleiche dann in einem Bauteil machen will komm ich bis zum löschen der Verknüpfung aber dann wenn ich die Verknüpfung zu der neuen Tabelle einrichten will wird die Verknüpfung zur vorherigen tabelle erstellt. Aber ich weiß nicht warum.Wenn ich erst den Pfad ändere, dann die Verknüpfung löschen und neu Verknüpfe geht warum auch immer... so: If oParamTableFile.FileName.Contains("Austausch\Fiedler\Diplomarbeit\Inventor\Modelle") Then oParamTableFile.FileName = OrdnerPfadAblage & "Parameter.xlsx" oParamTableFile.Delete() oParams.ParameterTables.AddExcelTable(OrdnerPfadAblage & "Parameter.xlsx", "A1", True) End If
Du löscht erst die Tabelle mit dem OrdnerPfadAblage und weist dann die gleiche Tabelle mit dem gleichen Pfad wieder zu? ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 20. Apr. 2016 14:38 <-- editieren / zitieren --> Unities abgeben:
ganz genau...ich versteh es auch nich, aber wenn ich einwas weglasse gehts ni komischer weise. Wenn ich nur den Pfad ändere oParamTableFile.FileName = OrdnerPfadAblage & "Parameter.xlsx" dann wird zwar der Pfad der Tabelle ersetzt aber bei Änderungen in der Tabelle passiert im Bauteil nichts. Wenn ich nur die Verknüpfung lösche und dann die Verknüpfung zur neuen Tabelle herstellen will: oParamTableFile.Delete() oParams.ParameterTables.AddExcelTable(OrdnerPfadAblage & "Parameter.xlsx", "A1", True) dann löscht er die Verknüpfung aber setzt die neue Verknüpfung nicht zum angegebenen Pfad sondern wieder mit dem alten Pfad. Keine Ahnung wieso ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
Beiträge: 448 Registriert: 19.02.2014 Autodesk Inventor 2014 Microsoft Visual Basic 2010
|
erstellt am: 21. Apr. 2016 09:52 <-- editieren / zitieren --> Unities abgeben:
Also ich habe jetzt auch mal die Variante von Herrn Hübner probiert. Auch bei dieser Variante wird der Pfad zu den Referenzen nicht beibehalten. Das heißt es müssen ebenfalls alle Bauteile geöffnet werden und der Pfad für die Parameter muss angepasst werden. ------------------ ---------------------------------- Mit freundlichen Grüßen Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |