I would like to select a curve (an arc to find the diameter). This curve for this part, is in a sketch.
I do not find how to do.
I miss understanding something between UF and cpp function:
I can cast my feature in sketch and do many things (list curves...) but not to have The curve I select.
Thank in advanced for your help.
Enclosed a simple part and simplified code (it compile and is usable as dll)
My code is in VB as opposed to C++, but I think it conveys the idea.
Option Strict Off Imports System Imports NXOpen Imports NXOpen.UF Module Module1 Sub Main() Dim theSession As Session = Session.GetSession() If IsNothing(theSession.Parts.BaseWork) Then 'active part required Return End If Dim workPart As Part = theSession.Parts.Work Dim lw As ListingWindow = theSession.ListingWindow lw.Open() Dim theArc As Arc If SelectArc(theArc) = Selection.Response.Cancel Then Return End If lw.WriteLine("Diameter: " & theArc.Radius * 2) lw.Close() End Sub Function SelectArc(ByRef selArc As Arc) As Selection.Response Dim theUI As UI = UI.GetUI Dim title As String = "Select an Arc" 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.WorkPart Dim selectionMask_array(0) As Selection.MaskTriple Dim prompt As String = "Select Arc" Dim selObj As TaggedObject With selectionMask_array(0) .Type = UFConstants.UF_circle_type .Subtype = 0 End With Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _ title, scope, selAction, _ includeFeatures, keepHighlighted, selectionMask_array, _ selObj, cursor) If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then selArc = Utilities.NXObjectManager.Get(selObj.Tag) Return Selection.Response.Ok Else Return Selection.Response.Cancel End If End Function 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
If you want to select multiple objects, use the .SelectTaggedObjects method rather than .SelectTaggedObject. An article here explains their use. The article actually references the older .SelectObject and .SelectObjects methods, but the newer .SelectTaggedObject and .SelectTaggedObjects methods are pretty much direct replacements.