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 theUISession As UI = UI.GetUI()
Dim workPart As Part = theSession.Parts.Work
Dim lw As ListingWindow = theSession.ListingWindow
Sub Main()
If IsNothing(theSession.Parts.BaseWork) Then
'active part required
Return
End If
lw.Open()
Const undoMarkName As String = "NXJ journal"
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
Dim theComponent As Assemblies.Component
Dim attTitle As String = "description"
Do Until SelectComponent("select a component", theComponent) = Selection.Response.Cancel
'does material attribute exist?
If theComponent.HasUserAttribute(attTitle, NXObject.AttributeType.String, 0) Then
AddComponentInfo(theComponent)
Else
lw.WriteLine("component, " & theComponent.DisplayName & ", does not have the attribute: " & attTitle)
End If
Loop
lw.Close()
End Sub
Function SelectComponent(ByVal prompt As String, ByRef selObj As TaggedObject) As Selection.Response
Dim theUI As UI = UI.GetUI
Dim title As String = "Select a component"
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_component_type
.Subtype = UFConstants.UF_all_subtype
End With
theUfSession.Ui.SetCursorView(0)
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
Return Selection.Response.Ok
Else
Return Selection.Response.Cancel
End If
End Function
Sub AddComponentInfo(ByVal tempComp As Assemblies.Component)
'get associative text for attribute
Dim associativeText1 As Annotations.AssociativeText
associativeText1 = workPart.Annotations.CreateAssociativeText()
Dim text1(4) As String
text1(0) = associativeText1.GetObjectAttributeText(tempComp, "description")
text1(1) = associativeText1.GetObjectAttributeText(tempComp, "size")
text1(2) = associativeText1.GetObjectAttributeText(tempComp, "vendor")
text1(2) = text1(2) + ": "+associativeText1.GetObjectAttributeText(tempComp, "part_num")
'get point screen position
Dim myView As NXOpen.View = Nothing
Dim myCursor As Point3d
'ask the user to select a new origin for this UDO
Dim myResponse As Selection.DialogResponse = theUISession.SelectionManager.SelectScreenPosition("Select Note Origin", myView, myCursor)
Dim nullNXOpen_Annotations_SimpleDraftingAid As NXOpen.Annotations.SimpleDraftingAid = Nothing
Dim pmiNoteBuilder1 As NXOpen.Annotations.PmiNoteBuilder = Nothing
pmiNoteBuilder1 = workPart.Annotations.CreatePmiNoteBuilder(nullNXOpen_Annotations_SimpleDraftingAid)
pmiNoteBuilder1.Origin.Anchor = NXOpen.Annotations.OriginBuilder.AlignmentPosition.MidCenter
pmiNoteBuilder1.Text.TextBlock.SetText(text1)
pmiNoteBuilder1.Style.LetteringStyle.GeneralTextSize = (.125)
pmiNoteBuilder1.Origin.Plane.PlaneMethod = NXOpen.Annotations.PlaneBuilder.PlaneMethodType.ModelView
Dim assocOrigin1 As NXOpen.Annotations.Annotation.AssociativeOriginData = Nothing
assocOrigin1.OriginType = NXOpen.Annotations.AssociativeOriginType.Drag
Dim nullNXOpen_View As NXOpen.View = nullNXOpen_View
pmiNoteBuilder1.Origin.Origin.SetValue(Nothing, nullNXOpen_View, myCursor)
Dim nXObject1 As NXOpen.NXObject = pmiNoteBuilder1.Commit()
pmiNoteBuilder1.Destroy()
associativeText1.Dispose()
End Sub
End Module