' NX 9.0.1.3 Option Strict Off Imports System Imports System.Collections.Generic Imports NXOpen Imports NXOpen.UF Imports NXOpenUI Module NXJournal Sub Main (ByVal args() As String) Dim theSession As Session = Session.GetSession() Dim ufs As UFSession = UFSession.GetUFSession() Dim ui As UI = UI.GetUI() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display ' ---------------------------------------------- ' Menu: Insert->Offset/Scale->Offset Surface... ' ---------------------------------------------- Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Start") Dim pickFace As Face Dim selectionFaces() As TaggedObject Dim lstSelFaces As List(Of Face) = New List(Of Face) SelectAFace("select a face", pickFace) Dim scCollector1 As ScCollector = workPart.ScCollectors.CreateCollector Dim boundaryFaces1(-1) As Face Dim faceTangentRule1 As FaceTangentRule faceTangentRule1 = workPart.ScRuleFactory.CreateRuleFaceTangent(pickFace, boundaryFaces1) Dim rules1(0) As SelectionIntentRule rules1(0) = faceTangentRule1 scCollector1.ReplaceRules(rules1, False) selectionFaces = scCollector1.GetObjects MsgBox("Number of selected Faces: " & selectionFaces.Length.ToString) Dim nullFeatures_Feature As Features.Feature = Nothing Dim offsetSurfaceBuilder1 As Features.OffsetSurfaceBuilder offsetSurfaceBuilder1 = workPart.Features.CreateOffsetSurfaceBuilder(nullFeatures_Feature) Dim unit1 As Unit unit1 = offsetSurfaceBuilder1.Radius.Units offsetSurfaceBuilder1.OutputOption = Features.OffsetSurfaceBuilder.OutputOptionType.OneFeatureForAllFaces Dim nullScCollector As ScCollector = Nothing Dim inputBox As NXInputBox = New NXInputBox Dim faceSetOffset1 As GeometricUtilities.FaceSetOffset faceSetOffset1 = workPart.FaceSetOffsets.CreateFaceSet(inputBox.GetInputString("Set the Offset: ", "Offset", "5.0"), nullScCollector, False, 0) offsetSurfaceBuilder1.RemoveProblemVerticesOption = True offsetSurfaceBuilder1.SetOrientationMethod(Features.OffsetSurfaceBuilder.OrientationMethodType.UseExistingNormals) offsetSurfaceBuilder1.FaceSets.Append(faceSetOffset1) faceSetOffset1.FaceCollector = scCollector1 faceSetOffset1.ItemFlipFlag = True offsetSurfaceBuilder1.PartialOption = False Dim T0 As Double Dim T As Double Dim L As Single T0 = 0.01 On Error Resume Next Do Err.Clear() offsetSurfaceBuilder1.Tolerance = T0 + T Dim nXObject1 As NXObject nXObject1 = offsetSurfaceBuilder1.Commit() If Err.Number <> 0 Then L = L + 1 T = T + 0.1 Dim Msg As String Msg = "Error # " & Str(Err.Number) & " was generated by " _ & Err.Source & ControlChars.CrLf & Err.Description & " Toleranz= " & offsetSurfaceBuilder1.Tolerance MsgBox(Msg, MsgBoxStyle.Information, "Error") If L >= 12 Then Exit Sub End If Loop Until Err.Number = 0 offsetSurfaceBuilder1.Destroy() ' ---------------------------------------------- ' Menu: Tools->Journal->Stop Recording ' ---------------------------------------------- End Sub Function SelectAFace(ByVal prompt As String, ByRef selObj As Face) As Selection.Response Dim theUI As UI = UI.GetUI Dim title As String = "Select a face of the surface to Offset" 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 = theUI.SelectionManager.SelectObject(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 End Module