Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Public Interface AssemblyDocument erweitern?

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:  Public Interface AssemblyDocument erweitern? (87 mal gelesen)
mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 690
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 25. Nov. 2021 08:56    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 zusammen,

oftmals ist es ja so, dass die vorhandenen Funktionen eines Interfaces der Inventor API nicht ausreichend sind 

Gibt es eigentlich die Möglichkeit in .NET ein Interface, wie z. B. AssemblyDocument, selbst zu erweitern, ohne den Zwang sämtliche Funktionen vorhalten zu müssen?

Der Wunsch wäre ein eigens Interface, welches von AssemblyDocument alles erbt, aber beispielsweise eine eigene Funktion zusätzlich bereitstellt. 

Danke und Grüße
MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1912
Registriert: 15.11.2006

Windows 10 x64, AIP 2021

erstellt am: 25. Nov. 2021 16:02    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 mb-ing 10 Unities + Antwort hilfreich

Hallo

Hab's selbst noch nicht ausprobiert, aber Erweiterungsmethoden?

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 690
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 25. Nov. 2021 19:28    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

Zitat:
Original erstellt von rkauskh:
Hallo

Hab's selbst noch nicht ausprobiert, aber Erweiterungsmethoden?


Hi Ralf,

vielen herzlichen Dank für Deine klasse Antwort und Hilfe.

Habe es mal schnell ausprobiert:
ExtensionAssemblyDocument.vb

Code:
Imports System.Runtime.CompilerServices
''' <summary>
''' Erweiterung des Inventor.AssemblyDocuments-Interfaces
''' <remarks>
''' Beschreibung von Erweiterungen siehe <see cref="https://docs.microsoft.com/de-de/previous-versions/visualstudio/visual-studio-2008/bb384936(v=vs.90)?redirectedfrom=MSDN"/>
''' </remarks>
''' </summary>
Public Module ExtensionAssemblyDocument
    ''' <summary>
    ''' Öffentliche Funktion GetTotalSurface() gibt die Oberfläche der Baugruppe als <see cref="String"/> zurück
    ''' </summary>
    ''' <remarks>
    ''' Die Oberfläche der Baugruppe wird ermittelt und drei Stellen nach den Komma gerundet. Das Ergebnis wird in DM² als String zurückgegeben.
    ''' </remarks>
    ''' <param name="assemblyDocument">Der übergebene Parameter enthält die Baugruppe als <see cref="Inventor.AssemblyDocument"/>, deren Oberfläche ermittelt werden soll</param>
    ''' <returns>Gibt die Oberfläche der Baugruppe als <see cref="String"/> zurück</returns>
#Region "GetTotalSurface() » Ermittlung der Obberfläche der Baugruppe"
    <Extension()>
    Public Function GetTotalSurface(assemblyDocument As Inventor.AssemblyDocument) As String
        Dim dArea As Double
        dArea = assemblyDocument.ComponentDefinition.MassProperties.Area ' in cm^2
        dArea /= 100 ' in dm^2
        Return Math.Round(dArea, 3) 'Auf 3-Stellen hinter dem Komma runden
    End Function
#End Region

End Module


Utilities.vb

Code:
...
Dim model As Inventor.AssemblyDocument = inventorAPP.ActiveDocument
model.GetTotalSurface()
...

Klappt wunderbar bis jetzt und sogar IntelliSense funzt 

Siehst Du da irgendwie einen Haken oder sogar ein Anti-Pattern?

Danke und Grüße
MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1912
Registriert: 15.11.2006

Windows 10 x64, AIP 2021

erstellt am: 25. Nov. 2021 21: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 Nur für mb-ing 10 Unities + Antwort hilfreich

Hallo

Nö, seh ich nicht. Man fügt ja nur eine Methode hinzu.

Aber deine Funktion soll String zurückgeben und

Code:
Return Math.Round(dArea, 3)

ist aber ein Double. Die einschränkende Konvertierung sollte gehen, aber ich würde
Code:
Return Math.Round(dArea, 3).ToString

daraus machen.

Erst habe ich noch gedacht, da müssen unbedingt noch ein paar Punkte berücksichtigt werden. Unter anderem:
- Wie ist das, wenn die phys. Eigenschaften gerade nicht aktuell sind? Oder werden die automatisch bei der Abfrage aktualisiert?
- Man sollte unbedingt noch den UpToDate und DeferUpdates Status prüfen, sonst kann da ein völlig falscher Wert herauskommen.
- Was macht du bei mehreren Modelstates bzw. bei 2021 mehreren LoD?
Andererseits gehört das nicht unbedingt in die Methode, sondern ist Teil der jeweiligen Implementierung.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 690
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 26. Nov. 2021 07:07    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

Hi Ralf,

