Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Bauteil in einer Baugruppe bearbeiten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 12:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dispName 10 Unities + Antwort hilfreich

Hi und Willkommen,

Code:

myComDef.Parameters.ModelParameters["DeinParameter"].Value = "DeinWert";

so? Typen beachten natürlich...

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dispName
Mitglied
Student

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 12:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dispName 10 Unities + Antwort hilfreich

Hi, nimm Inventor.PartComponentDefinition (kann sein, dass du die ComponentDefinition in PartComponentDefinition casten musst)...

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dispName
Mitglied
Student

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 12:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hmm, leider bin ich bei C# auch noch ziemlich neu und deshalb ist mir "casten" leider noch kein Begriff. Wie funktioniert das?

Grüße,
Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dispName
Mitglied
Student

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 13:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dispName 10 Unities + Antwort hilfreich

Du willst in PartComponentDefinition casten, daher:

Code:

Inventor.PartComponentDefinition myComDef = (Inventor.PartComponentDefinition)myElements.get_ItemByName("Bodenplatte:1").Definition;

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dispName
Mitglied
Student

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Woohoo, das hat's getan. Vielen Dank! Notiz an mich selbst: nochmal eingehender mit Casten beschäftigen.

Viele Grüße,
Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dispName 10 Unities + Antwort hilfreich

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

Sehen Sie sich das Profil von dispName an!   Senden Sie eine Private Message an dispName  Schreiben Sie einen Gästebucheintrag für dispName

Beiträge: 6
Registriert: 11.02.2010

erstellt am: 11. Feb. 2010 13:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für den Tipp. Werd ich beachten.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz