Forums:
Below is code showing START hole coordinate (x,y,z). Is it possible to find END hole coordinate(x,y,z) when the depth limit of hole is Through Body?
Option Strict Off Imports System Imports NXOpen Imports System.Collections.GenericImports NXOpen.FeaturesImports NXOpen.UF Module Start_End_Hole_Position Sub Main() Dim theSession As Session = Session.GetSession()Dim workPart As Part = theSession.Parts.WorkDim displayPart As Part = theSession.Parts.DisplayDim theUFSession As UFSession = UFSession.GetUFSessionDim lw As ListingWindow = theSession.ListingWindow Dim featArray()As Feature = workPart.Features.GetFeatures() Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Start / End Hole Position") theUfSession.Ui.ExitListingWindow() lw.Open() ForEach myFeature As Feature In featArray 'lw.writeline(myFeature.FeatureType & " - " & myFeature.GetFeatureName)If myFeature.FeatureType="HOLE PACKAGE"Then Dim holeFeature As HolePackage = myFeature 'lw.writeline(myFeature.GetFeatureName) Dim holeDir()As Vector3d holeFeature.GetDirections(holeDir) Dim holeBuilder As HolePackageBuilder holeBuilder = workPart.Features.CreateHolePackageBuilder(holeFeature) 'lw.WriteLine("hole type: " & holeBuilder.Type.ToString) If holeBuilder.Type= HolePackageBuilder.Types.GeneralHoleThen lw.WriteLine("general hole form: "& holeBuilder.GeneralHoleForm.ToString) If holeBuilder.GeneralHoleForm= HolePackageBuilder.HoleForms.SimpleThen lw.WriteLine("hole diameter: "& holeBuilder.GeneralSimpleHoleDiameter.Value.ToString) if holeBuilder.HoleDepthLimitOption= holeBuilder.HoleDepthLimitOption.ThroughBodythen lw.WriteLine("hole depth: "& holeBuilder.HoleDepthLimitOption.ToString)else lw.WriteLine("hole depth: "& holeBuilder.GeneralSimpleHoleDepth.Value.ToString)endif lw.WriteLine("Start Location X: "& holeFeature.Location.X.ToString) lw.WriteLine("Start Location Y: "& holeFeature.Location.Y.ToString) lw.WriteLine("Start Location Z: "& holeFeature.Location.Z.ToString) EndIf If holeBuilder.GeneralHoleForm= HolePackageBuilder.HoleForms.CounterboredThen lw.WriteLine("hole diameter: "& holeBuilder.GeneralCounterboreHoleDiameter.Value.ToString) if holeBuilder.HoleDepthLimitOption= holeBuilder.HoleDepthLimitOption.ThroughBodythen lw.WriteLine("hole depth: "& holeBuilder.HoleDepthLimitOption.ToString)else lw.WriteLine("hole depth: "& holeBuilder.GeneralCounterboreHoleDepth.Value.ToString)endif lw.WriteLine("counterbore diameter: "& holeBuilder.GeneralCounterboreDiameter.Value.ToString) lw.WriteLine("counterbore depth: "& holeBuilder.GeneralCounterboreDepth.Value.ToString) lw.WriteLine("Start Location X: "& holeFeature.Location.X.ToString) lw.WriteLine("Start Location Y: "& holeFeature.Location.Y.ToString) lw.WriteLine("Start Location Z: "& holeFeature.Location.Z.ToString) EndIf If holeBuilder.GeneralHoleForm= HolePackageBuilder.HoleForms.CountersinkThen lw.WriteLine("hole diameter: "& holeBuilder.GeneralCountersinkHoleDiameter.Value.ToString) if holeBuilder.HoleDepthLimitOption= holeBuilder.HoleDepthLimitOption.ThroughBodythen lw.WriteLine("hole depth: "& holeBuilder.HoleDepthLimitOption.ToString)else lw.WriteLine("hole depth: "& holeBuilder.GeneralCountersinkHoleDepth.Value.ToString)endif lw.WriteLine("countersink diameter: "& holeBuilder.GeneralCountersinkDiameter.Value.ToString) lw.WriteLine("countersink angle: "& holeBuilder.GeneralCountersinkAngle.Value.ToString) lw.WriteLine("Start Location X: "& holeFeature.Location.X.ToString) lw.WriteLine("Start Location Y: "& holeFeature.Location.Y.ToString) lw.WriteLine("Start Location Z: "& holeFeature.Location.Z.ToString) EndIf EndIf lw.writeline("") holeBuilder.Destroy() EndIf Next lw.Close() EndSub EndModule
Thanks