| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: iPart in Baugruppe durch anderes iPart der gleichen iFactory tauschen (722 mal gelesen)
|
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 30. Jun. 2006 11:42 <-- editieren / zitieren --> Unities abgeben:         
Guten Mittag allerseits, nachdem ich mir bei meinem letzten Problem selbst helfen konn, hätte ich aber ein weiteres Problem. Und zwar möchte ich ein iPart-Member in einer Baugruppe durch ein anderes Member der gleichen iFactory tauschen. Im Prinzip dürfte das ja nichts anderes sein als der Tausch der Reihe, aus dem das Member erzeugt wurde. Kennt sich damit jemand aus? Habe auch schon im Autodesk Discussion Forum geschaut, aber so ganz bin ich da nicht auf einen grünen Zweig gekommen. Also wenn jemand einen Code-Fetzen oder einfach eine Idee hat bitte posten! Schonmal vielen Dank für eure Beiträge!!! Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 06. Jul. 2006 16:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo nochmal! Hat wirklich niemand eine Idee, wie sich das mit recht einfachen Mitteln bewerkstelligen ließe? Wenn doch, bitte unbedingt posten! Habe bisher selbst noch keine Lösung gefunden. Dabei scheint das Problem ja recht simpel, einfach an Stelle Reihe x, Reihe y verwenden. aber so scheints ja leider nicht zu gehen. Also ich bin für alle Anregungen dankbar!!! Schönen Feierabend noch! MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
 
 Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 10. Jul. 2006 08:05 <-- editieren / zitieren --> Unities abgeben:          Nur für mranderson
Das musst du wohl von Hand machen. Mit PartComponentDefinition.IsiPartMember und PartComponentDefinition.iPartMember kommst du an das Member hin, damit dann and die Factory. Neues Member erzeugen und wie ein normales Teil mit Replace austauschen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 10. Jul. 2006 09:19 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen, danke schonmal für den Tipp. Klingt nicht schlecht. Werde es nachher mal probieren, ob ich damit auf einen grünen Zweig komme. Bin grad an einer anderen Sache dran. Einen schönen, heißen Tag noch! Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 10. Jul. 2006 15:18 <-- editieren / zitieren --> Unities abgeben:         
Also ... Nach längerer Recherche habe ich endlich so gut wie geschafft, ein iPart-Member durch ein anderes zu ersetzen. Die Sache ist eigentlich ganz einfach, funktioniert aber wohl nur mit custom iParts. Mit IsiPart bin ich irgendwie nicht so ganz weiter gekommen. Das Problem bei mir is jedoch, dass sich das zu ersetzende iPart auch noch in einer Unterbaugruppe befindet. So funktionierts: Code:
Set oAsm = oApp.ActiveDocument Set oOcc1 = oAsm.ComponentDefinition.Occurrences(2) oOcc1.Edit Set oOcc2 = oOcc.SubOccurrences(2) Call oOcc2.ChangeRowOfiPartMember(3) 'Beendet den Bearbeitungsmodus oApp.CommandManager.[_StartCommand] 43312
D.h. der eigentlich wichtige Befehl lautet wie gedacht "ChangeRowOfiPart". Jetzt muss ich nur noch vorher die iPart-Factory öffnen und das später einzusetzende iPart-Member erzeugen. Dabei ergibt sich jedoch ein weiteres Problem ... Wie kann ich denn die Parameter, mit denen das zu ersetzende iPart-Member erzeugt wurde, auslesen. Ich brauche diese, da teilweise die alten Parameter in das neue iPart-Member übernommen werden müssen. Wenn jemandem dazu was einfällt, wäre echt super!!! Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschack Mitglied
 
 Beiträge: 186 Registriert: 29.11.2002 P4 3GHz 1GB nvidia Geforce 6200+ IV 9 SP1/IV 10/IV 11 SP1
