Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Geometriedaten auslesen

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
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Geometriedaten auslesen (194 / mal gelesen)
ThomasHenkel24
Mitglied


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

Beiträge: 4
Registriert: 31.10.2024

erstellt am: 04. Nov. 2024 12:03    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


207006_RohrDN100_L2800.zip

 
Hallo zusammen,

Ich versuche aus einem kPartDocumentObject die Geometriedaten eines Rohrs auszulesen. Die Länge habe ich gefunden:

Code:

Dim partDef As PartComponentDefinition
Set partDef = ThisApplication.ActiveDocument.ComponentDefinition

'get distance
Dim extrude As ExtrudeFeature
For Each extrude In partDef.Features.ExtrudeFeatures
    Dim extrudeDef As ExtrudeDefinition
    Set extrudeDef = extrude.Definition
   
    If extrudeDef.ExtentType = kDistanceExtent Then
        Dim distanceEx As DistanceExtent
        Set distanceEx = extrudeDef.Extent
        Debug.Print "Extrusion Name: " & extrude.Name
        Debug.Print "Distance: " & CStr(Format(distanceEx.distance.Value * 10, "0.000 ")) & CStr(distanceEx.distance.Units)
    End If
Next


Jetzt fehlen mir noch die Innen- und Außendurchmesser. Ein Beispieldatei und ein Bild mit den gesuchten Maßen habe ich angehängt. Kann jemand helfen und mir sagen, wie ich an diese Daten komme?

Thomas

[Diese Nachricht wurde von ThomasHenkel24 am 04. Nov. 2024 editiert.]

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

ThomasHenkel24
Mitglied


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

Beiträge: 4
Registriert: 31.10.2024

erstellt am: 04. Nov. 2024 15: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

Habe mittlerweile folgendes gefunden:
Code:

Debug.Print "Parameter"
Dim oParameter As Parameter
For Each oParameter In ThisApplication.ActiveDocument.ComponentDefinition.Parameters
    Debug.Print "- " & oParameter.Name & " = " & oParameter.Value * 10 & " " & oParameter.Units
Next


Das hilft mir erst mal weiter.

PS: Ich habe im obigen Post 3 Dateien angehängt (ein Bild, eine ipt und ein zip). Angezeigt wird mir im Forum aber nur die letzte. Seht ihr alle drei?

Thomas

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

ThomasHenkel24
Mitglied


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

Beiträge: 4
Registriert: 31.10.2024

erstellt am: 05. Nov. 2024 10:41    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

Die Bezeichnung der Variablen und ihre Reihenfolge hängt tatsächlich von der Art der Konstruktion ab. Nachfolgend zwei Beispiele für einfache Rohre:

Beispiel 1

Code:

• d0: = 114,3 mm  -> Außendurchmesser
• d1: = 2 mm      -> Wandstärke
• d2: = 1949 mm  -> Länge
• d3: = 0 grd

Beispiel 2

Code:

• d3: = 2 mm      -> Wandstärke
• d4: = 2800 mm  -> Länge
• d5: = 0 grd
• d6: = 349 mm    -> Innendurchmesser

Die Zuordnung habe ich hier manuell vorgenommen. Wie kann ich diese per Script auslesen? Inventor weiß ja, dass d6 z.B. der Innendurchmesser ist - wie komme ich an diese Information?

Thomas

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: 2638
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 05. Nov. 2024 11:12    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 ThomasHenkel24 10 Unities + Antwort hilfreich

Moin

Die Informationen stecken im Extrusionsprofil. Für einen klar definierten Fall, wie ein Rohr, kann man das recht einfach rausziehen.

Code:

Option Explicit

Private Sub Geometriedaten()

Dim oApp As Inventor.Application
Set oApp = ThisApplication

Dim oDoc As PartDocument
Set oDoc = oApp.ActiveDocument

Dim oExtrude As ExtrudeFeature
Set oExtrude = oDoc.ComponentDefinition.Features.ExtrudeFeatures(1)

Dim dLength As Double
Dim dOuterDiam As Double
Dim dInnerDiam As Double

dLength = oDoc.UnitsOfMeasure.ConvertUnits(oExtrude.Extent.Distance.Value, UnitsTypeEnum.kDatabaseLengthUnits, UnitsTypeEnum.kDefaultDisplayLengthUnits)

If oExtrude.Profile.Item(1).Item(1).Curve.Radius < oExtrude.Profile.Item(2).Item(1).Curve.Radius Then
    dInnerDiam = 2 * oDoc.UnitsOfMeasure.ConvertUnits(oExtrude.Profile.Item(1).Item(1).Curve.Radius, UnitsTypeEnum.kDatabaseLengthUnits, UnitsTypeEnum.kDefaultDisplayLengthUnits)
    dOuterDiam = 2 * oDoc.UnitsOfMeasure.ConvertUnits(oExtrude.Profile.Item(2).Item(1).Curve.Radius, UnitsTypeEnum.kDatabaseLengthUnits, UnitsTypeEnum.kDefaultDisplayLengthUnits)
Else
    dInnerDiam = 2 * oDoc.UnitsOfMeasure.ConvertUnits(oExtrude.Profile.Item(2).Item(1).Curve.Radius, UnitsTypeEnum.kDatabaseLengthUnits, UnitsTypeEnum.kDefaultDisplayLengthUnits)
    dOuterDiam = 2 * oDoc.UnitsOfMeasure.ConvertUnits(oExtrude.Profile.Item(1).Item(1).Curve.Radius, UnitsTypeEnum.kDatabaseLengthUnits, UnitsTypeEnum.kDefaultDisplayLengthUnits)
End If
   
MsgBox ("Länge: " & dLength & "mm" & vbCrLf & "Außen: " & dOuterDiam & "mm" & vbCrLf & "Innen: " & dInnerDiam & "mm")
End Sub


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

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

ThomasHenkel24
Mitglied


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

Beiträge: 4
Registriert: 31.10.2024

erstellt am: 06. Nov. 2024 10:04    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

Vielen Dank Ralf.

Nach dem gleichen Schema versuche ich jetzt mal die Daten anderer Geometrien aus den RevolverFeatures und den entsprechenden CurveTypen auszulesen. Wie du schon geschrieben hast, kann das aber bei nicht trivialen Formen sehr schnell aus dem Ruder laufen.

Thomas

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: 2638
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 06. Nov. 2024 14:53    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 ThomasHenkel24 10 Unities + Antwort hilfreich

Moin

Die Fragte ist wo du schlußendlich hin möchtest. Wenn du versuchst eine universelle Abmessungsermittlung zu erstellen, ist das Vorgehen vermutlich nicht zielführend. Es gibt einfach zu viele Varianten ein und dasselbe Endergebnis zu erreichen bzw. mehrdeutige Egebnisse.

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

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