[COLOR=blue]Option[/color] [COLOR=blue]Strict[/color] [COLOR=blue]Off[/color]
[COLOR=blue]Imports[/color] System
[COLOR=blue]Imports[/color] System.Collections
[COLOR=blue]Imports[/color] System.Collections.Generic
[COLOR=blue]Imports[/color] NXOpen
[COLOR=blue]Imports[/color] NXOpenUI
[COLOR=blue]Imports[/color] NXOpen.UF
[COLOR=blue]Module[/color] NXJournal
[COLOR=blue]Dim[/color] ufs [COLOR=blue]As[/color] UFSession [COLOR=blue]=[/color] UFSession.GetUFSession()
[COLOR=blue]Sub[/color] Main()
[COLOR=blue]Dim[/color] theSession [COLOR=blue]As[/color] Session [COLOR=blue]=[/color] Session.GetSession()
[COLOR=blue]Dim[/color] workPart [COLOR=blue]As[/color] Part [COLOR=blue]=[/color] theSession.Parts.Work
[COLOR=blue]Dim[/color] displayPart [COLOR=blue]As[/color] Part [COLOR=blue]=[/color] theSession.Parts.Display
[COLOR=blue]Dim[/color] myMeasure [COLOR=blue]As[/color] Measu [COLOR=green]reManager = workPart.MeasureManager[/color]
[COLOR=green]'layer to interrogate[/color]
[COLOR=blue]Dim[/color] layerNumber [COLOR=blue]As[/color] [COLOR=blue]Integer[/color] [COLOR=blue]=[/color] 1
[COLOR=blue]Dim[/color] lw [COLOR=blue]As[/color] ListingWindow [COLOR=blue]=[/color] theSession.ListingWindow
[COLOR=blue]Dim[/color] allObjects [COLOR=blue]As[/color] NXObject()
[COLOR=blue]Dim[/color] pointXYZ [COLOR=blue]As[/color] Point3d
[COLOR=blue]Dim[/color] arcObject [COLOR=blue]As[/color] Arc
[COLOR=blue]Dim[/color] myPoints [COLOR=blue]As[/color] [COLOR=blue]New[/color] List(Of Point)
[COLOR=blue]Dim[/color] myArcs [COLOR=blue]As[/color] [COLOR=blue]New[/color] List(Of Arc)
[COLOR=blue]Dim[/color] pointName [COLOR=blue]As[/color] [COLOR=blue]String[/color]
[COLOR=blue]Dim[/color] arcName [COLOR=blue]As[/color] [COLOR=blue]String[/color]
[COLOR=blue]Dim[/color] i [COLOR=blue]As[/color] [COLOR=blue]Integer[/color] [COLOR=blue]=[/color] 0
[COLOR=blue]Dim[/color] unit1 [COLOR=blue]As[/color] Unit
[COLOR=blue]Dim[/color] myDistance [COLOR=blue]As[/color] MeasureDistance
[COLOR=blue]Dim[/color] myAngle [COLOR=blue]As[/color] MeasureAngle
[COLOR=blue]If[/color] workPart.PartUnits [COLOR=blue]=[/color] BasePart.Units.Inches [COLOR=blue]Then[/color]
unit1 [COLOR=blue]=[/color] CType(workPart.UnitCollection.FindObject("Inch"), Unit)
[COLOR=blue]Else[/color]
unit1 [COLOR=blue]=[/color] CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit)
End [COLOR=blue]If[/color]
allObjects [COLOR=blue]=[/color] workPart.Layers.GetAllObjectsOnLayer(layerNumber)
lw.Open()
[COLOR=blue]For[/color] [COLOR=blue]Each[/color] someObject [COLOR=blue]As[/color] NXObject [COLOR=blue]In[/color] allObjects
[COLOR=blue]If[/color] [COLOR=blue]TypeOf[/color] someObject [COLOR=blue]Is[/color] NXOpen.Point [COLOR=blue]Then[/color]
myPoints.Add(someObject)
End [COLOR=blue]If[/color]
[COLOR=blue]If[/color] [COLOR=blue]TypeOf[/color] someObject [COLOR=blue]Is[/color] NXOpen.Arc [COLOR=blue]Then[/color]
myArcs.Add(someObject)
End [COLOR=blue]If[/color]
[COLOR=blue]Next[/color]
[COLOR=green]'myPoints.Sort[/color]
[COLOR=green]'info dump, not guaranteed to be in any specific order[/color]
lw.WriteLine("Point Name,Point X,Point Y,Point Z")
[COLOR=blue]For[/color] i [COLOR=blue]=[/color] 0 [COLOR=blue]To[/color] myPoints.Count [COLOR=blue]-[/color] 1
pointXYZ [COLOR=blue]=[/color] myPoints(i).Coordinates
pointXYZ [COLOR=blue]=[/color] Abs2WCS(pointXYZ)
[COLOR=green]'pointName = pointObject.Name[/color]
[COLOR=blue]Try[/color]
pointName [COLOR=blue]=[/color] myPoints(i).GetStringAttribute("NM")
[COLOR=blue]Catch[/color]
[COLOR=green]'attribute does not exist[/color]
pointName [COLOR=blue]=[/color] "<no [COLOR=green]'NM' attribute>"[/color]
End [COLOR=blue]Try[/color]
[COLOR=blue]If[/color] i > 1 [COLOR=blue]Then[/color]
myDistance [COLOR=blue]=[/color] myMeasure.NewDistance(unit1, myPoints(i), myPoints(i [COLOR=blue]-[/color] 1))
myAngle [COLOR=blue]=[/color] myMeasure.NewAngle(unit1, myPoints(i [COLOR=blue]-[/color] 1), myPoints(i [COLOR=blue]-[/color] 2), myPoints(i), [COLOR=blue]True[/color])
lw.WriteLine(pointName [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.X, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Y, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Z, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] myDistance.Value [COLOR=blue]&[/color] ", " [COLOR=blue]&[/color] myAngle.Value)
[COLOR=blue]ElseIf[/color] i > 0 [COLOR=blue]Then[/color]
myDistance [COLOR=blue]=[/color] myMeasure.NewDistance(unit1, myPoints(i), myPoints(i [COLOR=blue]-[/color] 1))
lw.WriteLine(pointName [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.X, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Y, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Z, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] myDistance.Value [COLOR=blue]&[/color] ",")
[COLOR=blue]Else[/color]
lw.WriteLine(pointName [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.X, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Y, 3) [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] Math.Round(pointXYZ.Z, 3) [COLOR=blue]&[/color] ",,")
End [COLOR=blue]If[/color]
[COLOR=blue]Next[/color]
lw.WriteLine("")
lw.WriteLine("Arc Name, Radius")
[COLOR=blue]For[/color] [COLOR=blue]Each[/color] arcObject [COLOR=blue]In[/color] myArcs
[COLOR=blue]Try[/color]
arcName [COLOR=blue]=[/color] arcObject.GetStringAttribute("NM")
[COLOR=blue]Catch[/color]
[COLOR=green]'attribute does not exist[/color]
arcName [COLOR=blue]=[/color] "<no [COLOR=green]'NM' attribute>"[/color]
End [COLOR=blue]Try[/color]
lw.WriteLine(arcName [COLOR=blue]&[/color] "," [COLOR=blue]&[/color] arcObject.Radius)
[COLOR=blue]Next[/color]
lw.Close()
End [COLOR=blue]Sub[/color]
[COLOR=green]'**************************************************************************************************[/color]
[COLOR=green]'function taken from GTAC example[/color]
[COLOR=blue]Function[/color] Abs2WCS(ByVal inPt [COLOR=blue]As[/color] Point3d) [COLOR=blue]As[/color] Point3d
[COLOR=blue]Dim[/color] pt1(2), pt2(2) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]
pt1(0) [COLOR=blue]=[/color] inPt.X
pt1(1) [COLOR=blue]=[/color] inPt.Y
pt1(2) [COLOR=blue]=[/color] inPt.Z
ufs.Csys.MapPoint(UFConstants.UF_CSYS_ROOT_COORDS, pt1, UFConstants.UF_CSYS_ROOT_WCS_COORDS, pt2)
Abs2WCS.X [COLOR=blue]=[/color] pt2(0)
Abs2WCS.Y [COLOR=blue]=[/color] pt2(1)
Abs2WCS.Z [COLOR=blue]=[/color] pt2(2)
End [COLOR=blue]Function[/color]
[COLOR=green]'**************************************************************************************************[/color]
End [COLOR=blue]Module[/color]