iLogic - Zugriff auf Bauteil-Trägheitsmomente innerhalb einer Baugruppe

iLogic - Zugriff auf Bauteil-Trägheitsmomente innerhalb einer Baugruppe

Anonymous
Nicht anwendbar
1.306Aufrufe
4Antworten
Nachricht 1 von 5

iLogic - Zugriff auf Bauteil-Trägheitsmomente innerhalb einer Baugruppe

Anonymous
Nicht anwendbar

Hallo zusammen,

 

ich würde gerne eine Regel in iLogic innerhalb einer Baugruppe erstellen, die mir zu jedem Bauteil der Baugruppe das Gewicht und die Trägheitsmomente ausgibt. Anschließend würde ich die Werte gerne in eine Excel-Datei exportieren.

 

Der Export der Werte nach Excel und die Ausgabe der Massen funktioniert bereits. Allerdings schaffe ich es nicht, an die Trägheitsmomente der einzelnen Bauteile heranzukommen, lediglich an die der gesamten Baugruppe.

 

Das liegt wahrscheinlich an dem "ThisDoc. Document"-Ausdruck, der sich auf die Baugruppe bezieht.

 

Ich habe leider keine Erfahrung mit iLogic. Ich würde gerne wissen, wie ich den folgenden Code ändern muss, um an die einzelnen Trägheitsmomente der Bauteile zu kommen.

 

Bauteile: "Bauteil1" und "Bauteil2"
Baugruppe: "Baugruppe1"

 

Code in Regel:

____________________________________________________________________________

 

InventorVb. DocumentUpdate()

Dim massProps as MassProperties

Dim partDoc as PartDocument = TryCast(ThisDoc. Document, PartDocument)
If (partDoc IsNot Nothing) Then massProps = partDoc. ComponentDefinition. MassProperties
Dim assemDoc as AssemblyDocument = TryCast(ThisDoc. Document, AssemblyDocument)
If (assemDoc IsNot Nothing) Then massProps = assemDoc. ComponentDefinition. MassProperties

Dim TrMomente(5) As Double
massProps. XYZMomentsOfInertia(TrMomente(0), TrMomente(1), TrMomente(2), TrMomente(3), TrMomente(4), TrMomente(5))

For i = 0 To 5
TrMomente(i) = ThisDoc. Document. UnitsOfMeasure. ConvertUnits(TrMomente(i), "kg cm^2", "kg mm^2")
Next
Ixx = TrMomente(0)
Iyy = TrMomente(1)
Izz = TrMomente(2)
Ixy = TrMomente(3)
Iyz = TrMomente(4)
Ixz = TrMomente(5)

MasseBT1 = iProperties. Mass("Bauteil1. ipt")
MasseBT2 = iProperties. Mass("Bauteil2. ipt")

__________________________________________________________________________________

 

Vielen Dank im Voraus

 

Freundliche Grüße

Max Bleicher

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
1.307Aufrufe
4Antworten
Antworten (4)
Nachricht 2 von 5

Anonymous
Nicht anwendbar
Akzeptierte Lösung

Hallo zusammen,

 

Problem konnte mitHilfe folgender Posts gelöst werden:

 

Exporting Mass Moments to Excel
https://forums.autodesk.com/t5/inventor-forum/exporting-mass-moments-to-excel-using-ilogic/td-p/6904...

Run sub-assembly rule from assembly
https://forums.autodesk.com/t5/inventor-customization/ilogic-run-sub-assembly-rule-from-top-assembly...

0 „Gefällt mir“-Angaben
Nachricht 3 von 5

S_May
Mentor
Mentor

Hi @Anonymous,

 

super das Du Euer Problem mit den Post lösen konntest, wie sieht denn jetzt das Ergebnis in dem Excel File aus, wie habt Ihr das mit der ilogic gelöst?

 

MFG

Sascha May

0 „Gefällt mir“-Angaben
Nachricht 4 von 5

Anonymous
Nicht anwendbar

Hallo zusammen,

 

Die Idee war es eigentlich, aus der Baugruppe eine Regel zu erstellen, die zu jeden Bauteil Masse und Trägheit exportiert.

 

Imgesetzt worden ist es jetzt so, dass jedes Bauteil eine eigene Regel hat, die Masse und Trägheit exportiert.
Aus der Baugruppe werden dann alle Regeln der beinhalteten Bauteile mit dem Namen rulename aufgerufen.
Ergebnis ist dann das gleiche.

 

Code aus Bauteil:

________________________________________________________________________________________________

InventorVb.DocumentUpdate()

Masse = iProperties.Mass

Dim massProps as MassProperties
Dim partDoc as PartDocument = TryCast(ThisDoc.Document, PartDocument)
massProps = partDoc.ComponentDefinition.MassProperties
massProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz)
Iyy = ThisDoc.Document.UnitsOfMeasure.ConvertUnits(Iyy, "kg cm^2", "kg mm^2")

'Export nach Excel

oMyFile = "C:\Users\...\Massen und Trägheiten.xlsx"
GoExcel.CellValue(oMyFile, "Tabelle1", "D8") = Round(Masse,3)
GoExcel.CellValue(oMyFile, "Tabelle1", "F8") = Round(Iyy,3)
GoExcel.Save
GoExcel.Close

 

 

Code aud Baugruppe:

_______________________________________________________________________________________________________

Sub Main
auto = iLogicVb.Automation

' Set Rule name
Dim ruleName As String
ruleName = "Export"

' Get active assembly
Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument

' Get all of the referenced documents.
Dim oRefDocs As DocumentsEnumerator
oRefDocs = oAsmDoc.AllReferencedDocuments

' Iterate through the list of documents.
Dim oRefDoc As Document

For Each oRefDoc In oRefDocs
    Dim rule As Object
    rule = auto.GetRule(oRefDoc, ruleName)
    If (rule Is Nothing) Then
    'Call MsgBox("No rule named " & ruleName & " was found in the document.")
    Else
    'MessageBox.Show(rule.Name, oRefdoc.displayname)
    
    Dim i As Integer
    i = auto.RunRuleDirect(rule)
    
    End If

Next
End Sub

0 „Gefällt mir“-Angaben
Nachricht 5 von 5

S_May
Mentor
Mentor

Hallo @Anonymous,

 

danke für die Lösung, damit können bestimmt noch weitere User etwas anfangen in Zukunft.

 

MFG

S_May

0 „Gefällt mir“-Angaben