[COLOR=blue]Option[/color] [COLOR=blue]Strict[/color] [COLOR=blue]Off[/color]
[COLOR=blue]Imports[/color] System
[COLOR=blue]Imports[/color] NXOpen
[COLOR=blue]Imports[/color] NXOpen.UF
[COLOR=blue]Module[/color] Module1
[COLOR=blue]Dim[/color] theSession [COLOR=blue]As[/color] Session [COLOR=blue]=[/color] Session.GetSession()
[COLOR=blue]Dim[/color] ufs [COLOR=blue]As[/color] UFSession [COLOR=blue]=[/color] UFSession.GetUFSession()
[COLOR=blue]Dim[/color] workPart [COLOR=blue]As[/color] Part [COLOR=blue]=[/color] theSession.Parts.Work
[COLOR=blue]Dim[/color] selObj [COLOR=blue]As[/color] NXObject [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]
[COLOR=blue]Enum[/color] AnalysisType [COLOR=blue]As[/color] [COLOR=blue]Integer[/color]
solidBody [COLOR=blue]=[/color] 1
thinShellSheetBody [COLOR=blue]=[/color] 2
boundedBySheetBodies [COLOR=blue]=[/color] 3
End [COLOR=blue]Enum[/color]
[COLOR=blue]Enum[/color] AnalysisUnits [COLOR=blue]As[/color] [COLOR=blue]Integer[/color]
poundsInches [COLOR=blue]=[/color] 1
poundsFeet [COLOR=blue]=[/color] 2
gramsCm [COLOR=blue]=[/color] 3
kilogramMeter [COLOR=blue]=[/color] 4
End [COLOR=blue]Enum[/color]
[COLOR=blue]Enum[/color] AnalysisAccuracy [COLOR=blue]As[/color] [COLOR=blue]Integer[/color]
useAccuracy [COLOR=blue]=[/color] 1
useRelativeTolerance [COLOR=blue]=[/color] 2
End [COLOR=blue]Enum[/color]
[COLOR=blue]Sub[/color] Main()
[COLOR=blue]Dim[/color] dblAcc_Value(11) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]
[COLOR=blue]Dim[/color] dblMass_Props(46) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]
[COLOR=blue]Dim[/color] dblStats(12) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]
[COLOR=blue]Dim[/color] strOutput [COLOR=blue]As[/color] [COLOR=blue]String[/color] [COLOR=blue]=[/color] ""
[COLOR=blue]If[/color] SelectAComponent("Select a component", selObj) [COLOR=blue]=[/color] Selection.Response.Cancel [COLOR=blue]Then[/color]
[COLOR=blue]Exit[/color] [COLOR=blue]Sub[/color]
End [COLOR=blue]If[/color]
[COLOR=blue]Dim[/color] tagList(0) [COLOR=blue]As[/color] NXOpen.Tag
tagList(0) [COLOR=blue]=[/color] selObj.Tag
dblAcc_Value(0) [COLOR=blue]=[/color] 0.99
ufs.Modl.AskMassProps3d(tagList, 1, AnalysisType.solidBody, AnalysisUnits.poundsInches, 0.0375, AnalysisAccuracy.useAccuracy, dblAcc_Value, dblMass_Props, dblStats)
[COLOR=green]'strOutput = "Surface Area: " & dblMass_Props(0) & vbCrLf[/color]
[COLOR=green]'strOutput = strOutput & "Volume: " & dblMass_Props(1) & vbCrLf[/color]
[COLOR=green]'strOutput = strOutput & "Mass: " & dblMass_Props(2) & vbCrLf[/color]
[COLOR=green]'strOutput = strOutput & "COG: " & dblMass_Props(3) & ", " & dblMass_Props(4) & ", " & dblMass_Props(5) & vbCrLf[/color]
[COLOR=green]'strOutput = strOutput & "Density: " & dblMass_Props(46)[/color]
[COLOR=green]'MsgBox(strOutput, vbOKOnly)[/color]
selObj.OwningComponent.SetAttribute("COG_X", dblMass_Props(3))
selObj.OwningComponent.SetAttribute("COG_Y", dblMass_Props(4))
selObj.OwningComponent.SetAttribute("COG_Z", dblMass_Props(5))
End [COLOR=blue]Sub[/color]
[COLOR=blue]Function[/color] SelectAComponent(ByVal prompt [COLOR=blue]As[/color] String, [COLOR=blue]ByRef[/color] selObj [COLOR=blue]As[/color] NXObject) [COLOR=blue]As[/color] Selection.Response
[COLOR=blue]Dim[/color] theUI [COLOR=blue]As[/color] UI [COLOR=blue]=[/color] UI.GetUI
[COLOR=blue]Dim[/color] title [COLOR=blue]As[/color] [COLOR=blue]String[/color] [COLOR=blue]=[/color] "Select a component"
[COLOR=blue]Dim[/color] includeFeatures [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]
[COLOR=blue]Dim[/color] keepHighlighted [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]
[COLOR=blue]Dim[/color] selAction [COLOR=blue]As[/color] Selection.SelectionAction [COLOR=blue]=[/color] Selection.SelectionAction.ClearAndEnableSpecific
[COLOR=blue]Dim[/color] cursor [COLOR=blue]As[/color] Point3d
[COLOR=blue]Dim[/color] scope [COLOR=blue]As[/color] Selection.SelectionScope [COLOR=blue]=[/color] Selection.SelectionScope.AnyInAssembly
[COLOR=blue]Dim[/color] selectionMask_array(0) [COLOR=blue]As[/color] Selection.MaskTriple
[COLOR=blue]With[/color] selectionMask_array(0)
.Type [COLOR=blue]=[/color] UFConstants.UF_solid_type
.SolidBodySubtype [COLOR=blue]=[/color] UFConstants.UF_UI_SEL_FEATURE_SOLID_BODY
End [COLOR=blue]With[/color]
[COLOR=blue]Dim[/color] resp [COLOR=blue]As[/color] Selection.Response [COLOR=blue]=[/color] theUI.SelectionManager.SelectObject(prompt, title, scope, selAction, includeFeatures, keepHighlighted, selectionMask_array, selObj, cursor)
[COLOR=blue]If[/color] resp [COLOR=blue]=[/color] Selection.Response.ObjectSelected [COLOR=blue]OrElse[/color] resp [COLOR=blue]=[/color] Selection.Response.ObjectSelectedByName [COLOR=blue]Then[/color]
[COLOR=blue]Return[/color] Selection.Response.Ok
[COLOR=blue]Else[/color]
[COLOR=blue]Return[/color] Selection.Response.Cancel
End [COLOR=blue]If[/color]
End [COLOR=blue]Function[/color]
[COLOR=blue]Public[/color] [COLOR=blue]Function[/color] GetUnloadOption(ByVal dummy [COLOR=blue]As[/color] [COLOR=blue]String[/color]) [COLOR=blue]As[/color] [COLOR=blue]Integer[/color]
[COLOR=green]'Unloads the image when the NX session terminates[/color]
GetUnloadOption [COLOR=blue]=[/color] NXOpen.Session.LibraryUnloadOption.AtTermination
End [COLOR=blue]Function[/color]
End [COLOR=blue]Module[/color]