Submitted by Evgeny88 on Sat, 02/03/2018 - 04:02
Forums:
Hello! could you please follow me where I can get ViewLabel name as string Value for the drawing views? Is there any differences of types between sectionview label and detail view for example?
I`ve tried to get the label of view as below, but thats return nothing:
Dim viewlabel As UFDraw.ViewLabelParms = New UFDraw.ViewLabelParms
Dim info As String = viewlabel.view_letter
lw.WriteLine("info: " & info)
'result info:
re: view label
The code below shows how to get some information out of the view label. Post back with any specific questions that you have.
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Module Module1
Sub Main()
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim ufSession As UFSession = ufSession.GetUFSession
Dim lw As ListingWindow = theSession.ListingWindow
lw.Open()
Const undoMarkName As String = "view label size factor"
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
Dim validViewParms As Integer = -1
For Each temp As Drawings.DraftingView In workPart.DraftingViews
lw.WriteLine(temp.Name)
'lw.WriteLine("view label shown: " & temp.Style.General.ViewLabel.ToString)
'lw.WriteLine("scale label shown: " & temp.Style.General.ScaleLabel.ToString)
'lw.WriteLine("")
'if neither the view label nor scale label is shown, skip to next view
If Not (temp.Style.General.ViewLabel Or temp.Style.General.ScaleLabel) Then
Continue For
End If
Dim myLabel As UFDraw.ViewLabelParms = New UFDraw.ViewLabelParms
Dim viewLabelTag As Tag
ufSession.Draw.AskViewLabel(temp.Tag, viewLabelTag)
Dim viewLabelObj As Annotations.Note = Utilities.NXObjectManager.Get(viewLabelTag)
Dim noteText() As String = viewLabelObj.GetText
lw.WriteLine("raw view label text:")
For Each tempLine As String In noteText
lw.WriteLine(tempLine)
Next
lw.WriteLine("")
lw.WriteLine("evaluated label text:")
Dim aT As Annotations.AssociativeText = theSession.Parts.Work.Annotations.CreateAssociativeText
Dim cData As Annotations.ComponentData = theSession.Parts.Work.Annotations.CreateComponentData(viewLabelObj)
For Each tC As Annotations.TextComponent In cData.GetTextComponents
For Each aLine As String In tC.GetText
lw.WriteLine(aT.GetEvaluatedText(viewLabelObj, aLine))
Next
Next
lw.WriteLine("")
validViewParms = ufSession.Draw.AskViewLabelParms(viewLabelTag, myLabel)
If validViewParms = UFConstants.UF_DRAW_invalid_parameter Then
MsgBox("parameters could not be loaded for " & temp.Name)
Continue For
Else
MsgBox("Name: " & temp.Name & vbCrLf & _
"parent type: " & myLabel.parent_label_type.ToString & vbCrLf & _
"type: " & myLabel.GetType.ToString & vbCrLf & _
"parm type: " & myLabel.view_label_parm_type.ToString & vbCrLf & _
"letter format: " & myLabel.letter_format.ToString & vbCrLf & _
"view letter: " & myLabel.view_letter)
End If
'MsgBox("UF_DRAW_invalid_parameter: " & UFConstants.UF_DRAW_invalid_parameter.ToString)
'MsgBox("validViewParms: " & validViewParms.ToString)
'MsgBox("old letter size factor: " & myLabel.letter_size_factor.ToString)
myLabel.letter_size_factor = 1.6
'myLabel.letter_format = UFDraw.ViewLabelLetterFormat.ViewLabelDashedLetter
ufSession.Draw.SetViewLabelParms(viewLabelTag, myLabel)
Next
End Sub
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
view label
Thanks for that piece of code! Based of that, i`ve added function which is comparing input string and view name - if coinsident then return ViewLabel name string!
Public shared Function getViewLabel(Byref ViewName As String) As String
Dim s As Session = Session.GetSession()
Dim ufs As UFSession = UFSession.GetUFSession()
Dim ui As UI = UI.GetUI()
Dim workPart As Part = s.Parts.Work
Dim lw As ListingWindow = s.ListingWindow
Dim validViewParms As Integer = -1
For Each tempView As DraftingView In workPart.DraftingViews
If Not (tempView.Style.General.ViewLabel Or tempView.Style.General.ScaleLabel) Then
Continue For
End If
If tempView.Name = ViewName Then
Dim myLabel As UFDraw.ViewLabelParms = New UFDraw.ViewLabelParms
Dim viewLabelTag As Tag
ufs.Draw.AskViewLabel(tempView.Tag, viewLabelTag)
Dim viewLabelObj As Annotations.Note = Utilities.NXObjectManager.Get(viewLabelTag)
lw.WriteLine("evaluated label text:")
Dim aT As Annotations.AssociativeText = workPart.Annotations.CreateAssociativeText
Dim cData As Annotations.ComponentData = workPart.Annotations.CreateComponentData(viewLabelObj)
For Each tC As Annotations.TextComponent In cData.GetTextComponents For Each aLine As String In tC.GetText lw.WriteLine(aT.GetEvaluatedText(viewLabelObj, aLine))
ViewName = aT.GetEvaluatedText(viewLabelObj, aLine)
Next
Next
lw.WriteLine("")
validViewParms = ufs.Draw.AskViewLabelParms(viewLabelTag, myLabel)
End If
If validViewParms = UFConstants.UF_DRAW_invalid_parameter Then
MsgBox("parameters could not be loaded for " & tempView.Name)
Continue For
End If
Next
Return ViewName
End Function
thanks
E