Option Strict Off Imports NXOpen Imports NXOpen.UF Imports NXOpen.Assemblies Imports System Module Create_Component Dim theSession As Session = Session.GetSession() Dim ufsSession As UFSession = UFSession.GetUFSession() Dim objects() As NXOpen.Tag Dim inx As Integer = 0 Sub Main 'Test ob Part geladen if theSession.Parts.Work is Nothing Then Windows.Forms.MessageBox.Show("Kein Part geladen!") Exit Sub End If Dim parent_part As Tag = theSession.Parts.Work.Tag Dim Partname, refset_name, instance_name As String Dim origin As Double() = {0, 0, 0} Dim csys_matrix As Double() = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0} Dim n_objects, Layer As Integer Dim instance As NXOpen.Tag Dim units As Integer = 1 Dim PartnamePrompt As String = "Bitte Partnamen eingeben" Dim PartnameCaption As String = "Partname?" Dim PartnameInitialText As String = "new_Component" Dim PartnameNXInputBox As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox() Dim LayerPrompt As String = "Orig.Layer = -1 | Work Layer = 0 | Spec.Layer = 0-255" Dim LayerCaption As String = "Auf welchen Layer?" Dim LayerInitialNumber As String = "-1" Dim LayerNXInputBox As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox() 'Partnamen erfragen ufsSession.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) Try Partname = PartnameNXInputBox.GetInputString(PartnamePrompt, PartnameCaption, PartnameInitialText) ufsSession.Abort.DisableAbort() Finally ufsSession.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) End Try 'Layer-Nummer erfragen ufsSession.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) Try Layer = LayerNXInputBox.GetInputNumber(LayerPrompt, LayerCaption, LayerInitialNumber) ufsSession.Abort.DisableAbort() Finally ufsSession.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) End Try 'Bodies fuer Component auswahlen While selBodies(objects) = Selection.Response.Ok End While Dim i As Integer For i = 0 To inx - 1 ufsSession.Disp.SetHighlight(objects(i), 0) Next i n_objects = objects.Length 'Component erzeugen ufsSession.Assem.CreateComponentPart(parent_part, Partname, refset_name, instance_name, units, Layer, origin, csys_matrix, n_objects, objects, instance) End Sub Function selBodies(ByRef body() As NXOpen.Tag) As Selection.Response Dim message As String Dim title As String = "Select a body" Dim scope As Integer = UFConstants.UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY Dim response As Integer Dim view As NXOpen.Tag Dim ip As UFUi.SelInitFnT = AddressOf mask_for_body ufsSession.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) Try ufsSession.Ui.SelectWithClassDialog(message, title, scope, ip, Nothing, response, inx, objects) Finally ufsSession.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM) End Try If response <> UFConstants.UF_UI_OBJECT_SELECTED And response <> UFConstants.UF_UI_OBJECT_SELECTED_BY_NAME Then Return Selection.Response.Cancel Else Return Selection.Response.Ok End If End Function Function mask_for_body(ByVal select_ As IntPtr, ByVal userdata As IntPtr) As Integer Dim num_triples As Integer = 1 Dim mask_triples(0) As UFUi.Mask mask_triples(0).object_type = UFConstants.UF_solid_type mask_triples(0).object_subtype = UFConstants.UF_solid_body_subtype mask_triples(0).solid_type = UFConstants.UF_UI_SEL_FEATURE_BODY ufsSession.Ui.SetSelMask(select_, UFUi.SelMaskAction.SelMaskClearAndEnableSpecific, num_triples, mask_triples) Return UFConstants.UF_UI_SEL_SUCCESS End Function Public Function GetUnloadOption(ByVal dummy As String) As Integer GetUnloadOption = UFConstants.UF_UNLOAD_IMMEDIATELY End Function End Module