vielen Dank für Dein Input.

Die Funktion habe ich nur auf die Schnelle geschrieben, um zu sehen, ob es überhaupt geht. 
Diese werde ich sehr wahrscheinlich in eine andere Extension (z. B. Extension3dModell.vb) packen, die für IAM und IPT gelten wird. Das Ganze soll dann in Richtung Polymorphismus gehen...

Aber mit dem kleinem Beispiel konnte ich den Nachweis erbringen, dass es grundsätzlich geht.

Ein Nachteil der aktuellen Umsetzung ist, dass man auf die "Beständigkeit" des Interfaces Inventor.AssemblyDocument angewiesen ist.
Wobei die Volatilität da vermutlich eher gering ist, und wenn, dann wird dieses eher nur erweitert.

Nochmals vielen herzlichen Dank für Deine Hilfe!

Ich habe eine Stunde gesucht und nichts gefunden 
Suchbegriffe: ".NET Extend Interface", ".NET Inherit Interface", ".NET Extend Interface without modifying"
Aber man muss nur einen kompetenten Mann fragen und zack hat man die Antwort. 

Danke und Grüße
MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 690
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 26. Nov. 2021 08:44    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

Zitat:
Original erstellt von rkauskh:
Hallo

Nö, seh ich nicht. Man fügt ja nur eine Methode hinzu.

Aber deine Funktion soll String zurückgeben und

Code:
Return Math.Round(dArea, 3)

ist aber ein Double. Die einschränkende Konvertierung sollte gehen, aber ich würde
Code:
Return Math.Round(dArea, 3).ToString

daraus machen.

Erst habe ich noch gedacht, da müssen unbedingt noch ein paar Punkte berücksichtigt werden. Unter anderem:
- Wie ist das, wenn die phys. Eigenschaften gerade nicht aktuell sind? Oder werden die automatisch bei der Abfrage aktualisiert?
- Man sollte unbedingt noch den UpToDate und DeferUpdates Status prüfen, sonst kann da ein völlig falscher Wert herauskommen.
- Was macht du bei mehreren Modelstates bzw. bei 2021 mehreren LoD?
Andererseits gehört das nicht unbedingt in die Methode, sondern ist Teil der jeweiligen Implementierung.



Hi Ralf,

bezüglich der Aktualität des Models geht folgende Abfrage auch, oder?

Code:
... GetTotalSurface(model As Object) As String
If model.RequiresUpdate Then
  model.Update
End If
'Fläche ermitteln
Dim dArea As Double
...

Danke und Grüße
MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1912
Registriert: 15.11.2006

Windows 10 x64, AIP 2021

erstellt am: 26. Nov. 2021 10:29    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 mb-ing 10 Unities + Antwort hilfreich

Hallo

Also das Inventor.AssemblyDocument wegfällt bezweifle ich. Das ist in Stein gemeißelt. Darunter wird es immer mal wieder Ergänzungen und Änderungen geben, aber die stören ja nicht weiter. Außer Autodesk integriert eine identische Methode.

Ja, RequiresUpdate kannst du nehmen. Aber das ignoriert eine eventuell vorhandene aufgeschobene Aktualisierung der Baugruppe. Wenn DeferUpdates wahr ist, würde ich mit Meldung an den User abbrechen. Die Fläche des nicht aktuellen Modells ist mit hoher Wahrscheinlichkeit veraltet und falsch. Mit ist dann kein Wert lieber.

Ich meine mich zu erinnern, dass die ganzen MassProperties beim Zugriff über die API automatisch neu berechnet werden. Das ist vermutlich unabhängig vom Modellzustand. Es wird der aktuelle Zustand genommen. Das Berechnen setzt mW auch das Dirty-Flag im Document. Das läßt sich verhindern, indem man MassProperties.CacheResultsOnCompute auf false setzt. Ist für solche reinen API Abfragen vielleicht sinnvoll.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

mb-ing
Mitglied
F&E-Mangement, MB-Ing. (u)


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

Beiträge: 690
Registriert: 06.09.2012

Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)

erstellt am: 26. Nov. 2021 10:36    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

Hi Ralf,

mal wieder Danke für Deinen hervorragenden Input.

Woher weißt Du das alles? 
Unglaublich...

Danke und Grüße
MB-Ing.

------------------
Wissen ist Macht. Nichts wissen macht auch nichts 

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1912
Registriert: 15.11.2006

Windows 10 x64, AIP 2021

erstellt am: 26. Nov. 2021 15:54    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 mb-ing 10 Unities + Antwort hilfreich

Hallo

Keine Ahnung, es ist einfach alles im Kopf. Hat sich in den Jahren angesammelt. Das größere Problem ist meistens das Wiederfinden. 

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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)2021 CAD.de | Impressum | Datenschutz