Trying to access the clipboard when recording a journal
Trying to access the clipboard when recording a journal
(OP)
I have a separate bit of software that generates an empty part file, and also copies the part name to the clipboard.
Because the empty part has 'TBC' as it's name in the part attributes table I wish to record a journal that updates this attribute to whatever is saved in the clipboard at the click of a button.
Whenever I try and record the journal it records the end result rather than the actions. I've tried replacing the string in the journal code to Clipboard.GetText() but NX says it doesn't have access to the clipboard. I don't know anything about VBA and I'm kinda just hacking at it. Does anyone here have some pointers?
Because the empty part has 'TBC' as it's name in the part attributes table I wish to record a journal that updates this attribute to whatever is saved in the clipboard at the click of a button.
Whenever I try and record the journal it records the end result rather than the actions. I've tried replacing the string in the journal code to Clipboard.GetText() but NX says it doesn't have access to the clipboard. I don't know anything about VBA and I'm kinda just hacking at it. Does anyone here have some pointers?





RE: Trying to access the clipboard when recording a journal
CODE
Option Strict Off Imports System Imports System.Collections.Generic Imports NXOpen Module Module86 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() If My.Computer.Clipboard.ContainsText Then lw.WriteLine(My.Computer.Clipboard.GetText) Else lw.WriteLine("** clipboard does not contain text **") End If lw.Close() 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 ModuleThe code above works for me (NX 9, Win 7). It displays the text on the clipboard (if any) in the NX information window. If you get an error when running the code, can you post the error text or a screenshot of the error?
www.nxjournaling.com
RE: Trying to access the clipboard when recording a journal
The code you posted works well but I am struggling to apply it to edit the name attribute.
RE: Trying to access the clipboard when recording a journal
CODE
Option Strict Off Imports System Imports NXOpen Module Module8 Dim theSession As Session = Session.GetSession() Sub Main() 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() Const attributeName As String = "TEST" Dim attributeInfo As NXObject.AttributeInformation Dim testVal As String If workPart.HasUserAttribute(attributeName, NXObject.AttributeType.String, -1) Then EditPartStringAttribute(attributeName, My.Computer.Clipboard.GetText) Else lw.WriteLine("the work part does not have a number attribute named: " & attributeName) End If lw.Close() End Sub Sub EditPartStringAttribute(ByVal attName As String, ByVal attValue As String) Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "update name attribute") Dim workPart As Part = theSession.Parts.Work Dim objects1(0) As NXObject objects1(0) = workPart Dim attributePropertiesBuilder1 As AttributePropertiesBuilder attributePropertiesBuilder1 = theSession.AttributeManager.CreateAttributePropertiesBuilder(workPart, objects1, AttributePropertiesBuilder.OperationType.None) attributePropertiesBuilder1.DataType = AttributePropertiesBaseBuilder.DataTypeOptions.String attributePropertiesBuilder1.Title = attName attributePropertiesBuilder1.IsArray = False attributePropertiesBuilder1.StringValue = attValue Dim nXObject1 As NXObject nXObject1 = attributePropertiesBuilder1.Commit() Dim nErrs1 As Integer nErrs1 = theSession.UpdateManager.DoUpdate(markId1) attributePropertiesBuilder1.Destroy() 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 Modulewww.nxjournaling.com