NX drawing simple/stepped section line

Hello there,
I am new to this forum. Nice work here and I need help. In NX drawing, the cross-sectional appearance name is "THIN". I want to change the appearance of all sections within the page to "NORMAL". The letters I want to change are next to arrows in cross-section. Do you have a journel for this, or can you help me to create one?

help me please

metin önder

Try out the code below. When run in a part, it should make all the section line labels normal width. It makes use of a class that I wrote some time ago that helps to find the labels given a section view.

Option Strict Off
Imports System
Imports System.Collections.Generic
Imports NXOpen
Imports NXOpen.UF
 
Module line_label_width
 
    Dim theSession As Session = Session.GetSession()
    Dim theUfSession As UFSession = UFSession.GetUFSession()
    Dim lw As ListingWindow = theSession.ListingWindow
 
    Dim workPart As Part = theSession.Parts.Work
 
    Sub Main()
 
        If IsNothing(theSession.Parts.BaseWork) Then
            'active part required
            Return
        End If
 
        lw.Open()
 
        Const undoMarkName As String = "find section line labels"
        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
 
        Dim sectionLineLabels As New List(Of Annotations.Annotation)
 
        For Each temp As Drawings.DraftingView In workPart.DraftingViews
 
            If TypeOf (temp) Is Drawings.SectionView Then
 
                Dim myLabels As New NXJ_findSectionLineLabels(temp)
 
                'lw.WriteLine("view: " & temp.Name)
                'lw.WriteLine("parent view: " & myLabels.SectionViewParent.Name)
                'lw.WriteLine("section line tag: " & myLabels.SectionLine.Tag.ToString)
 
                'lw.WriteLine("label1 tag: " & myLabels.SectionLineLabel1.Tag)
                'lw.WriteLine("label1 value: " & EvaluateText(myLabels.SectionLineLabel1))
 
                'myLabels.SectionLineLabel1.Highlight()
                'theSession.Parts.Display.DrawingSheets.CurrentDrawingSheet.View.UpdateDisplay()
                'MsgBox("label1 tag: " & myLabels.SectionLineLabel1.Tag)
                'myLabels.SectionLineLabel1.Unhighlight()
                'theSession.Parts.Display.DrawingSheets.CurrentDrawingSheet.View.UpdateDisplay()
 
                'lw.WriteLine("label2 tag: " & myLabels.SectionLineLabel2.Tag)
                'lw.WriteLine("label2 value: " & EvaluateText(myLabels.SectionLineLabel2))
 
                'lw.WriteLine("")
 
                If Not IsNothing(myLabels.SectionLineLabel1) Then
                    MakeLabelNormalWidth(myLabels.SectionLineLabel1)
                End If
 
                If Not IsNothing(myLabels.SectionLineLabel2) Then
                    MakeLabelNormalWidth(myLabels.SectionLineLabel2)
                End If
 
            End If
 
            'lw.WriteLine("")
        Next
 
        lw.Close()
 
    End Sub
 
    Sub MakeLabelNormalWidth(ByVal theAnnotation As Annotations.Annotation)
 
        Dim editSettingsBuilder1 As Annotations.EditSettingsBuilder
        editSettingsBuilder1 = workPart.SettingsManager.CreateAnnotationEditSettingsBuilder({theAnnotation})
 
        Dim editsettingsbuilders1(0) As Drafting.BaseEditSettingsBuilder
        editsettingsbuilders1(0) = editSettingsBuilder1
        workPart.SettingsManager.ProcessForMutipleObjectsSettings(editsettingsbuilders1)
 
        editSettingsBuilder1.AnnotationStyle.LetteringStyle.GeneralTextLineWidth = Annotations.LineWidth.Normal
 
        Dim nXObject1 As NXObject
        nXObject1 = editSettingsBuilder1.Commit()
 
        editSettingsBuilder1.Destroy()
 
 
    End Sub
 
    Function EvaluateText(ByVal someNote As Annotations.Note) As String
 
        Dim aT As Annotations.AssociativeText = theSession.Parts.Work.Annotations.CreateAssociativeText()
        Dim cData As Annotations.ComponentData = theSession.Parts.Work.Annotations.CreateComponentData(someNote)
 
        For Each tC As Annotations.TextComponent In cData.GetTextComponents
            Return aT.GetEvaluatedText(someNote, tC.GetText(0))
        Next
 
        Return Nothing
 
    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
 
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Public Class NXJ_findSectionLineLabels
 
#Region "Private variables"
    Private _theSession As Session = Session.GetSession
    Private _theUfSession As UFSession = UFSession.GetUFSession()
    Private lg As LogFile = _theSession.LogFile
 
    Private _annotationMap As New Dictionary(Of Tag, Annotations.Note)
    Private _sectionLineSegmentCurveTags As New List(Of Tag)
 
#End Region
 
#Region "Properties"
 
    Private _theSectionLine As Drawings.SectionLine = Nothing
    Public ReadOnly Property SectionLine() As Drawings.SectionLine
        Get
            Return _theSectionLine
        End Get
    End Property
 
    Private _theSectionView As Drawings.SectionView = Nothing
    Public ReadOnly Property SectionView() As Drawings.SectionView
        Get
            Return _theSectionView
        End Get
    End Property
 
    Private _sectionLineLabel1 As Annotations.Note = Nothing
    Public ReadOnly Property SectionLineLabel1() As Annotations.Note
        Get
            Return _sectionLineLabel1
        End Get
    End Property
 
    Private _sectionLineLabel2 As Annotations.Note = Nothing
    Public ReadOnly Property SectionLineLabel2() As Annotations.Note
        Get
            Return _sectionLineLabel2
        End Get
    End Property
 
    Private _sectionViewParent As Drawings.DraftingView = Nothing
    Public ReadOnly Property SectionViewParent() As Drawings.DraftingView
        Get
            Return _sectionViewParent
        End Get
    End Property
 
 
#End Region
 
#Region "Public methods"
 
    Public Sub New(ByVal someSectionView As Drawings.SectionView)
 
        _theSectionView = someSectionView
        _theSectionLine = GetSectionLine(_theSectionView)
 
        Me.GetSectionLineLabels()
 
    End Sub
 
    Public Sub New(ByVal someSectionLine As Drawings.SectionLine)
 
        _theSectionLine = someSectionLine
        _theSectionView = GetSectionView(someSectionLine)
 
        Me.GetSectionLineLabels()
 
    End Sub
 
#End Region
 
#Region "Private methods"
 
    Private Sub GetSectionLineLabels()
 
        Me.CreateAnnotationMap()
        _sectionLineSegmentCurveTags = SectionLineSegmentCurveTags(_theSectionLine.Tag)
 
        If Not _sectionLineSegmentCurveTags.Count = 2 Then
            Exit Sub
        End If
 
        If _annotationMap.ContainsKey(_sectionLineSegmentCurveTags.Item(0)) Then
            _sectionLineLabel2 = _annotationMap.Item(_sectionLineSegmentCurveTags.Item(0))
        End If
 
        If _annotationMap.ContainsKey(_sectionLineSegmentCurveTags.Item(1)) Then
            _sectionLineLabel1 = _annotationMap.Item(_sectionLineSegmentCurveTags.Item(1))
        End If
 
    End Sub
 
    Private Sub CreateAnnotationMap()
 
        For Each temp As Annotations.Note In _theSession.Parts.Display.Notes
 
            If temp.HasAssociativeOrigin Then
                Dim pt As Point3d
                Dim originData As Annotations.Annotation.AssociativeOriginData
                originData = temp.GetAssociativeOrigin(pt)
 
                lg.WriteLine("  note associativity type: " & originData.OriginType.ToString)
 
                If originData.OriginType = Annotations.AssociativeOriginType.RelativeToGeometry Then
                    Dim geoPt As Point = originData.PointOnGeometry
                    Dim smartParent As TaggedObject
                    smartParent = GetSmartParent(geoPt, 0)
 
                    If Not IsNothing(smartParent) Then
                        _annotationMap.Add(smartParent.Tag, temp)
                    End If
                End If
            End If
 
        Next
 
    End Sub
 
    Private Function GetSmartParent(ByRef theSmartObject As NXObject, ByVal indent As Integer) As TaggedObject
 
        Dim numParents As Integer
        Dim theParentTags() As Tag = Nothing
        Dim isSmart As Boolean = False
 
        Try
            _theUfSession.So.IsSo(theSmartObject.Tag, isSmart)
            If isSmart Then
                _theUfSession.So.AskParents(theSmartObject.Tag, UFConstants.UF_SO_ASK_ALL_PARENTS, numParents, theParentTags)
 
                lg.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)
 
                    Return objParent
 
                    'lg.WriteLine(New String(" "c, indent) & "parent type: " & objParent.GetType.ToString)
                    'lg.WriteLine(New String(" "c, indent) & "parent tag: " & objParent.Tag.ToString)
 
                Next
 
                lg.WriteLine("")
 
            End If
 
            Return Nothing
 
        Catch ex As NXException
            lg.WriteLine("error: " & ex.ErrorCode)
            lg.WriteLine("  " & ex.Message)
            Return Nothing
        End Try
 
    End Function
 
    Private Function GetSectionLine(ByVal sxView As Drawings.SectionView) As Drawings.SectionLine
 
        Dim sectionLineTag As Tag = Tag.Null
        _theUfSession.Draw.AskSxlineOfSxview(sxView.Tag, sectionLineTag)
 
        Dim theSectionLine As Drawings.SectionLine
        theSectionLine = Utilities.NXObjectManager.Get(sectionLineTag)
 
        Return theSectionLine
 
    End Function
 
    Private Function GetSectionView(ByVal sxLine As Drawings.SectionLine) As Drawings.SectionView
 
        For Each temp As Drawings.DraftingView In _theSession.Parts.Display.DraftingViews
            If TypeOf (temp) Is Drawings.SectionView Then
                Dim tempLine As Drawings.SectionLine
                tempLine = GetSectionLine(temp)
                If tempLine.Tag = sxLine.Tag Then
                    Return temp
                End If
            End If
        Next
 
        Return Nothing
 
    End Function
 
 
    Private Function SectionLineSegmentCurveTags(ByVal sectionLineTag As Tag) As List(Of Tag)
 
        Dim sectionLineType As UFDraw.SxlineType
        _theUfSession.Draw.AskSxlineType(sectionLineTag, sectionLineType)
 
        Dim stepDir(2) As Double
        Dim arrowDir(2) As Double
        Dim parentViewTag As Tag = Tag.Null
        Dim numSxViews As Integer
        Dim sxViewTags() As Tag = Nothing
        Dim numSegments As Integer
        Dim segmentTags() As Tag = Nothing
        Dim status As UFDraw.SxlineStatus
        Dim rotationPtObj As UFDrf.Object = Nothing
        Dim numLeg1Segments As Integer
        Dim cutPlaneLeg As UFDraw.SxlineLeg
 
        Dim returnTags As New List(Of Tag)
 
        Select Case sectionLineType
            Case Is = UFDraw.SxlineType.SimpleSxline
                _theUfSession.Draw.AskSimpleSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.SteppedSxline
                _theUfSession.Draw.AskSteppedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.RevolvedSxline
                _theUfSession.Draw.AskRevolvedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, rotationPtObj, numSxViews, sxViewTags, numSegments, numLeg1Segments, cutPlaneLeg, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.HalfSxline
                _theUfSession.Draw.AskHalfSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.UnfoldedSxline
                _theUfSession.Draw.AskUnfoldedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.FoldedSxline
                Return Nothing
 
            Case Is = UFDraw.SxlineType.Breakline
                'the view with the break is the section view itself
                Return Nothing
 
        End Select
 
        'find the parent view
        If Not parentViewTag = Tag.Null Then
            _sectionViewParent = Utilities.NXObjectManager.Get(parentViewTag)
        End If
 
        'get the underlying curve tag from the segment
        For Each temp As Tag In segmentTags
            Dim segInfo As UFDraw.SxsegInfo
            Dim curveTag As Tag = Tag.Null
            Dim obj() As UFDrf.Object = Nothing
            _theUfSession.Draw.AskSxlineSxseg(temp, segInfo, curveTag, obj)
 
            If segInfo.sxseg_type = UFDraw.SxsegType.SxsegArrow Then
                'labels are associated to the arrow segments
                returnTags.Add(curveTag)
            End If
        Next
 
        Return returnTags
 
    End Function
 
#End Region
 
End Class

Hello there,
First of all thank you for your help. I have to say ahead of time I am using NX 8.0. The macro you are sending gives the following error. Could you help me with the topic?

Dim editSettingsBuilder1 As Annotations.EditSettingsBuilder

metin önder

It seems the Annotations.EditSettingsBuilder is only available in NX 9 or later. The code below does not use the .EditSettingsBuilder. I do not have NX 8 installed to test with, but it did work on NX 8.5.

Option Strict Off
Imports System
Imports System.Collections.Generic
Imports NXOpen
Imports NXOpen.UF
 
Module line_label_width_85
 
    Dim theSession As Session = Session.GetSession()
    Dim theUfSession As UFSession = UFSession.GetUFSession()
    Dim lw As ListingWindow = theSession.ListingWindow
 
    Dim workPart As Part = theSession.Parts.Work
 
    Sub Main()
 
        If IsNothing(theSession.Parts.BaseWork) Then
            'active part required
            Return
        End If
 
        lw.Open()
 
        Const undoMarkName As String = "find section line labels"
        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
 
        Dim sectionLineLabels As New List(Of Annotations.Annotation)
 
        For Each temp As Drawings.DraftingView In workPart.DraftingViews
 
            If TypeOf (temp) Is Drawings.SectionView Then
 
                Dim myLabels As New NXJ_findSectionLineLabels(temp)
 
                'lw.WriteLine("view: " & temp.Name)
                'lw.WriteLine("parent view: " & myLabels.SectionViewParent.Name)
                'lw.WriteLine("section line tag: " & myLabels.SectionLine.Tag.ToString)
 
                'lw.WriteLine("label1 tag: " & myLabels.SectionLineLabel1.Tag)
                'lw.WriteLine("label1 value: " & EvaluateText(myLabels.SectionLineLabel1))
 
                'myLabels.SectionLineLabel1.Highlight()
                'theSession.Parts.Display.DrawingSheets.CurrentDrawingSheet.View.UpdateDisplay()
                'MsgBox("label1 tag: " & myLabels.SectionLineLabel1.Tag)
                'myLabels.SectionLineLabel1.Unhighlight()
                'theSession.Parts.Display.DrawingSheets.CurrentDrawingSheet.View.UpdateDisplay()
 
                'lw.WriteLine("label2 tag: " & myLabels.SectionLineLabel2.Tag)
                'lw.WriteLine("label2 value: " & EvaluateText(myLabels.SectionLineLabel2))
 
                'lw.WriteLine("")
 
                If Not IsNothing(myLabels.SectionLineLabel1) Then
                    MakeLabelNormalWidth(myLabels.SectionLineLabel1)
                End If
 
                If Not IsNothing(myLabels.SectionLineLabel2) Then
                    MakeLabelNormalWidth(myLabels.SectionLineLabel2)
                End If
 
            End If
 
            'lw.WriteLine("")
        Next
 
        lw.Close()
 
    End Sub
 
    Sub MakeLabelNormalWidth(ByVal theAnnotation As Annotations.Annotation)
 
        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Edit Object Preferences")
 
        Dim letteringPreferences1 As Annotations.LetteringPreferences
        letteringPreferences1 = theAnnotation.GetLetteringPreferences()
 
        Dim generalText1 As Annotations.Lettering
        generalText1.Size = letteringPreferences1.GetGeneralText.Size
        generalText1.CharacterSpaceFactor = letteringPreferences1.GetGeneralText.CharacterSpaceFactor
        generalText1.AspectRatio = letteringPreferences1.GetGeneralText.AspectRatio
        generalText1.LineSpaceFactor = letteringPreferences1.GetGeneralText.LineSpaceFactor
        generalText1.Cfw.Color = letteringPreferences1.GetGeneralText.Cfw.Color
        generalText1.Cfw.Font = letteringPreferences1.GetGeneralText.Cfw.Font
        generalText1.Cfw.Width = Annotations.LineWidth.Normal
        generalText1.Italic = letteringPreferences1.GetGeneralText.Italic
        letteringPreferences1.SetGeneralText(generalText1)
 
        theAnnotation.SetLetteringPreferences(letteringPreferences1)
 
        letteringPreferences1.Dispose()
        Dim nErrs1 As Integer
        nErrs1 = theSession.UpdateManager.DoUpdate(markId1)
 
 
    End Sub
 
    Function EvaluateText(ByVal someNote As Annotations.Note) As String
 
        Dim aT As Annotations.AssociativeText = theSession.Parts.Work.Annotations.CreateAssociativeText()
        Dim cData As Annotations.ComponentData = theSession.Parts.Work.Annotations.CreateComponentData(someNote)
 
        For Each tC As Annotations.TextComponent In cData.GetTextComponents
            Return aT.GetEvaluatedText(someNote, tC.GetText(0))
        Next
 
        Return Nothing
 
    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
 
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Public Class NXJ_findSectionLineLabels
 
#Region "Private variables"
    Private _theSession As Session = Session.GetSession
    Private _theUfSession As UFSession = UFSession.GetUFSession()
    Private lg As LogFile = _theSession.LogFile
 
    Private _annotationMap As New Dictionary(Of Tag, Annotations.Note)
    Private _sectionLineSegmentCurveTags As New List(Of Tag)
 
#End Region
 
#Region "Properties"
 
    Private _theSectionLine As Drawings.SectionLine = Nothing
    Public ReadOnly Property SectionLine() As Drawings.SectionLine
        Get
            Return _theSectionLine
        End Get
    End Property
 
    Private _theSectionView As Drawings.SectionView = Nothing
    Public ReadOnly Property SectionView() As Drawings.SectionView
        Get
            Return _theSectionView
        End Get
    End Property
 
    Private _sectionLineLabel1 As Annotations.Note = Nothing
    Public ReadOnly Property SectionLineLabel1() As Annotations.Note
        Get
            Return _sectionLineLabel1
        End Get
    End Property
 
    Private _sectionLineLabel2 As Annotations.Note = Nothing
    Public ReadOnly Property SectionLineLabel2() As Annotations.Note
        Get
            Return _sectionLineLabel2
        End Get
    End Property
 
    Private _sectionViewParent As Drawings.DraftingView = Nothing
    Public ReadOnly Property SectionViewParent() As Drawings.DraftingView
        Get
            Return _sectionViewParent
        End Get
    End Property
 
 
#End Region
 
#Region "Public methods"
 
    Public Sub New(ByVal someSectionView As Drawings.SectionView)
 
        _theSectionView = someSectionView
        _theSectionLine = GetSectionLine(_theSectionView)
 
        Me.GetSectionLineLabels()
 
    End Sub
 
    Public Sub New(ByVal someSectionLine As Drawings.SectionLine)
 
        _theSectionLine = someSectionLine
        _theSectionView = GetSectionView(someSectionLine)
 
        Me.GetSectionLineLabels()
 
    End Sub
 
#End Region
 
#Region "Private methods"
 
    Private Sub GetSectionLineLabels()
 
        Me.CreateAnnotationMap()
        _sectionLineSegmentCurveTags = SectionLineSegmentCurveTags(_theSectionLine.Tag)
 
        If Not _sectionLineSegmentCurveTags.Count = 2 Then
            Exit Sub
        End If
 
        If _annotationMap.ContainsKey(_sectionLineSegmentCurveTags.Item(0)) Then
            _sectionLineLabel2 = _annotationMap.Item(_sectionLineSegmentCurveTags.Item(0))
        End If
 
        If _annotationMap.ContainsKey(_sectionLineSegmentCurveTags.Item(1)) Then
            _sectionLineLabel1 = _annotationMap.Item(_sectionLineSegmentCurveTags.Item(1))
        End If
 
    End Sub
 
    Private Sub CreateAnnotationMap()
 
        For Each temp As Annotations.Note In _theSession.Parts.Display.Notes
 
            If temp.HasAssociativeOrigin Then
                Dim pt As Point3d
                Dim originData As Annotations.Annotation.AssociativeOriginData
                originData = temp.GetAssociativeOrigin(pt)
 
                lg.WriteLine("  note associativity type: " & originData.OriginType.ToString)
 
                If originData.OriginType = Annotations.AssociativeOriginType.RelativeToGeometry Then
                    Dim geoPt As Point = originData.PointOnGeometry
                    Dim smartParent As TaggedObject
                    smartParent = GetSmartParent(geoPt, 0)
 
                    If Not IsNothing(smartParent) Then
                        _annotationMap.Add(smartParent.Tag, temp)
                    End If
                End If
            End If
 
        Next
 
    End Sub
 
    Private Function GetSmartParent(ByRef theSmartObject As NXObject, ByVal indent As Integer) As TaggedObject
 
        Dim numParents As Integer
        Dim theParentTags() As Tag = Nothing
        Dim isSmart As Boolean = False
 
        Try
            _theUfSession.So.IsSo(theSmartObject.Tag, isSmart)
            If isSmart Then
                _theUfSession.So.AskParents(theSmartObject.Tag, UFConstants.UF_SO_ASK_ALL_PARENTS, numParents, theParentTags)
 
                lg.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)
 
                    Return objParent
 
                    'lg.WriteLine(New String(" "c, indent) & "parent type: " & objParent.GetType.ToString)
                    'lg.WriteLine(New String(" "c, indent) & "parent tag: " & objParent.Tag.ToString)
 
                Next
 
                lg.WriteLine("")
 
            End If
 
            Return Nothing
 
        Catch ex As NXException
            lg.WriteLine("error: " & ex.ErrorCode)
            lg.WriteLine("  " & ex.Message)
            Return Nothing
        End Try
 
    End Function
 
    Private Function GetSectionLine(ByVal sxView As Drawings.SectionView) As Drawings.SectionLine
 
        Dim sectionLineTag As Tag = Tag.Null
        _theUfSession.Draw.AskSxlineOfSxview(sxView.Tag, sectionLineTag)
 
        Dim theSectionLine As Drawings.SectionLine
        theSectionLine = Utilities.NXObjectManager.Get(sectionLineTag)
 
        Return theSectionLine
 
    End Function
 
    Private Function GetSectionView(ByVal sxLine As Drawings.SectionLine) As Drawings.SectionView
 
        For Each temp As Drawings.DraftingView In _theSession.Parts.Display.DraftingViews
            If TypeOf (temp) Is Drawings.SectionView Then
                Dim tempLine As Drawings.SectionLine
                tempLine = GetSectionLine(temp)
                If tempLine.Tag = sxLine.Tag Then
                    Return temp
                End If
            End If
        Next
 
        Return Nothing
 
    End Function
 
 
    Private Function SectionLineSegmentCurveTags(ByVal sectionLineTag As Tag) As List(Of Tag)
 
        Dim sectionLineType As UFDraw.SxlineType
        _theUfSession.Draw.AskSxlineType(sectionLineTag, sectionLineType)
 
        Dim stepDir(2) As Double
        Dim arrowDir(2) As Double
        Dim parentViewTag As Tag = Tag.Null
        Dim numSxViews As Integer
        Dim sxViewTags() As Tag = Nothing
        Dim numSegments As Integer
        Dim segmentTags() As Tag = Nothing
        Dim status As UFDraw.SxlineStatus
        Dim rotationPtObj As UFDrf.Object = Nothing
        Dim numLeg1Segments As Integer
        Dim cutPlaneLeg As UFDraw.SxlineLeg
 
        Dim returnTags As New List(Of Tag)
 
        Select Case sectionLineType
            Case Is = UFDraw.SxlineType.SimpleSxline
                _theUfSession.Draw.AskSimpleSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.SteppedSxline
                _theUfSession.Draw.AskSteppedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.RevolvedSxline
                _theUfSession.Draw.AskRevolvedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, rotationPtObj, numSxViews, sxViewTags, numSegments, numLeg1Segments, cutPlaneLeg, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.HalfSxline
                _theUfSession.Draw.AskHalfSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.UnfoldedSxline
                _theUfSession.Draw.AskUnfoldedSxline(sectionLineTag, stepDir, arrowDir, parentViewTag, numSxViews, sxViewTags, numSegments, segmentTags, status)
 
            Case Is = UFDraw.SxlineType.FoldedSxline
                Return Nothing
 
            Case Is = UFDraw.SxlineType.Breakline
                'the view with the break is the section view itself
                Return Nothing
 
        End Select
 
        'find the parent view
        If Not parentViewTag = Tag.Null Then
            _sectionViewParent = Utilities.NXObjectManager.Get(parentViewTag)
        End If
 
        'get the underlying curve tag from the segment
        For Each temp As Tag In segmentTags
            Dim segInfo As UFDraw.SxsegInfo
            Dim curveTag As Tag = Tag.Null
            Dim obj() As UFDrf.Object = Nothing
            _theUfSession.Draw.AskSxlineSxseg(temp, segInfo, curveTag, obj)
 
            If segInfo.sxseg_type = UFDraw.SxsegType.SxsegArrow Then
                'labels are associated to the arrow segments
                returnTags.Add(curveTag)
            End If
        Next
 
        Return returnTags
 
    End Function
 
#End Region
 
End Class

thank you. it will be very useful. Is there a way to find Datums locations on the drawing page

metin önder

What type of datums are you looking for? Can you give an example of what you want to do?

Hello there,
I put it on the drawing page on the drawing sheet. Datum Feature I want to find out what grid is in the grid by reading the letters and numbers on the page and automatically print a cell in tabular note.

metin önder

Hello there,
I put it on the drawing page on the drawing page. I want to find out what grid is in the grid by reading the letters and digits of the Datum Feature Symbols on the page and automatically print a cell in tabular note.

metin önder

I'm going to assume that we are talking about GD&T datums; if I'm wrong, please clarify.

The code in the following thread:
http://nxjournaling.com/comment/1458#comment-1458

will report the drawing sheet zone of a given dimension object. The code could be modified to accept other annotation objects (such as datums).

Hello there,
I used this page more macros before, but NX8.0 gave an error. "Three" is not a member of 'NXOpen.Annotations.LineWidth'
I could not solve it, so I asked for help. The first macros of the page works without errors, but it does not give anything as a result. I can not comment anymore in this topic.

metin önder

Additional questions,
drawing page, I can find detail-cross-section appearance names and bold, but I do not select the notes in the page when I encounter a problem but when the leader is added to the notes, it looks like a note label and is doing macro onuda bold. can I help you in this matter by making the cross-section look letters bold? Here's the code I'm using.

Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports System.Windows.Forms
Imports NXOpen.Annotations
Imports NXOpen.Utilities
Imports System.Collections.Generic

' NX Font Update
' Journal created by Alto on 20-05-2015

Module NXJournal
Dim ufs As UFSession = UFSession.GetUFSession()
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display
Sub Main()
Dim fontIndex1 As Integer
fontIndex1 = workPart.Fonts.AddFont("latin_extended")

'Update Note Dimension
For Each note1 As Annotations.Note In workPart.Notes

Next

'Update Special Notes of BE
For Each note2 As Annotations.Note In workPart.Notes

Dim Text1(0) As String
Text1 = note2.GetText

If Text1(0) = "" Then

ElseIf Text1(0).Contains("SX_SEG") Then

Dim lineAndArrowPreferences7 As Annotations.LineAndArrowPreferences
lineAndArrowPreferences7 = note2.GetLineAndArrowPreferences()

Dim letteringPreferences7 As Annotations.LetteringPreferences
letteringPreferences7 = note2.GetLetteringPreferences()

Dim generalText2 As Annotations.Lettering
generalText2.Size = 10
generalText2.CharacterSpaceFactor = 1.0
generalText2.AspectRatio = 1.0
generalText2.LineSpaceFactor = 1.0
generalText2.Cfw.Color = 80
generalText2.Cfw.Font = fontIndex1
generalText2.Cfw.Width = Annotations.LineWidth.Normal
letteringPreferences7.SetGeneralText(generalText2)

note2.SetLetteringPreferences(letteringPreferences7)
note2.RedisplayObject()

End If

Next

'Update Label Font for all the Labels not letter size factor

Dim NULL_TAG As NXOpen.Tag = NXOpen.Tag.Null
Dim obj As NXOpen.Tag = NULL_TAG

Do
obj = ask_next_drf_entity(obj)
If obj = NULL_TAG Then
GoTo end1
End If
' Check whether returned Tag is UF_draft_label_subtype
Dim type As Integer = Nothing
Dim subtype As Integer = Nothing
ufs.Obj.AskTypeAndSubtype(obj, type, subtype)
Dim nxobj As NXObject = NXObjectManager.Get(obj)
If nxobj.GetType().ToString() <> "NXOpen.Annotations.Label" Then
Continue Do
ElseIf nxobj.GetType().ToString() <> "NXOpen.Annotations.Labelonparent" Then
Dim Label1 As Annotations.Label = nxobj
Dim letteringPreferences7 As Annotations.LetteringPreferences
letteringPreferences7 = Label1.GetLetteringPreferences()

Dim generalText5 As Annotations.Lettering
generalText5.Size = 5
generalText5.CharacterSpaceFactor = 1.0
generalText5.AspectRatio = 1.0
generalText5.LineSpaceFactor = 1.0
generalText5.Cfw.Color = 80
generalText5.Cfw.Font = fontIndex1
generalText5.Cfw.Width = Annotations.LineWidth.Normal
letteringPreferences7.SetGeneralText(generalText5)
Label1.SetLetteringPreferences(letteringPreferences7)
letteringPreferences7.Dispose()

Label1.RedisplayObject()
Continue Do

End If

Loop Until obj = NULL_TAG
End1:

End Sub

Function FindTabularNotes(ByRef theTabNotes As List(Of Tag)) As Integer

Dim tmpTabNote As NXOpen.Tag = NXOpen.Tag.Null
Dim type As Integer
Dim subtype As Integer

Do
ufs.Obj.CycleObjsInPart(workPart.Tag, UFConstants.UF_tabular_note_type, tmpTabNote)
If tmpTabNote = NXOpen.Tag.Null Then
Continue Do
End If
If tmpTabNote <> NXOpen.Tag.Null Then
ufs.Obj.AskTypeAndSubtype(tmpTabNote, type, subtype)
If subtype = UFConstants.UF_tabular_note_subtype Then

theTabNotes.Add(tmpTabNote)

End If
End If
Loop Until tmpTabNote = NXOpen.Tag.Null

Return theTabNotes.Count

End Function

Public Function ask_next_drf_entity(ByRef obj As NXOpen.Tag) As NXOpen.Tag
Dim part As NXOpen.Tag = workPart.Tag
ufs.Obj.CycleObjsInPart(part, UFConstants.UF_drafting_entity_type, obj)
Return obj
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

metin önder

Hello there,
I am using NX 8.0. I want to find the Datum Feature symbols (A - B - C), the GD & T symbol on the drawing page, and write a cell on the tabular note. I'm waiting for emergency help, help me out of the loop.

additional question,
Do we have the final appearance name (AA - AB - AC - AD) on the drawing page and print it on a cell in a tabular note?

please

metin önder

Can you explain clearly what it is that you are trying to accomplish? Based on your last few posts, it sounds like you are working with section view labels, datum callouts, and tabular notes; but I don't have a clear idea what you want to do with them.

hello
My english is not very good. For this reason, if you can upload files to the page I would like to prepare a pdf and mark it on it. If you have Yada mail address, I can send that adrese. please show me a way to solve this problem urgently

metin önder

I maintain this site in my spare time; if you have an urgent need, I suggest that you contact your reseller or GTAC for quick resolution.

Hello there,
Can we find Datum feature symbols on the Drawing page and get annotation style properties? character size 10, I need a journale to change the font normally. can you help me?

You should be able to find all the datum feature symbols in the .Gdts collection. Once you have a reference to a datum feature symbol, you can adjust the appearance as needed.

for each temp as Annotations.DraftingDatum in workPart.Annotations.Gdts
    'update appearance
next

please

please

Hello,
Thank you for your help. I do not know what line to add to the code you sent me because I am new to journal. can you organize and send the software in a way that will be used to me as a recital?