| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Zugriff auf ein PropertySet in C# mittels PropertySets.Item ? (2642 mal gelesen)
|
sebastianapa Mitglied Student
Beiträge: 20 Registriert: 13.11.2006 .NET 2.0, VS2005, IV11
|
erstellt am: 12. Dez. 2006 13:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte auf die Eigenschaften eines Dokumentes über die API mit C# zugreifen, um diese dort entweder auszulesen oder auch neue anzulegen. Momentan habe ich allerdings das Problem, dass ich nicht viel weiter als bis zur PropertySets Klasse komme. Mit einer foreach-Schleife kann ich zwar das PropertySets-Objekt durchlaufen durchlaufen und alle enthaltenen PropertySet-Objekte auslesen, auf ein bestimmtes PropertySet (mit der Property "Item" wie auch in der Online-Hilfe verwendet) kann ich allerdings nicht direkt zugreifen. Mein Problem ist konkret, dass das Property "Item" der Klasse PropertySets im Visual Studio bei mir nicht verfügbar ist. Was mach (bzw. denk) ich falsch? Auszug aus meinem Code: Code:
Inventor.PartDocument active_PartDocument; Inventor.PropertySets a_propsets; Inventor.PropertySet a_propset; Inventor.Property a_property;//... a_propsets = active_PartDocument.PropertySets; foreach (Inventor.PropertySet a_propset in a_propsets) { txtBox.AppendText(">> DisplayN: " + a_propset.DisplayName + " InternalN: " + a_propset.InternalName + System.Environment.NewLine); } //direkter Zugriff auf ein PropertySet bei mir nicht möglich: a_propset = a_propsets.Item("..");
Gruß Sebastian 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: 12. Dez. 2006 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für sebastianapa
Hallo, dann verzichte einfach auf das Item (allerdings mit eckigen und nicht mit runden Klammern). Dass es keinen Sinn macht eine ForEach zu machen, und dann über den Index (String) auf die PropSets zu zugreifen ist aber schon klar? Und in C# werden die Variablen innerhalb von ForEach definiert (so wie von dir gemacht), so kannst du dir die dritte Zeile ( Inventor.PropertySet a_propset; ) sparen. Und ohne Fehlerbehandlung (Try, Catch und Finaly) wirst du auch nicht sehr weit kommen. Und doch noch etwas... Solche Daten solltest du nicht in eine TextBox laden. Benutze lieber eine ListView in Details Mode. ------------------ Grüße Igor
FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sebastianapa Mitglied Student
Beiträge: 20 Registriert: 13.11.2006 .NET 2.0, VS2005, IV11
|
erstellt am: 13. Dez. 2006 09:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Igor, Danke für die Antwort: Zitat: Original erstellt von daywa1k3r: ...dann verzichte einfach auf das Item
Bedeutet das, dass ein Zugriff mit "Item" nicht möglich ist? Wie kann ich dann ein bestimmtes Property aus einem PropertySet auslesen bzw. verändern wenn ich nicht mit Item darauf zugreifen kann? Bei den VBA-Beispielen in der Hilfe wird der Zugriff immer mit Item realisiert. Zitat: Original erstellt von daywa1k3r: ...Und ohne Fehlerbehandlung (Try, Catch und Finaly) wirst du auch nicht sehr weit kommen. Und doch noch etwas... Solche Daten solltest du nicht in eine TextBox laden. Benutze lieber eine ListView in Details Mode.
Eine Fehlerbehandlung habe ich natürlich. Aus Gründen der Anschaulichkeit habe ich hier allerdings alle nicht unbedingt erforderlichen Codezeilen weggelassen.(->"Die Abstraktion ist das mächtigste Werkzeug des Ingenieurs" ) Die Anzeige in einer Textbox ist nur ein "Provisorium", war halt die schnellste Möglichkeit für mich was sichtbar zu machen und außerdem ist das ganze für mich bisher eh nur so eine Art "Hello World" (bzw. "Hello Inv-Api" ). Gruß Sebastian
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: 13. Dez. 2006 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für sebastianapa
|
sebastianapa Mitglied Student
Beiträge: 20 Registriert: 13.11.2006 .NET 2.0, VS2005, IV11
|
erstellt am: 14. Dez. 2006 10:07 <-- editieren / zitieren --> Unities abgeben:
|