Servus Allen!
Ich habe folgendes Problem, ich kann bei meinem Makro eine Draft-Direction auswählen entweder über eingabe einer Linei oder über ein BREP eine Achsenrichtung(X,Y oderZ).
Bei der Auswahl der Linie läuft meine Makro ohne Probleme durch, doch bei der Auswahl einer Achsenrichtung (also BREP) stürzt CATIA in der PAD-Unterfunktion ( bei Pad1.SetDirection Ref_Direction)ab.
Folgend ein paar Ausschnitte aus meinem Code:
Referenzerzeugung aus BREP
...
Dim Ref_YZ_Plane As Reference
Set Ref_YZ_Plane = part1.CreateReferenceFromBRepName("RSur Face Brp " & AxisSystemName & ";2);None );Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Dim Ref_XAxis As Reference
Set Ref_XAxis = part1.CreateReferenceFromBRepName("REdge Edge Face Brp " & AxisSystemName & ";1);None );Cf11 ));Face Brp " & AxisSystemName & ";3);None );Cf11 ));None Limits1 );Limits2 ));Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Dim Ref_YAxis As Reference
Set Ref_YAxis = part1.CreateReferenceFromBRepName("REdge Edge Face Brp " & AxisSystemName & ";2);None );Cf11 ));Face Brp " & AxisSystemName & ";1);None );Cf11 ));None Limits1 );Limits2 ));Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Dim Ref_ZAxis As Reference
Set Ref_ZAxis = part1.CreateReferenceFromBRepName("REdge Edge Face Brp " & AxisSystemName & ";3);None );Cf11 ));Face Brp " & AxisSystemName & ";2);None );Cf11 ));None Limits1 );Limits2 ));Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Zuweisung der Ref_Direction
....
If DraftSelect = True Then
Set Ref_DraftDirec:tion = part1.CreateReferenceFromObject(HybridDirectionDraft)
ElseIf DraftZ = True Then
Set Ref_DraftDirection = Ref_ZAxis
ElseIf DraftX = True Then
Set Ref_DraftDirection = Ref_XAxis
ElseIf DraftY = True Then
Set Ref_DraftDirection = Ref_YAxis
End If
....
Unterfunktion FuncPad
...
Function FuncPad(Ref_Surface As Reference, Ref_Direction As Reference, FirstLimit As String, SecondLimit As String, SecondLimitWert As Double, FirstLimitWert As Double, bodyAblage As Body, PadName As String, PreFixName As String, n As Integer) As Pad
Dim Ref_Pad As Reference
Set Ref_Pad = part1.FindObjectByName("")
Dim pad1 As Pad
Set pad1 = shapeFactory1.AddNewPadFromRef(Ref_Pad, FirstLimitWert)
Set formulaFirstLimit = relation.CreateFormula(PreFixName + "Betrag_FirstLimit_" + CStr(n), "", pad1.FirstLimit.Dimension, FirstLimit)
pad1.SetProfileElement Ref_Surface
Dim limit1 As Limit
Set limit1 = pad1.SecondLimit
Dim length1 As Length
Set length1 = limit1.Dimension
length1.Value = SecondLimitWert
Set formulaSecondLimit = relation.CreateFormula(PreFixName + "Betrag_SecondLimit_" + CStr(n), "", pad1.SecondLimit.Dimension, SecondLimit)
pad1.SetDirection Ref_Direction
pad1.DirectionOrientation = catInverseOrientation
pad1.Name = PadName
part1.Update
Set FuncPad = pad1
End Function
....
Vielen Dank schon mal für eueren Support!
Gruß
AL-Fonse
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP