Hallo zusammmen,
zuerst möchte ich mal mein Vorhaben schildern:
Ich möchte eine Welle in viele Schnitte(Körper teilen-Funktion) in Längsrichtung teilen(Schrittweite ca. 1-3mm).
Nun habe ich ein Problem, nämlich dass bei jedem Schnitt durch eine Lagerbohrung ein Fehler auftritt. (Ich glaube wegen Tangentenschwierigkeiten an der zylindrischen Bohrungen)
Nun versuche ich mit Hilfe der UNDO-Funktion, die Schnitte in den Lagerbohrungen einfach zu vermeiden, indem ich sie überspringe.
Das funktioniert aber noch nicht und ich komm grad absolut nicht weiter.
Kann mir jemand helfen mit der UNDO-Funktion oder kann sogar jemand das Schnittproblem lösen?
Vielen Dank im Voraus
Quelltext:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim p As Point3d
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim i As Integer
Dim l As Integer
Dim s As Integer
Dim displayPart As Part = theSession.Parts.Display
Dim nullFeatures_SplitBody As Features.SplitBody = Nothing
Dim s1 As String
Dim bodies1(0) As Body
Dim body1 As Body
p = workPart.WCS.Origin
s = System.Convert.ToDouble(sweite.Text)
l = System.Convert.ToDouble(laenge.Text)
For Each body1 In workPart.Bodies
s1 = body1.JournalIdentifier
Next
body1 = CType(workPart.Bodies.FindObject(s1), Body)
bodies1(0) = body1
For i = 1 To l Step s
Dim mm As Session.UndoMarkId
mm = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "1")
Try
Dim splitBodyBuilder1 As Features.SplitBodyBuilder
splitBodyBuilder1 = workPart.Features.CreateSplitBodyBuilderUsingCollector(nullFeatures_SplitBody)
Dim origin1 As Point3d = New Point3d(0.0, 0.0, 0.0)
Dim normal1 As Vector3d = New Vector3d(0.0, 0.0, 1.0)
Dim plane1 As Plane
plane1 = workPart.Planes.CreatePlane(origin1, normal1, SmartObject.UpdateOption.WithinModeling)
splitBodyBuilder1.BooleanTool.FacePlaneTool.ToolPlane = plane1
Dim section1 As Section
section1 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5)
Dim unit1 As Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit)
Dim expression1 As Expression
expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
Dim section2 As Section
section2 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5)
Dim expression2 As Expression
expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
splitBodyBuilder1.BooleanTool.ExtrudeRevolveTool.ToolSection.PrepareMappingData()
section1.DistanceTolerance = 0.001
section1.ChainingTolerance = 0.001
section2.DistanceTolerance = 0.001
section2.ChainingTolerance = 0.001
splitBodyBuilder1.BooleanTool.ExtrudeRevolveTool.ToolSection.DistanceTolerance = 0.001
splitBodyBuilder1.BooleanTool.ExtrudeRevolveTool.ToolSection.ChainingTolerance = 0.001
Dim scCollector1 As ScCollector
scCollector1 = workPart.ScCollectors.CreateCollector()
Dim bodyDumbRule1 As BodyDumbRule
bodyDumbRule1 = workPart.ScRuleFactory.CreateRuleBodyDumb(bodies1)
Dim rules1(0) As SelectionIntentRule
rules1(0) = bodyDumbRule1
scCollector1.ReplaceRules(rules1, False)
splitBodyBuilder1.TargetBodyCollector = scCollector1
splitBodyBuilder1.BooleanTool.ToolOption = GeometricUtilities.BooleanToolBuilder.BooleanToolType.NewPlane
Dim geom1(-1) As NXObject
plane1.SetGeometry(geom1)
plane1.SetMethod(PlaneTypes.MethodType.PointDir)
Dim objects1(0) As NXObject
Dim nErrs1 As Integer
Dim section3 As Section
section3 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5)
Dim expression3 As Expression
expression3 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
Dim section4 As Section
section4 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5)
Dim expression4 As Expression
expression4 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
Dim coordinates1 As Point3d = New Point3d(0.0, 0.0, 0.0)
Dim point1 As Point
point1 = workPart.Points.CreatePoint(coordinates1)
Dim origin2 As Point3d = New Point3d(0.0, 0.0, 0.0)
Dim vector1 As Vector3d = New Vector3d(0.0, 0.0, 1.0)
Dim direction1 As Direction
direction1 = workPart.Directions.CreateDirection(origin2, vector1, SmartObject.UpdateOption.WithinModeling)
plane1.SetMethod(PlaneTypes.MethodType.PointDir)
plane1.SetMethod(PlaneTypes.MethodType.PointDir)
Dim geom2(1) As NXObject
geom2(0) = point1
geom2(1) = direction1
plane1.SetGeometry(geom2)
plane1.SetAlternate(PlaneTypes.AlternateType.One)
plane1.Evaluate()
plane1.SetUpdateOption(SmartObject.UpdateOption.WithinModeling)
Dim geom3(-1) As NXObject
plane1.SetGeometry(geom3)
plane1.SetMethod(PlaneTypes.MethodType.Coefficients)
plane1.SetMethod(PlaneTypes.MethodType.Coefficients)
Dim geom4(-1) As NXObject
plane1.SetGeometry(geom4)
Dim origin3 As Point3d = New Point3d(p.X, 0, 0)
plane1.Origin = origin3
Dim normal2 As Vector3d = New Vector3d(1.0, 0.0, 0.0)
plane1.Normal = normal2
plane1.SetAlternate(PlaneTypes.AlternateType.One)
plane1.Evaluate()
plane1.SetMethod(PlaneTypes.MethodType.Coefficients)
Dim geom5(-1) As NXObject
plane1.SetGeometry(geom5)
Dim origin4 As Point3d = New Point3d(p.X + i, 0, 0)
plane1.Origin = origin4
Dim normal3 As Vector3d = New Vector3d(1.0, 0.0, 0.0)
plane1.Normal = normal3
plane1.SetAlternate(PlaneTypes.AlternateType.One)
plane1.Evaluate()
Dim geom6(-1) As NXObject
plane1.SetGeometry(geom6)
plane1.SetMethod(PlaneTypes.MethodType.Fixed)
section4.Destroy()
section3.Destroy()
Dim origin5 As Point3d
origin5 = plane1.Origin
Dim normal4 As Vector3d
normal4 = plane1.Normal
plane1.SetMethod(PlaneTypes.MethodType.Fixed)
Dim geom7(-1) As NXObject
plane1.SetGeometry(geom7)
Dim origin6 As Point3d = New Point3d(p.X + i, 0, 0)
plane1.Origin = origin6
Dim normal5 As Vector3d = New Vector3d(1.0, -0.0, 0.0)
plane1.Normal = normal5
plane1.SetAlternate(PlaneTypes.AlternateType.One)
plane1.Evaluate()
Dim nXObject1 As NXObject
nXObject1 = splitBodyBuilder1.Commit()
splitBodyBuilder1.BooleanTool.ExtrudeRevolveTool.ToolSection.CleanMappingData()
splitBodyBuilder1.Destroy()
section1.Destroy()
theSession.DeleteUndoMark(mm, "1")
Catch ex As NXException
theSession.UndoToMark(mm, "1")
i = i + s
End Try
Next i
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP