Showing results for
Do you mean
Solved!

# Get type of a point in NXOpen

Hi,

I have a part which contains some points.

My requirement is that I want to create same type of the point at the same location.

I want to know 'How these points were created', I mean, I want to do something, if the point is created as 'Point on face' and something different if the point is created as 'Point on edge'.

As NXOpen:oint have different methods to create it which have all options, like, input as face, edge etc, but I could not figure out how to know 'Which method was used to create this point'.

Das

7 REPLIES

## Re: Get type of a point in NXOpen

[ Edited ]
```#in python you can just use the "type" methodfor i in range(len(spline_list)):
spline = workPart.Splines.FindObject(str(spline_list[i]))

self.theLw.WriteLine("List of 3D points is "+str(spline.Get3DPoles()))
self.theLw.WriteLine("")

#returns a list of points on the spline
poles=spline.Get3DPoles()

self.theLw.WriteLine("First 3D point on the spline is "+str(poles[0]) +" and type is " +str(type(poles[0])))

#assign X,Y,Z coordinates to a numpy array
point_array=np.array((poles[0].X, poles[0].Y, poles[0].Z))```

## Re: Get type of a point in NXOpen

"I have a part which contains some points.

My requirement is that I want to create same type of the point at the same location."

If a point already exists at that location, why create a duplicate?

Now on to your question:

If the original point was created as an unassociative point, there is no feasible way to determine how it was created (that information will not be saved with an unassociative point).

If it is an associative point, you can query the "smart object" parents of the point. So if it was created as a point on surface, that surface will be one of the point's parent objects. The point's creation method isn't directly saved with the point, you will need to infer it based on the smart object parents.

## Re: Get type of a point in NXOpen

Within NX the EDIT PARAMETERS of a smart point does retain the defining data.

These points are created using CreatePointFeatureBuilder (at least when I used INSERT => DATUM/POINT => POINT application).

You can try coding to get the point feature and try to edit it.  Maybe the defining parameters are identifiable in that structure.

Dave Figurski

GSS / Siemens Industry Sector

## Re: Get type of a point in NXOpen

Yes, the point is Associative. I think, your suggestion of getting a parent of the point and deciding the type of method to recreate that point should work.

I am just worried bout the U-V scalar required for recreating that point, as that information too is not saved with the point. Do I need to calculate based on the Face Geometry. If so, do you know is there any method which will assist me in this.

By then, I will try implementing your approch of finding parent and deciding creation method.

Thank you.

DAS_SSK

## Re: Get type of a point in NXOpen

I think, the points I am working with are not created as point feature. They are actually the points that are created on the fly. Like creating block, we selected 'Point on Face'.

But yes, your suggestion is also opening a way which can make my work, like creating temporary feature and editing it to get the information needed.

Thanks
DAS_SSK
Solution
Solution
Accepted by topic author DAS_SSK
‎11-11-2016 12:07 AM

## Re: Get type of a point in NXOpen

Here is some code that might get you started:

```'NXJournaling.com
'August 31, 2016

'report the smart object parents of all the points in the work part.

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 markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "NXJ point parents")

lw.Open()

For Each tempPt As Point In theSession.Parts.Work.Points
lw.WriteLine("Point Tag: " & tempPt.Tag.ToString)
GetSmartParents(tempPt, 2)
lw.WriteLine("")
Next

lw.Close()

End Sub

Sub GetSmartParents(ByRef theSmartObject As NXObject, ByVal indent As Integer)

Dim numParents As Integer
Dim theParentTags() As Tag = Nothing
Dim isSmart As Boolean = False

Try
theUfSession.So.IsSo(theSmartObject.Tag, isSmart)
If isSmart Then

lw.WriteLine(New String(" "c, indent) & "number of parents: " & numParents.ToString)
For Each tempTag As Tag In theParentTags
Dim objParent As TaggedObject = Utilities.NXObjectManager.Get(tempTag)

lw.WriteLine(New String(" "c, indent) & "parent type: " & objParent.GetType.ToString)
lw.WriteLine(New String(" "c, indent) & "parent tag: " & objParent.Tag.ToString)

If TypeOf (objParent) Is Scalar Then
Dim theScalar As Scalar = objParent
lw.WriteLine(New String(" "c, indent) & "dimensionality: " & theScalar.Dimensionality.ToString)
lw.WriteLine(New String(" "c, indent) & "value: " & theScalar.Value.ToString)
End If

If TypeOf (objParent) Is Offset Then
Dim theOffset As Offset = objParent
lw.WriteLine(New String(" "c, indent) & "vector: " & theOffset.Vector.ToString)
End If

GetSmartParents(objParent, indent + 2)

Next

lw.WriteLine("")

End If

Catch ex As NXException
lw.WriteLine("error: " & ex.ErrorCode)
lw.WriteLine("  " & ex.Message)
End Try

End Sub

Public Function GetUnloadOption(ByVal dummy As String) As Integer

'Unloads the image immediately after execution within NX

End Function

End Module```

Hi cowski1,