Hallo erst mal.
Ich habe einen Spline in Inventor, welchen ich mittels VBA auslesen will. Für den Export soll neben den Splinepunkten, dem begleitenden Dreibein und der Krümmung (was soweit alles auch funktioniert) die Torsion ermittelt werden.
Leider kommt bei dem Aufruf curveEval.GetThirdDerivatives(adParam,thirdDerivs) die Fehlermeldung:
Zitat:
Run-time error '-2147467259 (80004005)":Method 'GetThirdDerivatives of object 'CurveEvaluator' failed
Was ich nicht ganz verstehe, die ersten beiden Ableitungen des Splines bekomme ich ohne Probleme und auf die gleiche Art und weiße...
Dass die Torsion für den Punkt existiert habe ich ebenfalls schon überprüft. Nach meinem Differentialgeometrie -Skript aus dem Studium ist die Torsion nur für Wendepunkte d.h. Krümmung = 0 nicht definiert. Da die Krümmung jedoch ungleich Null ist, sollte auch die Torsion existieren.
Wo steckt mein (Denk-)Fehler?
Wäre lieb wenn mir jemand helfen könnte
Mit freundlichen Grüßen und schonmals Danke für die Hilfe
GDMaster
Hier noch den Code, den ich bisher habe:
Code:
'Inventor
Dim oDoc As PartDocument: Set oDoc = ThisApplication.ActiveDocument
Dim ss As SelectSet: Set ss = oDoc.SelectSet
Dim skspline As SketchSpline3D: Set skspline = ss.Item(1)
Dim otransgeom As TransientGeometry: Set otransgeom = ThisApplication.TransientGeometry
Dim curveEval As CurveEvaluator: Set curveEval = skspline.Geometry.Evaluator
'Excel
Dim objExcel As Excel.Application: Set objExcel = GetObject(, "Excel.Application")
Dim objWorkbook As Workbook: Set objWorkbook = objExcel.ActiveWorkbook
'Rest
Dim i As Integer
For i = 1 To skspline.FitPointCount
Dim punkte() As Double: Call skspline.FitPoint(i).Geometry.GetPointData(punkte)
Dim adGuessparams() As Double
Dim adMaxDeviations() As Double
Dim adParam(0) As Double
Dim aenSolTypes() As SolutionNatureEnum
Call curveEval.GetParamAtPoint(punkte, adGuessparams, adMaxDeviations, adParam, aenSolTypes)
Dim thirdDerivs() As Double: Call curveEval.GetThirdDerivatives(adParam, thirdDerivs)
Dim cross() As Double: cross = crossproduct(firstDerivs, secondDerivs)
Dim divisor As Double: divisor = norm(cross) ^ 2
objWorkbook.Sheets(1).Cells(i + 2, 14).Value = scalarproduct(cross, thirdDerivs) / divisor
Next
[Diese Nachricht wurde von GDMaster am 02. Okt. 2013 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP