Code:
' ----------------------------------------------
' Aktuelle BG erfassen
' ----------------------------------------------
Dim BGPart As Part = workPart
Dim BGpartName As String = workPart.Leaf.ToString
ufs.Part.AskPartName(theSession.Parts.Display.Tag, BGpartName)
Dim BGpartNumber As String = ""
Dim BGpartRevision As String = ""
Dim BGpartFileType As String = ""
Dim BGpartFileName As String = ""
ufs.Ugmgr.DecodePartFileName(BGpartName, BGpartNumber, BGpartRevision, BGpartFileType, BGpartFileName)
'Ausgabe.Log(BGpartName + BGpartNumber + BGpartRevision + BGpartFileType + BGpartFileName)
Ausgabe.Log(BGpartName)
' ----------------------------------------------
' Menü: Baugruppen->Komponenten->Neue Komponente erzeugen...
' ----------------------------------------------
Dim markId1 As NXOpen.Session.UndoMarkId
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Create New Component")
theSession.PdmSession().SetDefaultFolder(":Newstuff")
Dim fileNew1 As NXOpen.FileNew
fileNew1 = theSession.Parts.FileNew()
Dim partOperationCreateBuilder1 As NXOpen.PDM.PartOperationCreateBuilder = theSession.PdmSession.CreateCreateOperationBuilder(NXOpen.PDM.PartOperationBuilder.OperationType.Create)
fileNew1.SetPartOperationCreateBuilder(partOperationCreateBuilder1)
partOperationCreateBuilder1.SetOperationSubType(NXOpen.PDM.PartOperationCreateBuilder.OperationSubType.FromTemplate)
fileNew1.TemplateFileName = "@DB/DEIN_TEMPLATE_ITEM_ID/00"
fileNew1.UseBlankTemplate = False
fileNew1.ApplicationName = "ModelTemplate"
fileNew1.Units = NXOpen.Part.Units.Millimeters
fileNew1.RelationType = "master"
fileNew1.UsesMasterModel = "No"
fileNew1.TemplateType = NXOpen.FileNewTemplateType.Item
fileNew1.TemplatePresentationName = "DEIN TEMPLATE NAME"
'fileNew1.ItemType = "DEIN_ITEMTYPE"
fileNew1.Specialization = ""
fileNew1.SetCanCreateAltrep(True)
partOperationCreateBuilder1.SetOperationSubType(NXOpen.PDM.PartOperationCreateBuilder.OperationSubType.FromTemplate)
partOperationCreateBuilder1.SetModelType("master")
partOperationCreateBuilder1.SetAddMaster(False)
partOperationCreateBuilder1.SetItemType("DEIN_ITEMTYPE") 'Desired type here
Dim logicalobjects3() As NXOpen.PDM.LogicalObject
partOperationCreateBuilder1.CreateLogicalObjects(logicalobjects3)
partOperationCreateBuilder1.AutoAssignAttributes(logicalobjects3)
partOperationCreateBuilder1.ValidateLogicalObjectsToCommit()
partOperationCreateBuilder1.CreateSpecificationsForLogicalObjects(logicalobjects3)
fileNew1.Commit()
fileNew1.Destroy()
Dim newPart As Part = theSession.Parts.Work
Dim info As NXObject.AttributeInformation = newPart.GetUserAttribute("DB_PART_NO", NXObject.AttributeType.String, -1)
Dim newPartNo As String = info.StringValue
Dim NewpartName As String = workPart.Leaf.ToString
ufs.Part.AskPartName(theSession.Parts.Display.Tag, NewpartName)
Dim NewpartNumber As String = ""
Dim NewpartRevision As String = ""
Dim NewpartFileType As String = ""
Dim NewpartFileName As String = ""
ufs.Ugmgr.DecodePartFileName(NewpartName, NewpartNumber, NewpartRevision, NewpartFileType, NewpartFileName)
Ausgabe.Log(NewpartName)
' ----------------------------------------------
' Menü: Fenster->zurück in BG wechseln
' ----------------------------------------------
Dim markId2 As NXOpen.Session.UndoMarkId
markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Change Display Part")
Dim partLoadStatus1 As NXOpen.PartLoadStatus
Dim status1 As NXOpen.PartCollection.SdpsStatus
status1 = theSession.Parts.SetDisplay(BGPart, False, True, partLoadStatus1)
workPart = theSession.Parts.Work
displayPart = theSession.Parts.Display
partLoadStatus1.Dispose()
' ----------------------------------------------
' Menü: Baugruppen->Komponenten->Komponente hinzufügen...
' ----------------------------------------------
Dim markId3 As NXOpen.Session.UndoMarkId
markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Add Component")
Dim basePoint1 As NXOpen.Point3d = New NXOpen.Point3d(0.0, 0.0, 0.0)
Dim orientation1 As NXOpen.Matrix3x3
orientation1.Xx = 1.0
orientation1.Xy = 0.0
orientation1.Xz = 0.0
orientation1.Yx = 0.0
orientation1.Yy = 1.0
orientation1.Yz = 0.0
orientation1.Zx = 0.0
orientation1.Zy = 0.0
orientation1.Zz = 1.0
Dim partLoadStatus2 As NXOpen.PartLoadStatus
Dim Newcomponent As NXOpen.Assemblies.Component
Newcomponent = workPart.ComponentAssembly.AddComponent(NewpartName, "DEIN_REF_SET", newPartNo, basePoint1, orientation1, -1, partLoadStatus2, True)
partLoadStatus1.Dispose()
' ----------------------------------------------
' Menü: Neues Part als WorkPart
' ----------------------------------------------
Dim partLoadStatus3 As NXOpen.PartLoadStatus
theSession.Parts.SetWorkComponent(Newcomponent, partLoadStatus1)
workPart = theSession.Parts.Work
partLoadStatus1.Dispose()