| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Drawing-Name eines ausgewählten Parts ermitteln (1357 mal gelesen)
|
MasterB Mitglied
Beiträge: 4 Registriert: 22.09.2011
|
erstellt am: 22. Sep. 2011 11:57 <-- editieren / zitieren --> Unities abgeben:
Hallo alle zusammen, ich versuche derzeit ein Addin für Inventor zu schreiben (C#). Ich möchte über eine ausgewählte Linie in einem DrawingDocument auf den Exemplarnamen des entsprechenden Parts (ist in einem Assembly verbaut - dieses ist in der Ansicht abgebildet) zugreifen. In VBA funktioniert das auch einwandfrei mit folgendem Code Code: sOccurrenceName = oDrawDoc.SelectSet.Item(1).Parent.ModelGeometry.ContainingOccurrence.Name;
Leider komme ich in C# nicht mehr über das SelectSet and die ModelGeometry und die Occurrence ran. Hat einer von euch schon einmal eine ähnliche Anforderung gehabt, bzw. benötigt einen ähnlichen Workaround? Es geht mir grundsätzlich darum, dass ich im Assebly Dokument beim Exemplarname Infos eintragen kann und diese dann in der Zeichnung über einen Führungslinientext anzeigen kann (funktioniert auch schon bis auf die Abfrage des Exemplarnamens) Viele Grüße Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 22. Sep. 2011 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für MasterB
Hallo Ich vermute mal es liegt daran, daß oDrawDoc.SelectSet.Item(1) vom Typ Variant oder Object ist. Unter VBA wird das Handling der Typen deutlich laxer gehandhabt. Versuche mal in mehreren Schritten dahin zu kommen. Caste oDrawDoc.SelectSet.Item(1) als DrawingCurveSegment und versuch mal von dort aus an den Namen zu kommen. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MasterB Mitglied
Beiträge: 4 Registriert: 22.09.2011
|
erstellt am: 22. Sep. 2011 18:19 <-- editieren / zitieren --> Unities abgeben:
Hallo rkauskh, danke für den Hinweis! Hab mich bereits auch nach diesem Schema bis zur DrawingCurve hochgearbeitet, nur endet hier der Weg, da die ModelGeometry dann von Typ Object sein dürfte und es nicht mehr bis zur Occurrence weiter geht da keine entsprechende Eigenschaft oder Methode mehr angeboten wird Poste hier folgend mal den entprechenden Code, denn vieleicht hab ich ja auch etwas übersehen das euch gleich auffällt Code: oDrawDoc = (DrawingDocument)InventorApplication.ActiveEditDocument; oActiveSheet = oDrawDoc.ActiveSheet; oDrawingCurveSegment = (DrawingCurveSegment)oDrawDoc.SelectSet[1]; oDrawingCurve = oDrawingCurveSegment.Parent;//Ab hier komme ich nicht mehr weiter da es beim Typ Object nur mehr div. Standardmethoden gibt oDrawingCurve.ModelGeometry.....
SG Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 22. Sep. 2011 19:36 <-- editieren / zitieren --> Unities abgeben: Nur für MasterB
Hallo oDrawingCurve.ModelGeometry dürfte meistens vom Typ Edge oder EdgeProxy sein. Das es hier mehrere Möglichkeiten des Typs gibt, besteht die Möglichkeit von Ausnahmefehlern. Deswegen muß der Typ explizit passen. Hier hilft nur der Reihe nach die möglichen Typen testen und wenn keiner paßt einen Programmexit vorsehen. Unter VB gibt's dafür die TryCast-Anweisung. Für C# (kenn mich damit leider gar nicht aus) gibt's sicher etwas entsprechendes. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MasterB Mitglied
Beiträge: 4 Registriert: 22.09.2011
|
erstellt am: 23. Sep. 2011 17:32 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, danke für den Hinweis, so funktionerts bis zum SurfaceBody (hab mal diesen Typ verwendet) - hier bekomm ich aber nur den Namen des Volumenkörpers im Part. Gibt es deines Wissens irgendwo eine Doku welche Typen möglich sind, oder kann man diese aus dem Object Model ablesen? SG Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Sep. 2011 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für MasterB
|
MasterB Mitglied
Beiträge: 4 Registriert: 22.09.2011
|
erstellt am: 24. Sep. 2011 15:17 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, hab bis jetzt die Edge verwendet und die stellt leider keine ContainingOccurrence zur Verfügung(daher das Problem). Aber die EdgeProxy - jetzt funkts Besten DANK!!! ------------------ SG Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |