Forums:
Hello,
I have Journal for creating CoG Point into NX Modelling.
Everything works well, but I would like to check if the point was created. If the point already exists, I would like to override it by new dimensions (if the geometry change).
Can anyone help me with this?
Thank you in advance for any help
Option Strict Off Imports System Imports System.Collections.Generic Imports NXOpen Imports NXOpen.UF Module Module1 Dim theSession As Session = Session.GetSession() Dim theUfSession As UFSession = UFSession.GetUFSession() Dim lw As ListingWindow = theSession.ListingWindow Dim workPart As Part = theSession.Parts.Work Sub Main() Dim workPart As Part = theSession.Parts.Work lw.Open() Dim max As Integer If workPart.PartUnits = Part.Units.Inches Then max = 10 Else 'metric file max = 250 End If Const undoMarkName As String = "report assembly mass props" Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName) Dim bodyTags As New List(Of Tag) bodyTags = AskAllBodyTags(theSession.Parts.Display) Dim acc_value(10) As Double acc_value(0) = 0.999 Dim mass_props(46) As Double Dim stats(12) As Double Dim acc_value2(10) As Double acc_value2(0) = 0.999 Dim mass_props2(46) As Double Dim stats2(12) As Double If workPart.PartUnits = Part.Units.Inches Then lw.writeline("inches") theUfSession.Modl.AskMassProps3d(bodyTags.ToArray, bodyTags.Count, 1, 1, 0.03, 1, acc_value, mass_props, stats) Else lw.writeline("milimetres") theUfSession.Modl.AskMassProps3d(bodyTags.ToArray, bodyTags.Count, 1, 4, 0.03, 1, acc_value, mass_props, stats) mass_props(3)=mass_props(3)*1000 mass_props(4)=mass_props(4)*1000 mass_props(5)=mass_props(5)*1000 mass_props(2)=mass_props(2)/.45 End If lw.WriteLine("Mass in lbm: " & mass_props(2).ToString & " lbm") lw.WriteLine("Mass in kg: " & (mass_props(2)*0.45).ToString & " kg") lw.WriteLine("Center of Mass:") lw.writeline("X: " & mass_props(3).ToString) lw.writeline("Y: " & mass_props(4).ToString) lw.writeline("Z: " & mass_props(5).ToString) Dim p1 = NXOpen.Session.GetSession.Parts.Work.Points.CreatePoint(New Point3d(mass_props(3), mass_props(4), mass_props(5))) p1.SetVisibility(SmartObject.VisibilityOption.Visible) Dim nullNXOpen_Features_Feature As NXOpen.Features.Feature = Nothing Dim pointFeatureBuilder1 As NXOpen.Features.PointFeatureBuilder = Nothing pointFeatureBuilder1 = workPart.BaseFeatures.CreatePointFeatureBuilder(nullNXOpen_Features_Feature) pointFeatureBuilder1.Point = p1 Const sketchLayer As Integer = 110 Dim displayModification1 As DisplayModification displayModification1 = theSession.DisplayManager.NewDisplayModification() displayModification1.NewLayer = sketchLayer displayModification1.Apply(workPart.Points.ToArray) displayModification1.Dispose() Dim nXObject1 As NXOpen.NXObject = Nothing nXObject1 = pointFeatureBuilder1.Commit() nXObject1.SetName("CoG") pointFeatureBuilder1.Destroy() lw.Close() End Sub Function AskAllBodyTags(ByVal thePart As Part) As List(Of Tag) Dim theBodyTags As New List(Of Tag) Dim aBodyTag As Tag = Tag.Null Do theUfSession.Obj.CycleObjsInPart(thePart.Tag, UFConstants.UF_solid_type, aBodyTag) If aBodyTag = Tag.Null Then Exit Do End If Dim theType As Integer, theSubtype As Integer theUfSession.Obj.AskTypeAndSubtype(aBodyTag, theType, theSubtype) If theSubtype = UFConstants.UF_solid_body_subtype Then Dim bodyType As Integer = 0 theUfSession.Modl.AskBodyType(aBodyTag, bodyType) If bodyType = UFConstants.UF_MODL_SOLID_BODY Then theBodyTags.Add(aBodyTag) End If End If Loop While True Return theBodyTags End Function Public Function GetUnloadOption(ByVal dummy As String) As Integer 'Unloads the image when the NX session terminates GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination End Function End Module