Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpenUI
Module EdgeProjection1
Dim s As Session = Session.GetSession()
Dim ui As UI = UI.GetUI
Dim ufs As UFSession = UFSession.GetUFSession()
Dim workPart As Part = s.Parts.Work
Sub Main()
Dim face1 As Face = Nothing
Dim lstSelFaces As List(Of Face) = New List(Of Face)
Dim response1 As Selection.Response = Selection.Response.Cancel
Dim pnt1(2) As Double
Dim junk3(2) As Double
Dim junk1 As Double = Nothing
Dim ArrayOfPoints(10) As Point
start1:
response1 = SelectAFace("select a face", face1)
If response1 = Selection.Response.Back Or response1 = Selection.Response.Cancel Then GoTo end1
Dim edges(-1) As Edge
edges = face1.GetEdges
Dim temptag As Tag = Tag.Null
Dim parm1 As Double = Nothing
For Each e1 As Edge In edges
For i As Integer = 0 To 10
parm1 = i / 10.0
ufs.Modl.AskCurveProps(e1.Tag, parm1, pnt1, junk3, junk3, junk3, junk1, junk1)
Dim projpnt13d As Point3d = New Point3d(pnt1(0), 0.0, _
Math.Sqrt(pnt1(1) * pnt1(1) + _
pnt1(2) * pnt1(2)))
ArrayOfPoints(i) = workPart.Points.CreatePoint(projpnt13d)
Next
CreateStudioSplineThruPoints(ArrayOfPoints)
Next
GoTo start1
end1:
End Sub
Public Sub CreateStudioSplineThruPoints(ByRef points() As Point)
Dim markId9 As Session.UndoMarkId
markId9 = s.SetUndoMark(Session.MarkVisibility.Visible, "Studio Spline Thru Points")
Dim Pcount As Integer = points.Length - 1
Dim nullFeatures_StudioSpline As Features.StudioSpline = Nothing
Dim studioSplineBuilder1 As Features.StudioSplineBuilderEx
studioSplineBuilder1 = workPart.Features.CreateStudioSplineBuilderEx(nullFeatures_StudioSpline)
studioSplineBuilder1.Degree = 3
studioSplineBuilder1.IsPeriodic = False
Dim knots1(-1) As Double
studioSplineBuilder1.SetKnots(knots1)
Dim parameters1(-1) As Double
studioSplineBuilder1.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) = studioSplineBuilder1.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
studioSplineBuilder1.ConstraintManager.SetContents(geometricConstraintData)
Dim feature1 As Features.Feature
feature1 = studioSplineBuilder1.CommitFeature()
studioSplineBuilder1.Destroy()
End Sub
Function SelectAFace(ByVal prompt As String, ByRef selObj As Face) As Selection.Response
Dim title As String = "Select a face"
Dim includeFeatures As Boolean = False
Dim keepHighlighted As Boolean = False
Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
Dim cursor As Point3d
Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
Dim selectionMask_array(0) As Selection.MaskTriple
With selectionMask_array(0)
.Type = UFConstants.UF_solid_type
.SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_ANY_FACE
End With
Dim resp As Selection.Response = ui.SelectionManager.SelectTaggedObject(prompt, _
title, scope, selAction, _
includeFeatures, keepHighlighted, selectionMask_array, _
selObj, cursor)
If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
Return Selection.Response.Ok
Else
Return Selection.Response.Cancel
End If
End Function
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'----Other unload options-------
'Unloads the image immediately after execution within NX
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module