Submitted by L4W on Thu, 10/05/2017 - 04:56
Forums:
Hi,
I would like to let user select pattern feature and do something with it. But it is necessary to split code for SpaceType "Offset" and SpaceType "List". How do I get spaceType from selected Pattern Feature? I cabt find out how use GeometricUtilities.PatternSpacing.SpacingType
to return value as String.
re: pattern spacing type
The code below shows how to get the space type for a few pattern types (the other types will be similar). Instead of extracting the spacing type as a string and doing a string comparison; I suggest comparing the spacing type to the enumeration value. This will lead to more robust code.
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Module Module1
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()
Dim theUI As UI = UI.GetUI()
Dim lw As ListingWindow = theSession.ListingWindow
Sub Main()
Dim workPart As Part = theSession.Parts.Work
Dim myPatternFeat As Features.PatternFeature = Nothing
Dim found As Boolean = False
For Each temp As Features.Feature In workPart.Features
If TypeOf (temp) Is Features.PatternFeature Then
myPatternFeat = temp
found = True
Exit For
End If
Next
If Not found Then
Return
End If
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "NXJ")
lw.Open()
Dim patternFeatureBuilder1 As Features.PatternFeatureBuilder
patternFeatureBuilder1 = workPart.Features.CreatePatternFeatureBuilder(myPatternFeat)
lw.WriteLine("pattern feature found: " & myPatternFeat.GetFeatureName)
lw.WriteLine("pattern method: " & patternFeatureBuilder1.PatternMethod.ToString)
lw.WriteLine("pattern definition: " & patternFeatureBuilder1.PatternService.PatternType.ToString)
Select Case patternFeatureBuilder1.PatternService.PatternType
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Linear
lw.WriteLine("pattern spacing: " & patternFeatureBuilder1.PatternService.RectangularDefinition.XSpacing.SpaceType.ToString)
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Circular
lw.WriteLine("pattern spacing: " & patternFeatureBuilder1.PatternService.CircularDefinition.AngularSpacing.SpaceType.ToString)
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Polygon
lw.WriteLine("pattern spacing: " & patternFeatureBuilder1.PatternService.PolygonDefinition.PolygonSpacing.SpaceType.ToString)
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Spiral
lw.WriteLine("pattern spacing: " & patternFeatureBuilder1.PatternService.SpiralDefinition.PitchAlongSpiral.SpaceType.ToString)
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.AlongPath
lw.WriteLine("pattern spacing: " & patternFeatureBuilder1.PatternService.AlongPathDefinition.XOnPathSpacing.SpaceType.ToString)
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.General
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Reference
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Mirror
Case Is = GeometricUtilities.PatternDefinition.PatternEnum.Helix
End Select
patternFeatureBuilder1.Destroy()
lw.Close()
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image immediately after execution within NX
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module