|
erstellt am: 10. Jul. 2006 15:40 <-- editieren / zitieren --> Unities abgeben:          Nur für mranderson
Hallo mranderson, ein iPart unterscheidet sich doch von einem anderen der gleichen Familie nur in den Parametern, die unterschiedliche Werte einnehmen. Also was hältst du davon nicht ein iPart durch ein anderes zu ersetzen, sondern nur die Parameter anzupassen? mfg - Hans ------------------ Weihnachten sind wir wieder zuhause(wie schon damals 1914). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 10. Jul. 2006 15:51 <-- editieren / zitieren --> Unities abgeben:         
Ja, wäre auch denkbar, allerdings müssten die Werte in der iPart-Tabelle neu hinzugefügt (also nicht geändert) werden. Da ein iPart-Member meines Wissens ein abgeleitetes Bauteil der iFactory ist, ist lediglich bekannt, dass es von einer iFactory stammt, aber geändert können die Parameter denke ich nicht werden. Wie würde denn deines Erachtens der Befehl aussehen, mit dem man die Paramter eines iPart-Members ändern kann? Bin schon die ganze Zeit dabei herauszufinden, wie ich die Parameter üpberhaupt auslese und habe bis jetzt nichts gefunden. Also wenn du mir da weiterhelfen könntest wäre auch nicht schlecht! Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 11. Jul. 2006 09:04 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen ihr Forumianer, leider habe ich immer noch keinen Weg gefunden, die Werte, aus denen das iPart-Member erzeugt wurde, auszulesen. Das Problem mit den Parametern ist, dass diese iPart-Werte nicht unter "Parameter" aufgeführt sind, da das Teil ja nur eine abgeleitete Komponente ist und somit nicht geändert werden können. Die Werte des iPart-Members müssten jedoch auslesbar sein, da sie manuell ja auch festgestellt werden können über "Zeile berechnen" bzw. "Komponente ändern". Mir würde aber auch schon helfen, wenn ich die Zeile weiß, aus der das Member erzeugt wurde. Also wenn sich irgendjemandem dazu was einfällt, bitte unbedingt posten!!! Einen schönen Tag noch. Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 11. Jul. 2006 11:18 <-- editieren / zitieren --> Unities abgeben:         
Hallo, so, dann kann ich mein eigenes Rätsel zum Glück wieder selbst lösen. Ist eigentlich mal wieder recht einfach ... wenn mans weiß. Aber so ganz 100%ig bin ich in der Logik der Inventor API trotz bisheriger zweimonatiger Arbeit noch nicht durchgestiegen. Der Befehehl lautet Code:
oiPart.Row(x).Value
, wobei oiPart als iPartMember definiert ist und das x nicht (wie ich zuerst gedacht habe) für die Reihe, sondern für die Spalte steht. Row ist die zum iPart-Member gehörige Reihe, weshalb man über Value zu den jeweiligen Werten kommt. Ist aber alles nur ausprobiert, weshalb ich nicht garantieren kann, ob das der übliche oder beste Weg ist, die Werte auszulesen. Auf jeden Fall bin ich froh, dieses Rätsel gelöst zu haben, da ich sonst nicht mit meinem Add-In weiter machen gekonnt hätte. Trotzdem einen großen Dank an alle, die mir Vorschläge gemacht haben. Grüße MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik

 Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 19. Jul. 2006 09:47 <-- editieren / zitieren --> Unities abgeben:         
Tja, ein wenig zu früh gefreut. Generell funktioniert das mit den Auslesen der Werte über die .Row-Eigenschaft, allerdings funktioniert das scheinbar nicht immer. Die Werte von einem iPart konnte ich damit auslesen (aber irgendwie auch nicht alle Spalten). Bei einem anderen iPart allerdings wird die zugehörige Reihe immer an erster Stelle angezeigt (aber mit den richtigen Daten), obwohl in der iPart-Tabelle die Reihe eine ganz andere ist. Beim .Row nimmt er allerdings die erste Reihe, sodass beim Auslesen der Daten die Werte der ersten Reihe der iPart-Tabelle benutzt werden, welche jedoch nichts mit dem Teil zu tun haben, von dem ich die Eigenschaften haben möchte. Schau ich manuell nach, aus welcher Reihe das Teil erzeugt wurde ist ebenfalls die Reihe eins markiert. Irgendwie sehr misteriös ... Hat jemand eine Idee woran das liegen könnte bzw. wie ich an die richtigen Werte komme? Wenn ja, bin ich für alle Anregungen dankbar. Ciao MrAnderson alias René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |