Hi,
ich hab folgendes Problem. Ich habe mehrere Flächen und brauch von jeder Fläche die Ausrichtung (x,y,z) der Trägheitsachsen. Ich hab den Code von diesem Beitrag "http://ww3.cad.de/foren/ubb/Forum137/HTML/002153.shtml#000004" schon probiert, aber der geht nur bei einer Fläche im Part/Produkt.
Mein Code sieht folgendermaßen aus:
VBA-Catia
Sub Catmain ()
MsgBox "Wählen Sie den zu untersuchenden Körper aus", vbInformation, makroname + " " + version
AppActivate "CATIA V5"
Set selection1 = activedoc.Selection
Dim InputObjectType(0)
InputObjectType(0) = "AnyObject"
Status = selection1.SelectElement2(InputObjectType, "Wählen Sie den Körper aus", False)
If (Status = "Cancel") Then
MsgBox "Makro wurde abgebrochen", 16, makroname + " " + version
Exit Sub
Else
Set myselec1 = selection1.Item(1).Value
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set Inertia1 = TheSPAWorkbench.Inertias.Add(myselec1)
Dim Compos1(8)
Inertia1.GetPrincipalAxes Compos1
Set Part1 = activedoc.Part
'Schwerpunkt
Set reference1 = Part1.CreateReferenceFromObject(myselec1)
Set Measurable1 = TheSPAWorkbench.GetMeasurable(reference1)
Dim Coord1(2)
Measurable1.GetCOG Coord1
Set hybridShapeFactory1 = Part1.HybridShapeFactory
Set hybridBodies1 = Part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add
hybridBody1.Name = "Test " + myselec1.Name
'CATIA.StartCommand "Measure Inertia"
'CATIA.StartCommand "Creation of geometry"
Dim directions1(2)
Set directions1(0) = hybridShapeFactory1.AddNewDirectionByCoord(Compos1(0), Compos1(3), Compos1(6))
Set directions1(1) = hybridShapeFactory1.AddNewDirectionByCoord(Compos1(1), Compos1(4), Compos1(7))
Set directions1(2) = hybridShapeFactory1.AddNewDirectionByCoord(Compos1(2), Compos1(5), Compos1(8))
Set axisSystem1 = Part1.AxisSystems.Add()
axisSystem1.PutOrigin Gcoord
For A = 0 To 8
MsgBox Components1(A)
Next A
Dim vectorXCoord(2)
vectorXCoord(0) = Compos1(0)
vectorXCoord(1) = Compos1(3)
vectorXCoord(2) = Compos1(6)
Dim vectorYCoord(2)
vectorYCoord(0) = Components1(1)
vectorYCoord(1) = Components1(4)
vectorYCoord(2) = Components1(7)
axisSystem1.PutVectors vectorXCoord, vectorYCoord
End If
End Sub
Das Problem liegt darin, dass ich für die Ausrichtung der Trägheitsachsen der Fläche viel zu kleine Werte (0,2 e-298,...) bzw 0 heraus bekomme. Dadurch auch kein Achsensystem ordenltich ersellt werden kann. Es wird zwar eins erstellt, aber das ist dann nicht rechtwinklig. Und bei der Anzeige der Werte bleibt die Messagebox leer. Wenn ich das aber mit einem Körper mache, funktioniert das alles.
Wenn ich ein Achsensystem über "Trägheit messen" --> "Geometrieerzuegung" --> "Achsensystem erstellen" für eine Fläche mache, gibt er mir ein passendes Achsensystem aus, mit sinnvollen Werten (x,y,z) für die Achsenausrichtung.
Habt ihr eine Idee, woran das liegen könnte? Was brauch ich um die Trägheit der einzelnen Flächen richtig ausmessen zu können?
Danke euch.
Gruß Machhiwi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP