Hallo Programmiergemeinde!
Ich hoffe jemand kann mir einen Tipp geben, vielleicht bin ich auch auf dem Holzweg.
Vorgehensweise:
User wählt im Produkt ein Part aus, darauf hin wird die Achsenposition dieses Part ermittelt und auf Null gesetzt (funzt)
Danach muss das "Benutzerachsensystem" im Part ermittelt (GetAxisSystem) und ein neuer Wert(SetAxisSystem) zugewiesen werden (funzt nicht)
die Vektorenverschiebung ermitteln (steht noch aus).
bisheriger Script:
' COPYRIGHT H. Akkaya 2020
Sub CATMain()
Dim oDocument As Document
Set oDocument = CATIA.ActiveDocument
Dim amatrix(11)
ReDim arType(0)
arType(0) = "Product"
Set oselection = CATIA.ActiveDocument.Selection
oselection.Clear
sta = oselection.SelectElement2(arType, "Select the Product to retrieve the Matrix", False)
If sta <> "Normal" Then Exit Sub
Set osource = oselection.Item(1).Value
osource.Position.GetComponents amatrix
strans = "Translations:" & Chr(10) & amatrix(9) & Chr(10) & amatrix(10) & Chr(10) & amatrix(11) & Chr(10) & Chr(10)
srotx = "X Rotations:" & Chr(10) & amatrix(0) & Chr(10) & amatrix(1) & Chr(10) & amatrix(2) & Chr(10) & Chr(10)
sroty = "Y Rotations:" & Chr(10) & amatrix(3) & Chr(10) & amatrix(4) & Chr(10) & amatrix(5) & Chr(10) & Chr(10)
srotz = "Z Rotations:" & Chr(10) & amatrix(6) & Chr(10) & amatrix(7) & Chr(10) & amatrix(8) & Chr(10) & Chr(10)
MsgBox strans & srotx & sroty & srotz
Dim ursprung( 11 )
' x axis components
ursprung( 0 ) = 1.000
ursprung( 1 ) = 0
ursprung( 2 ) = 0
' y axis components
ursprung( 3 ) = 0
ursprung( 4 ) = 1
ursprung( 5 ) = 0
' z axis components
ursprung( 6 ) = 0
ursprung( 7 ) = 0
ursprung( 8 ) = 1
' origin point coordinates
ursprung( 9 ) = 0.000
ursprung( 10 ) = 0.000
ursprung( 11 ) = 0.000
osource.Position.SetComponents ursprung
strans = "Translations:" & Chr(10) & ursprung(9) & Chr(10) & ursprung(10) & Chr(10) & ursprung(11) & Chr(10) & Chr(10)
srotx = "X Rotations:" & Chr(10) & ursprung(0) & Chr(10) & ursprung(1) & Chr(10) & ursprung(2) & Chr(10) & Chr(10)
sroty = "Y Rotations:" & Chr(10) & ursprung(3) & Chr(10) & ursprung(4) & Chr(10) & ursprung(5) & Chr(10) & Chr(10)
srotz = "Z Rotations:" & Chr(10) & ursprung(6) & Chr(10) & ursprung(7) & Chr(10) & ursprung(8) & Chr(10) & Chr(10)
'MsgBox strans & srotx & sroty & srotz
Set sel = CATIA.ActiveDocument.Selection
Dim sFilter(0)
Dim bFilter(0)
Dim hybridShape1 As HybridShape
Dim hybridBody1 As HybridBody
Dim part1 As Part
sFilter(0) = "Part"
MsgBox "Bitte Part auswaehlen"
sel.SelectElement2 sFilter, "Part selektieren", false
Set part1 = sel.Item(1).Value
part1Name = part1.Name
lenpart1Name = Len(part1.Name)
Dim axisSystems1 As AxisSystems
Set axisSystems1 = part1.AxisSystems
Dim axisSystem1 As AxisSystem
'Set axisSystem1 = axisSystems1.Item("Axis System.1")
Set axisSystem1 = axisSystems1.Item("Bezugsachsensystem")
'ReDim sFilter(0)
'bFilter(0) = "AxisSystem"
'sSelection = oselection.SelectElement2(bFilter, "Bitte das Achsensystem anklicken,auf welches sich die Koordinaten beziehen sollen", True)
'If sSelection = "Normal" Then
' Set oAxisSystem = oselection.Item2(1).Value
' Set name = oAxisSystem.Name
' msgbox name
'End If
'Set part1 = CATIA.ActiveDocument.Part
Set ASys = part1.AxisSystems.Item("Bezugsachsensystem")
Set oRef = part1.CreateReferenceFromObject(ASys)
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)
Dim BAS(11)
'oAxisSystem.GetAxisSystem BAS
ASys.GetAxisSystem BAS
strans = "Translations:" & Chr(10) & BAS(9) & Chr(10) & BAS(10) & Chr(10) & BAS(11) & Chr(10) & Chr(10)
srotx = "X Rotations:" & Chr(10) & BAS(0) & Chr(10) & BAS(1) & Chr(10) & BAS(2) & Chr(10) & Chr(10)
sroty = "Y Rotations:" & Chr(10) & BAS(3) & Chr(10) & BAS(4) & Chr(10) & BAS(5) & Chr(10) & Chr(10)
srotz = "Z Rotations:" & Chr(10) & BAS(6) & Chr(10) & BAS(7) & Chr(10) & BAS(8) & Chr(10) & Chr(10)
MsgBox name & strans & srotx & sroty & srotz
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP