Option Strict Off
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.Features
Module cylinderCurve
Dim s As Session = Session.GetSession()
Dim workPart As Part = s.Parts.Work
Sub Main()
Try
Dim pointsFile As String
Dim testArray() As String
'open txt file
Dim fdlg As OpenFileDialog = New OpenFileDialog()
fdlg.Title = "Choose the points file"
fdlg.InitialDirectory = "c:\"
fdlg.Filter = "All files (*.*)|*.*|TXT files (*.txt)|*.txt"
fdlg.FilterIndex = 2
fdlg.RestoreDirectory = True
If fdlg.ShowDialog() = DialogResult.OK Then
pointsFile = fdlg.FileName
End If
If fdlg.ShowDialog() = DialogResult.OK Then
Dim sr As StreamReader = New StreamReader(fdlg.FileName)
Dim linestring As String
Dim number1 As Double = Nothing
Dim number2 As Double = Nothing
Dim pnt(2) As Double
Dim coordinates1 As Point3d
Dim ArrayOfPoints(-1) As Point
Dim cnt1 As Integer = 0
Dim deg2rad As Double = Math.PI / 180.0
Dim rad1 As Double = 20.0
Try
Do While sr.Peek >= 0
linestring = sr.ReadLine
testArray = Split(linestring, vbTab, 2)
number1 = CDbl(testArray(0))
number2 = CDbl(testArray(1))
pnt(0) = number1
pnt(1) = rad1 * Math.Cos(number2 * deg2rad)
pnt(2) = rad1 * Math.Sin(number2 * deg2rad)
coordinates1 = New Point3d(pnt(0), pnt(1), pnt(2))
ReDim Preserve ArrayOfPoints(cnt1)
ArrayOfPoints(cnt1) = workPart.Points.CreatePoint(coordinates1)
cnt1 += 1
Loop
CreateStudioSplineThruPoints(ArrayOfPoints)
Finally
sr.Close()
End Try
End If
Catch E As Exception
MessageBox.Show(E.Message)
Exit Sub
End Try
End Sub
Public Sub CreateStudioSplineThruPoints(ByRef points() As Point)
Dim markId9 As Session.UndoMarkId
markId9 = s.SetUndoMark(Session.MarkVisibility.Visible, "Studio Spline Thru Point")
Dim Pcount As Integer = points.Length - 1
Dim nullNXObject As NXObject = Nothing
Dim studioSplineBuilderEx1 As Features.StudioSplineBuilderEx
studioSplineBuilderEx1 = workPart.Features.CreateStudioSplineBuilderEx(nullNXObject)
studioSplineBuilderEx1.Degree = 3
studioSplineBuilderEx1.InputCurveOption = StudioSplineBuilderEx.InputCurveOptions.Delete
studioSplineBuilderEx1.Type = Features.StudioSplineBuilderEx.Types.ThroughPoints
studioSplineBuilderEx1.IsPeriodic = False
studioSplineBuilderEx1.MatchKnotsType = Features.StudioSplineBuilderEx.MatchKnotsTypes.None
studioSplineBuilderEx1.HasPlaneConstraint = False
studioSplineBuilderEx1.OrientExpress.AxisOption = GeometricUtilities.OrientXpressBuilder.Axis.Passive
studioSplineBuilderEx1.OrientExpress.PlaneOption = GeometricUtilities.OrientXpressBuilder.Plane.Passive
Dim knots1(-1) As Double
studioSplineBuilderEx1.SetKnots(knots1)
Dim parameters1(-1) As Double
studioSplineBuilderEx1.SetParameters(parameters1)
Dim nullDirection As Direction = Nothing
Dim nullScalar As Scalar = Nothing
Dim nullOffset As Offset = Nothing
Dim geometricConstraintData(Pcount) As Features.GeometricConstraintData
For ii As Integer = 0 To Pcount
geometricConstraintData(ii) = studioSplineBuilderEx1.ConstraintManager.CreateGeometricConstraintData()
geometricConstraintData(ii).Point = points(ii)
geometricConstraintData(ii).AutomaticConstraintDirection = Features.GeometricConstraintData.ParameterDirection.Iso
geometricConstraintData(ii).AutomaticConstraintType = Features.GeometricConstraintData.AutoConstraintType.None
geometricConstraintData(ii).TangentDirection = nullDirection
geometricConstraintData(ii).TangentMagnitude = nullScalar
geometricConstraintData(ii).Curvature = nullOffset
geometricConstraintData(ii).CurvatureDerivative = nullOffset
geometricConstraintData(ii).HasSymmetricModelingConstraint = False
Next ii
studioSplineBuilderEx1.ConstraintManager.SetContents(geometricConstraintData)
Dim feature1 As Features.Feature
feature1 = studioSplineBuilderEx1.CommitFeature()
studioSplineBuilderEx1.Destroy()
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image when the NX session terminates
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module