Sim77Son
Mechanical
- Aug 4, 2012
- 18
Hello,
I have an script in NX 8 for creating a note in a section of a drawing. It works like this, you make a section in the drawing through the springs in the assembly, then start the script.
The script ask for an edge to select, select an edge of a spring in the section view it creates a note with the info of the spring (see attached picture). This works very well.
But now in NX 10 I can`t select any edges in the section view, there are only drafting splines.
This is the script:
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.Drawings
Imports NXOpen.UF
Imports NXOpenUI
Imports NXOpen.Utilities
Imports NXOpen.Annotations
Module AttributeNote
Dim s As Session = Session.GetSession()
Dim ui As UI = UI.GetUI()
Dim ufs As UFSession = UFSession.GetUFSession()
' start dim standard block
Dim workPart As Part = s.Parts.Work
Dim NXmodule As Integer = 0
'ende Dim Standard Block
Dim comp As NXObject = Nothing
Sub Main()
'standard block Zeichnungserstellung
If s.Parts.Work Is Nothing Then
System.Windows.Forms.MessageBox.Show("Kein Teil geladen! - No Part Loaded!")
Exit Sub
End If
ufs.UF.AskApplicationModule(NXmodule)
If NXmodule <> UFConstants.UF_APP_DRAFTING Then
System.Windows.Forms.MessageBox.Show("reine Zeichnungsfunktion")
Exit Sub
End If
'ENDE StandardBlock
Dim vname As String = ""
Dim viewTag As Tag = Tag.Null
Dim aView As View
Dim partname As String = ""
Dim edge As Edge = Nothing
Dim cursor As Point3d
Dim screenpos As Point3d
BEGINE:
If select_an_edge_in_view("Kante auswaehlen", edge, cursor, vname) <> Selection.Response.Ok Then GoTo end1
' Get component data to get part attributes
If edge.IsOccurrence() Then
comp = edge.OwningComponent
end if
ufs.Ui.AskLastPickedView(vname)
ufs.View.AskTagOfViewName(vname, viewTag)
aView = NXObjectManager.Get(viewTag)
If SelectPoint(screenpos) <> Selection.Response.Ok Then GoTo end1
' Create the note
CreateNote(edge, cursor, screenpos, aView)
Goto BEGINE
end1:
End Sub
Function select_an_edge_in_view(ByVal prompt As String, ByRef obj As Edge, ByRef cursor As Point3d, _
ByRef vname As String) As Selection.Response
Dim ui As UI = ui.GetUI()
Dim mask(0) As Selection.MaskTriple
With mask(0)
.Type = UFConstants.UF_solid_type
.Subtype = UFConstants.UF_solid_body_subtype
.SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_ANY_EDGE
End With
ufs.Ui.SetCursorView(0)
Dim resp As Selection.Response = _
ui.SelectionManager.SelectObject("Attribute Note Creation", prompt, _
Selection.SelectionScope.AnyInAssembly, _
Selection.SelectionAction.ClearAndEnableSpecific, _
False, False, mask, obj, cursor)
If resp = Selection.Response.ObjectSelected Or _
resp = Selection.Response.ObjectSelectedByName Then
Return Selection.Response.Ok
Else
Return Selection.Response.Cancel
End If
End Function
Function SelectPoint(ByRef screenpos As Point3d) As Selection.Response
Dim displayPart As Part = s.Parts.Display
Dim baseView1 As View = s.Parts.Work.Views.WorkView
Dim point As Double() = {0.0, 0.0, 0.0}
Dim point2 As Double() = {0.0, 0.0}
Dim response As Integer = 0
Dim viewTag As Tag = Nothing
Dim viewType As UFView.Type = Nothing
Dim aView As View = Nothing
Dim viewSubtype As UFView.Subtype = Nothing
ufs.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
ufs.Ui.SetCursorView(1)
Try
ufs.Ui.SpecifyScreenPosition("Position für den Hinweis", Nothing, IntPtr.Zero, point, _
viewTag, response)
Finally
ufs.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try
If (response <> NXOpen.UF.UFConstants.UF_UI_PICK_RESPONSE) Then Return Selection.Response.Cancel
screenpos.X = point(0)
screenpos.Y = point(1)
screenpos.Z = point(2)
Return Selection.Response.Ok
End Function
Function CreateNote(ByRef edge As Edge, ByRef Cursor As Point3d, ByRef screenpos As Point3d, _
ByRef aView As View) As Boolean
Dim nullView As View = Nothing
Dim draftingNoteBuilder1 As Annotations.DraftingNoteBuilder
Dim nullAnnotations_SimpleDraftingAid As Annotations.SimpleDraftingAid = Nothing
draftingNoteBuilder1 = s.Parts.Work.Annotations.CreateDraftingNoteBuilder (nullAnnotations_SimpleDraftingAid)
draftingNoteBuilder1.Origin.SetInferRelativeToGeometry(True)
draftingNoteBuilder1.Origin.Anchor = Annotations.OriginBuilder.AlignmentPosition.MidCenter
Dim text1(3) As String
text1(0) = "<W!" & comp.Tag.tostring & "@" & "MW_STOCK_SIZE" & ">"
text1(1) = "<W!" & comp.Tag.tostring & "@" & "Sv" & ">"
text1(2) = "<W!" & comp.Tag.tostring & "@" & "Se" & ">"
text1(3) = "<W!" & comp.Tag.tostring & "@" & "R" & ">"
draftingNoteBuilder1.Text.TextBlock.SetText(text1)
Dim leaderData1 As Annotations.LeaderData
leaderData1 = s.Parts.Work.Annotations.CreateLeaderData()
draftingNoteBuilder1.Leader.Leaders.Append(leaderData1)
leaderData1.Leader.SetValue(edge, aView, Cursor)
draftingNoteBuilder1.Origin.Origin.SetValue(Nothing, nullView, screenpos)
Dim nXObject1 As NXObject
nXObject1 = draftingNoteBuilder1.Commit()
draftingNoteBuilder1.Destroy()
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
I have an script in NX 8 for creating a note in a section of a drawing. It works like this, you make a section in the drawing through the springs in the assembly, then start the script.
The script ask for an edge to select, select an edge of a spring in the section view it creates a note with the info of the spring (see attached picture). This works very well.
But now in NX 10 I can`t select any edges in the section view, there are only drafting splines.
This is the script:
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.Drawings
Imports NXOpen.UF
Imports NXOpenUI
Imports NXOpen.Utilities
Imports NXOpen.Annotations
Module AttributeNote
Dim s As Session = Session.GetSession()
Dim ui As UI = UI.GetUI()
Dim ufs As UFSession = UFSession.GetUFSession()
' start dim standard block
Dim workPart As Part = s.Parts.Work
Dim NXmodule As Integer = 0
'ende Dim Standard Block
Dim comp As NXObject = Nothing
Sub Main()
'standard block Zeichnungserstellung
If s.Parts.Work Is Nothing Then
System.Windows.Forms.MessageBox.Show("Kein Teil geladen! - No Part Loaded!")
Exit Sub
End If
ufs.UF.AskApplicationModule(NXmodule)
If NXmodule <> UFConstants.UF_APP_DRAFTING Then
System.Windows.Forms.MessageBox.Show("reine Zeichnungsfunktion")
Exit Sub
End If
'ENDE StandardBlock
Dim vname As String = ""
Dim viewTag As Tag = Tag.Null
Dim aView As View
Dim partname As String = ""
Dim edge As Edge = Nothing
Dim cursor As Point3d
Dim screenpos As Point3d
BEGINE:
If select_an_edge_in_view("Kante auswaehlen", edge, cursor, vname) <> Selection.Response.Ok Then GoTo end1
' Get component data to get part attributes
If edge.IsOccurrence() Then
comp = edge.OwningComponent
end if
ufs.Ui.AskLastPickedView(vname)
ufs.View.AskTagOfViewName(vname, viewTag)
aView = NXObjectManager.Get(viewTag)
If SelectPoint(screenpos) <> Selection.Response.Ok Then GoTo end1
' Create the note
CreateNote(edge, cursor, screenpos, aView)
Goto BEGINE
end1:
End Sub
Function select_an_edge_in_view(ByVal prompt As String, ByRef obj As Edge, ByRef cursor As Point3d, _
ByRef vname As String) As Selection.Response
Dim ui As UI = ui.GetUI()
Dim mask(0) As Selection.MaskTriple
With mask(0)
.Type = UFConstants.UF_solid_type
.Subtype = UFConstants.UF_solid_body_subtype
.SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_ANY_EDGE
End With
ufs.Ui.SetCursorView(0)
Dim resp As Selection.Response = _
ui.SelectionManager.SelectObject("Attribute Note Creation", prompt, _
Selection.SelectionScope.AnyInAssembly, _
Selection.SelectionAction.ClearAndEnableSpecific, _
False, False, mask, obj, cursor)
If resp = Selection.Response.ObjectSelected Or _
resp = Selection.Response.ObjectSelectedByName Then
Return Selection.Response.Ok
Else
Return Selection.Response.Cancel
End If
End Function
Function SelectPoint(ByRef screenpos As Point3d) As Selection.Response
Dim displayPart As Part = s.Parts.Display
Dim baseView1 As View = s.Parts.Work.Views.WorkView
Dim point As Double() = {0.0, 0.0, 0.0}
Dim point2 As Double() = {0.0, 0.0}
Dim response As Integer = 0
Dim viewTag As Tag = Nothing
Dim viewType As UFView.Type = Nothing
Dim aView As View = Nothing
Dim viewSubtype As UFView.Subtype = Nothing
ufs.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
ufs.Ui.SetCursorView(1)
Try
ufs.Ui.SpecifyScreenPosition("Position für den Hinweis", Nothing, IntPtr.Zero, point, _
viewTag, response)
Finally
ufs.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try
If (response <> NXOpen.UF.UFConstants.UF_UI_PICK_RESPONSE) Then Return Selection.Response.Cancel
screenpos.X = point(0)
screenpos.Y = point(1)
screenpos.Z = point(2)
Return Selection.Response.Ok
End Function
Function CreateNote(ByRef edge As Edge, ByRef Cursor As Point3d, ByRef screenpos As Point3d, _
ByRef aView As View) As Boolean
Dim nullView As View = Nothing
Dim draftingNoteBuilder1 As Annotations.DraftingNoteBuilder
Dim nullAnnotations_SimpleDraftingAid As Annotations.SimpleDraftingAid = Nothing
draftingNoteBuilder1 = s.Parts.Work.Annotations.CreateDraftingNoteBuilder (nullAnnotations_SimpleDraftingAid)
draftingNoteBuilder1.Origin.SetInferRelativeToGeometry(True)
draftingNoteBuilder1.Origin.Anchor = Annotations.OriginBuilder.AlignmentPosition.MidCenter
Dim text1(3) As String
text1(0) = "<W!" & comp.Tag.tostring & "@" & "MW_STOCK_SIZE" & ">"
text1(1) = "<W!" & comp.Tag.tostring & "@" & "Sv" & ">"
text1(2) = "<W!" & comp.Tag.tostring & "@" & "Se" & ">"
text1(3) = "<W!" & comp.Tag.tostring & "@" & "R" & ">"
draftingNoteBuilder1.Text.TextBlock.SetText(text1)
Dim leaderData1 As Annotations.LeaderData
leaderData1 = s.Parts.Work.Annotations.CreateLeaderData()
draftingNoteBuilder1.Leader.Leaders.Append(leaderData1)
leaderData1.Leader.SetValue(edge, aView, Cursor)
draftingNoteBuilder1.Origin.Origin.SetValue(Nothing, nullView, screenpos)
Dim nXObject1 As NXObject
nXObject1 = draftingNoteBuilder1.Commit()
draftingNoteBuilder1.Destroy()
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