| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bauteil in einer Baugruppe bearbeiten (1205 mal gelesen)
|
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 12:17 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe cad.de-Gemeinde, dies ist mein erster Beitrag hier. Ich fuchse mich gerade in die Programmierung mit VisualC# 2008 und der Inventor2009 API ein und ich bin auf folgendes Problem gestoßen. Vermutlich ist es relativ trivial, aber mir fehlt einfach die Erfahrung mit der API von Inventor und ich komme nicht weiter: Ich öffne mit meinem Programm eine Baugruppe und möchte gern Maße mehrerer Bauteile verändern. Wie man das macht, wenn man eine Bauteildatei einzeln lädt, weiß ich. Da ich das aber für mehrere Bauteile der Baugruppe machen möchte, wäre es schön, wenn ich sie innerhalb der geöffneten Baugruppe bearbeiten könnte. Ich benutze folgenden Code, um das gewünschte Bauteil zum Bearbeiten zu aktivieren: Code: // die Bauteile der Baugruppe Inventor.ComponentOccurrences myElements = myAssembly.ComponentDefinition.Occurrences; // Bauteil anhand seines Namens aktivieren myElements.get_ItemByName("Bodenplatte:1").Edit();
Meine Frage jetzt: Wie komme ich an die Parameter des aktiven Bauteils, damit ich sie bearbeiten kann? Komme ich vielleicht mit folgendem Ansatz weiter, um direkt auf die Parameter des BAuteils zuzugreifen? Code: Inventor.ComponentDefinition myComDef = myElements.get_ItemByName("Bodenplatte:1").Definition;
Vielen Dank schonmal, dispName [Diese Nachricht wurde von dispName am 11. Feb. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 11. Feb. 2010 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für dispName
|
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 12:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Igor, danke für die schnelle Antwort. Wäre schön, wenn die Angelegenheit so einfach wäre. Ich bekomme beim Debuggen folgende Meldung: "Inventor.ComponentDefinition" enthält keine Definition für "Parameters", und es konnte keine Erweiterungsmethode "Parameters" gefunden werden, die ein erstes Argument vom Typ "Inventor.ComponentDefinition" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) Leider weiß ich nicht, welcher Typ die Definition für Parameters enthält und wie ich das aus meinen myElements heraus bekomme, bzw. ob das überhaupt geht... Viele Grüße, Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 11. Feb. 2010 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für dispName
|
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 12:55 <-- editieren / zitieren --> Unities abgeben:
|
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 13:01 <-- editieren / zitieren --> Unities abgeben:
Sorry, hab schnell gegoogelt, wie casten funktioniert. Habs mal so probiert: Code: Inventor.PartComponentDefinition myComDef = (Inventor.ComponentDefinition)myElements.get_ItemByName("Bodenplatte:1").Definition;
Gibt leider auch nen Fehler: Der Typ "Inventor.ComponentDefinition" kann nicht implizit in "Inventor.PartComponentDefinition" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.) Grüße, Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 11. Feb. 2010 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für dispName
|
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 13:09 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 11. Feb. 2010 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für dispName
Zitat: Original erstellt von dispName: Woohoo, das hat's getan. Vielen Dank! Notiz an mich selbst: nochmal eingehender mit Casten beschäftigen.Viele Grüße, Robert
Wichtig zu beachten: wenn er nicht casten kann (man kann ja nicht alles beliebig casten) bekommst du so: (Inventor.PartComponentDefinition)myElements.get_ItemByName("Bodenplatte:1").Definition; eine Exception. Und so: myElements.get_ItemByName("Bodenplatte:1").Definition as Inventor.PartComponentDefinition; ein NULL zurück.
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dispName Mitglied Student
Beiträge: 6 Registriert: 11.02.2010
|
erstellt am: 11. Feb. 2010 13:31 <-- editieren / zitieren --> Unities abgeben:
|