Imports System
Imports NXOpen
Module Horn_trackix
Sub Main(ByVal args() As String)
Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
Dim workPart As NXOpen.Part = theSession.Parts.Work
Dim displayPart As NXOpen.Part = theSession.Parts.Display
Dim lw As ListingWindow = theSession.ListingWindow
lw.Open()
Dim markId1 As NXOpen.Session.UndoMarkId = Nothing
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start")
Dim nullNXOpen_NXObject As NXOpen.NXObject = Nothing
Dim studioSplineBuilderEx1 As NXOpen.Features.StudioSplineBuilderEx = Nothing
studioSplineBuilderEx1 = workPart.Features.CreateStudioSplineBuilderEx(nullNXOpen_NXObject)
Dim origin1 As NXOpen.Point3d = New NXOpen.Point3d(0.0, 0.0, 0.0)
Dim normal1 As NXOpen.Vector3d = New NXOpen.Vector3d(0.0, 0.0, 1.0)
Dim plane1 As NXOpen.Plane = Nothing
plane1 = workPart.Planes.CreatePlane(origin1, normal1, NXOpen.SmartObject.UpdateOption.WithinModeling)
studioSplineBuilderEx1.DrawingPlane = plane1
studioSplineBuilderEx1.OrientExpress.ReferenceOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Reference.WcsDisplayPart
studioSplineBuilderEx1.MovementMethod = NXOpen.Features.StudioSplineBuilderEx.MovementMethodType.View
studioSplineBuilderEx1.OrientExpress.AxisOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Axis.Passive
studioSplineBuilderEx1.OrientExpress.PlaneOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Plane.Passive
studioSplineBuilderEx1.Extender.StartValue.RightHandSide = "0"
studioSplineBuilderEx1.Extender.EndValue.RightHandSide = "0"
studioSplineBuilderEx1.InputCurveOption = NXOpen.Features.StudioSplineBuilderEx.InputCurveOptions.Hide
studioSplineBuilderEx1.MatchKnotsType = NXOpen.Features.StudioSplineBuilderEx.MatchKnotsTypes.None
Dim Rm As Integer = 460 ' Mouth radius (mm*10) 'edit 2020.04.23
Dim Rk As Integer = 75 ' Throat radius (mm*10) 'edit 2020.04.23
For R As Integer = Rm To Rk Step -1
Dim Rs As Double = Rm / 10
Dim Rr As Double = R / 10
Dim x As Double
x = Rs * Math.Log((Rs + (Rs ^ 2 - Rr ^ 2) ^ 0.5) / Rr) - (Rs ^ 2 - Rr ^ 2) ^ 0.5
'lw.WriteLine(x & ", " & Rr)
Dim coordinates1 As NXOpen.Point3d = New NXOpen.Point3d(0, Rr, x)
Dim point1 As NXOpen.Point = Nothing
point1 = workPart.Points.CreatePoint(coordinates1)
Dim geometricConstraintData1 As NXOpen.Features.GeometricConstraintData = Nothing
geometricConstraintData1 = studioSplineBuilderEx1.ConstraintManager.CreateGeometricConstraintData()
geometricConstraintData1.Point = point1
studioSplineBuilderEx1.ConstraintManager.Append(geometricConstraintData1)
Next
Dim nXObject1 As NXOpen.NXObject = Nothing
nXObject1 = studioSplineBuilderEx1.Commit()
studioSplineBuilderEx1.Destroy()
theSession.DeleteUndoMark(markId1, Nothing)
End Sub
End Module