Journal to Measure Solid Bodies on Certain Layers
Journal to Measure Solid Bodies on Certain Layers
(OP)
Okay, so I am on NX 7.5.5.4, and I have written a journal to go through all objects and if it is a solid body on a certain set of layers it will take the mass measure. However, it isn't getting all of the bodies, it is seemingly random on the bodies it is measuring. All of the bodies are either linked into my assembly model or are modeled in. Sorry there isn't a lot of commenting done yet.
This is the config file
And this is the Layer Import File
CODE --> VB
'NX 7.5.5.4
'Journal created by cdwicher on Thur April 11 01:20:00 Pacific Daylight Time
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.UI
Imports System.IO
Imports System.Windows.Forms
Module Module1
Sub Main()
Dim theSession As Session = Session.GetSession()
Dim WorkPart As Part = theSession.Parts.Work
Dim DisplayPart As Part = theSession.Parts.Display
Dim MarkId1 As Session.UndoMarkId = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Update Session")
Dim ufs As UFSession = UFSession.GetUFSession()
Dim filewrite As System.IO.StreamWriter
filewrite = My.Computer.FileSystem.OpenTextFileWriter("C:\Users\cdwicher\Desktop\Debug.txt", False)
filewrite.AutoFlush = True
'Read in Configuration File
Dim TempStreamRead As StreamReader = File.OpenText("C:\Users\cdwicher\Desktop\WeightMeasureConfig.txt")
Dim TempWeightCategories() As String = TempStreamRead.ReadToEnd().Split(Chr(10))
TempStreamRead.Close()
Dim WeightCategories(0) As String
Dim WeightMultiplier(0) As String
'Filter Unnecessary information from file Import
Dim a As Integer
Dim b As Integer = 0
For a = 0 To TempWeightCategories.GetUpperBound(0)
If String.Compare(TempWeightCategories(a), "EOF") <> 0 Then
If String.Compare(Left(TempWeightCategories(a), 1), "'") <> 0 Then
Dim tempsplit() As String = TempWeightCategories(a).Split(",")
ReDim Preserve WeightCategories(0 To b)
WeightCategories(b) = tempsplit(0).Trim
ReDim Preserve WeightMultiplier(0 To b)
WeightMultiplier(b) = tempsplit(1).Trim
b = b + 1
Else
End If
Else
Exit For
End If
Next
'Read in Layer Config File
TempStreamRead = File.OpenText("C:\Users\cdwicher\Desktop\Bucket LayersCSV.csv")
Dim tempLayerRead() As String = TempStreamRead.ReadToEnd().Split(Chr(10))
TempStreamRead.Close()
'Filter and sort Layer config File
Dim WeightLayers(-1) As String
Dim WeightLayerCategory(-1) As String
For a = 0 To tempLayerRead.GetUpperBound(0)
Dim tempsplit() As String = tempLayerRead(a).Split(",")
If tempsplit.Length > 1 Then
ReDim Preserve WeightLayers(0 To a)
WeightLayers(a) = tempsplit(1).Trim
ReDim Preserve WeightLayerCategory(0 To a)
WeightLayerCategory(a) = tempsplit(2).Trim
End If
Next
Dim Mass(WeightLayerCategory.Length - 1) As String
For a = 0 To WeightCategories.Length - 1
b = -1
Dim c As Integer = 0
Dim templayerlist(-1) As String
For b = 0 To WeightLayers.Length - 1
If String.Compare(WeightCategories(a), WeightLayerCategory(b)) = 0 Then
ReDim Preserve templayerlist(0 To c)
templayerlist(c) = WeightLayers(b)
'MsgBox("Matched")
'MsgBox(templayerlist(c))
filewrite.WriteLine(templayerlist(c))
c = c + 1
End If
Next
Dim d As Integer = 0
Dim templayerobjects(-1) As NXObject
Dim e As Integer = 1
Dim layerobjects(-1) As NXObject
'This loop finds objects on layers in templayerlist and stores them in layerobjects
For d = 0 To templayerlist.Length - 1
Try
templayerobjects = WorkPart.Layers.GetAllObjectsOnLayer(templayerlist(d))
Catch ex As Exception
End Try
If templayerobjects.Length <> 0 Then
For z As Integer = 0 To templayerobjects.Length - 1
ReDim Preserve layerobjects(0 To layerobjects.Length)
layerobjects(layerobjects.Length - 1) = templayerobjects(z)
z = z + 1
Next
End If
Next
Dim tempbodyobjects(-1) As Body
Dim g As Integer = 0
Dim f As Integer = 0
If layerobjects.Length <> 0 Then
For f = 0 To layerobjects.Length - 1
Try
ReDim Preserve tempbodyobjects(0 To tempbodyobjects.Length)
tempbodyobjects(g) = CType(layerobjects(f), Body)
g = g + 1
Catch ex As Exception
End Try
Next
Dim tempsolidobjects(-1) As Body
g = 0
For f = 0 To tempbodyobjects.Length - 1
Try
If tempbodyobjects(f).IsSolidBody Then
ReDim Preserve tempsolidobjects(0 To tempsolidobjects.Length)
tempsolidobjects(g) = tempbodyobjects(f)
g = g + 1
End If
Catch ex As Exception
End Try
Next
If tempsolidobjects.Length = 0 Then
Mass(a) = 0
Else
For i As Integer = 0 To tempsolidobjects.Length - 1
tempsolidobjects(i).Unblank()
Next
Dim solidtag(-1) As NXOpen.Tag
MsgBox(tempsolidobjects.Length)
For f = 0 To tempsolidobjects.Length - 1
If tempsolidobjects.Length = 0 Then
Else
ReDim Preserve solidtag(0 To solidtag.Length)
solidtag(solidtag.Length - 1) = tempsolidobjects(f).Tag
End If
Next
Dim massprops(46) As Double
Dim massstat(12) As Double
Dim accvalue(11) As Double
accvalue(0) = 0.99
ufs.Modl.AskMassProps3d(solidtag, solidtag.Length, 1, 1, 0.0375, 1, accvalue, massprops, massstat)
Mass(a) = massprops(2)
End If
End If
Next
a = 0
Dim lw As ListingWindow = theSession.ListingWindow
lw.Open()
For a = 0 To Mass.Length - 1
lw.WriteLine(Mass(a))
Next
filewrite.Close()
End Sub
End Module This is the config file
CODE
'Bare Bucket Weights,Multiplification Factor 'Bare Bucket Center x1 BBC,1 'Bare Bucket Left x2 BBL,2 'Bare Bucket Right x1 BBR,1 '------------------------------------------- 'Pins & Locks Weights,Multiplication Factor 'Pins&Locks Left x2 PLL,2 'Pins and Locks Anchor Bracket x1 PLLAB,1 'Pins and Locks Anchor Bracket x1 PLRAB,1 '------------------------------------------- 'Inside Wear Protection,Multiplication Factor 'Center x1 IWPC,1 'Left x2 IWPL,2 '------------------------------------------- 'Outside Wear Protection,Multiplication Factor 'Center x1 OWPC,1 'Left x2 OWPL,2 '------------------------------------------- 'Shrouds,Multiplaction Factor 'All Shrouds x1 SHR,1 '------------------------------------------- 'All GET x1 'GET,Multiplcation Factor GET,1 ' ' EOF
And this is the Layer Import File
CODE
-Volume Body and Measure,1-5,NONE Vol Struck Body,1,NONE Vol Rated Body,2,NONE Vol Struck Measurement,3,NONE Vol Rated Measurement,4,NONE Vol CIMA Cube,5,NONE Insert Category Name Here,6,NONE Insert Category Name Here,7,NONE Insert Category Name Here,8,NONE Insert Category Name Here,9,NONE -Structural Plates,10-39,NONE Plate Bottom Primary,10,BBC Plate Bottom Secondary,11,BBC Plate Bottom Transition,12,BBC Plate Back,13,BBC Plate Back Top Stiffener,14,BBC Plate Front Side Left,15,BBL Plate Front Side Right,16,NONE Plate Trunnion Side Left,17,BBL Plate Trunnion Side Right,18,NONE Plate Back Side Left,19,BBL Plate Back Side Right,20,NONE Plate Top Side Left,21,BBL Plate Top Side Right,22,NONE Plate Cheek Stiffener Left,23,BBL Plate Cheek Stiffener Right,24,NONE Plate Gusset Front Top Left,25,BBL Plate Gusset Front Top Right,26,NONE Plate Gusset Back Top Left,27,BBL Plate Gusset Back Top Right,28,NONE Plate Gusset Front Btm Left,29,BBL Plate Gusset Front Btm Right,30,NONE Plate Gusset Back Btm Left,31,BBL Plate Gusset Back Btm Right,32,NONE Plate Rub Rail Side Left,33,BBL Plate Rub Rail Side Right,34,NONE Plate Bottom Corner Left,35,BBL Plate Bottom Corner Right,36,NONE Insert Category Name Here,37,NONE Insert Category Name Here,38,NONE Insert Category Name Here,39,NONE Insert Category Name Here,40,NONE Insert Category Name Here,41,NONE Insert Category Name Here,42,NONE Insert Category Name Here,43,NONE Insert Category Name Here,44,NONE -Dress Castings,45-46,NONE Name Plate Left,45,BBL Name Plate Right,46,NONE -Dress Plates,47-49,NONE Plate ESCO Blade Left,47,BBL Plate ESCO Blade Right,48,NONE Insert Category Name Here,49,NONE -Drawing,50-59,NONE Insert Category Name Here,50,NONE Insert Category Name Here,51,NONE Insert Category Name Here,52,NONE Insert Category Name Here,53,NONE Insert Category Name Here,54,NONE Insert Category Name Here,55,NONE Insert Category Name Here,56,NONE Insert Category Name Here,57,NONE Insert Category Name Here,58,NONE Insert Category Name Here,59,NONE -Linked Bodies,60-69,NONE Pin Trunnion Left,60,PLL Pin Trunnion Right,61,NONE Pin Hitch Hardware Left,62,PLL Pin Hitch Hardware Right,63,NONE Pin Anchor Hardware Left,64,PLLAB Pin Anchor Hardware Right,65,PLRAB Insert Category Name Here,66,NONE Insert Category Name Here,67,NONE Insert Category Name Here,68,NONE Insert Category Name Here,69,NONE -Liner Plates,70-89,NONE Insert Category Name Here,70,NONE Insert Category Name Here,71,NONE Insert Category Name Here,72,NONE Insert Category Name Here,73,NONE Insert Category Name Here,74,NONE Insert Category Name Here,75,NONE Insert Category Name Here,76,NONE Insert Category Name Here,77,NONE Insert Category Name Here,78,NONE Insert Category Name Here,79,NONE Insert Category Name Here,80,NONE Insert Category Name Here,81,NONE Insert Category Name Here,82,NONE Insert Category Name Here,83,NONE Insert Category Name Here,84,NONE Insert Category Name Here,85,NONE Insert Category Name Here,86,NONE Insert Category Name Here,87,NONE Insert Category Name Here,88,NONE Insert Category Name Here,89,NONE -Wear Plates,90-119,NONE Bottom Wear Plates,90,OWPC Trunnion Protection LH,91,OWPL Trunnion Protection RH,92,NONE Corner Wear Plates LH,93,OWPL Corner Wear Plates RH,94,NONE Insert Category Name Here,95,NONE Insert Category Name Here,96,NONE Insert Category Name Here,97,NONE Insert Category Name Here,98,NONE Insert Category Name Here,99,NONE Insert Category Name Here,100,NONE Insert Category Name Here,101,NONE Insert Category Name Here,102,NONE Insert Category Name Here,103,NONE Insert Category Name Here,104,NONE Insert Category Name Here,105,NONE Insert Category Name Here,106,NONE Insert Category Name Here,107,NONE Insert Category Name Here,108,NONE Insert Category Name Here,109,NONE Insert Category Name Here,110,NONE Insert Category Name Here,111,NONE Insert Category Name Here,112,NONE Insert Category Name Here,113,NONE Insert Category Name Here,114,NONE Insert Category Name Here,115,NONE Insert Category Name Here,116,NONE Insert Category Name Here,117,NONE Insert Category Name Here,118,NONE Insert Category Name Here,119,NONE Insert Category Name Here,120,NONE Insert Category Name Here,121,NONE Insert Category Name Here,122,NONE Insert Category Name Here,123,NONE Insert Category Name Here,124,NONE Insert Category Name Here,125,NONE Insert Category Name Here,126,NONE Insert Category Name Here,127,NONE Insert Category Name Here,128,NONE Insert Category Name Here,129,NONE -Curves,130-139,NONE Insert Category Name Here,130,NONE Insert Category Name Here,131,NONE Insert Category Name Here,132,NONE Insert Category Name Here,133,NONE Insert Category Name Here,134,NONE Insert Category Name Here,135,NONE Insert Category Name Here,136,NONE Insert Category Name Here,137,NONE Insert Category Name Here,138,NONE Insert Category Name Here,139,NONE -Components,140-148,NONE Cmp Front End Ring Castings,140,NONE Cmp Basket Castings,141,NONE Cmp Trunnion Hardware,142,NONE Cmp Anchor Hardware,143,NONE Cmp Hitch Hardware,144,NONE Cmp Plates,145,NONE Insert Category Name Here,146,NONE Insert Category Name Here,147,NONE Insert Category Name Here,148,NONE -Assembly Constraints,149,NONE -Sketches,150-169,NONE Skt Struck Volume,150,NONE Skt Bottom Plate,151,NONE Skt Transition Plate,152,NONE Skt Back Plate,153,NONE Skt Back Stiffener Plate,154,NONE Skt Side Plate,155,NONE Skt Side Gusset Plates,156,NONE Skt Bottom Corner Plate,157,NONE Skt Cheek Stiffener Plate,158,NONE Skt Trim Objects,159,NONE Skt Liner Plate,160,NONE Skt Wear Plate,161,NONE Insert Category Name Here,162,NONE Insert Category Name Here,163,NONE Insert Category Name Here,164,NONE Insert Category Name Here,165,NONE Insert Category Name Here,166,NONE Insert Category Name Here,167,NONE Analysis,168-169,NONE Insert Category Name Here,168,NONE Insert Category Name Here,169,NONE -Flat Patterns,170-199,NONE FP Bottom Plate Primary,170,NONE FP Bottom Plate,171,NONE FP Bottom Transition Plate,172,NONE FP Back Plate,173,NONE FP Back Top Stiffener Plate,174,NONE FP Front Side Plate Left,175,NONE FP Front Side Plate Right,176,NONE FP Trunnion Side Plate,177,NONE FP Back Side Plate Left,178,NONE FP Back Side Plate Right,179,NONE FP Top Side Plate Left,180,NONE FP Top Side Plate Right,181,NONE FP Cheek Stiffener Plate Left,182,NONE FP Cheek Stiffener Plate Right,183,NONE FP Gusset Front Top,184,NONE FP Gusset Back Top,185,NONE FP Gusset Front Bottom,186,NONE FP Gusset Back Bottom,187,NONE FP Rub Rail Side Plate Left,188,NONE FP Rub Rail Side Plate Right,189,NONE FP Bottom Corner Plate,190,NONE Insert Category Name Here,191,NONE Insert Category Name Here,192,NONE Insert Category Name Here,193,NONE Insert Category Name Here,194,NONE Insert Category Name Here,195,NONE Insert Category Name Here,196,NONE Insert Category Name Here,197,NONE Insert Category Name Here,198,NONE Insert Category Name Here,199,NONE -Datum Planes,200-209,NONE Absolute Coordinate System,200,NONE Insert Category Name Here,201,NONE Insert Category Name Here,202,NONE Insert Category Name Here,203,NONE Insert Category Name Here,204,NONE Insert Category Name Here,205,NONE Insert Category Name Here,206,NONE Insert Category Name Here,207,NONE Insert Category Name Here,208,NONE Sketch Planes,209,NONE Insert Category Name Here,210,NONE Insert Category Name Here,211,NONE Insert Category Name Here,212,NONE Insert Category Name Here,213,NONE Insert Category Name Here,214,NONE Insert Category Name Here,215,NONE Insert Category Name Here,216,NONE Insert Category Name Here,217,NONE Insert Category Name Here,218,NONE Insert Category Name Here,219,NONE -Locator Objects,220-221,NONE Location Objects,220,NONE Location Outline Curves,221,NONE -Measurement Objects,222,NONE -Trim Objects,223,NONE Insert Category Name Here,224,NONE Insert Category Name Here,225,NONE Insert Category Name Here,226,NONE -Castings,227-256,NONE Front End Ring Castings,227-236,NONE Cst Shrouds,227,SHR Cst GET - Adptr/Pnt,228,GET Cst Lip,229,BBC Cst Cheek Left,230,BBL Cst Cheek Right,231,NONE Cst Cheek Extension Left,232,BBL Cst Cheek Extension Right,233,NONE Cst Arch Left,234,BBL Cst Arch Right,235,NONE Cst Arch Center,236,BBC Basket Castings,237-249,NONE Cst Bottom Crnr/Ext Left,237,BBL Cst Bottom Crnr/Ext Right,238,NONE Cst Trunnion left,239,BBL Cst Trunnion Right,240,NONE Cst Back Corners Left,241,BBL Cst Back Corners Right,242,NONE Cst Top Corner Left,243,BBL Cst Top Corner Right,244,NONE Cst Side Top Rails Left,245,BBL Cst Side Top Rails Right,246,NONE Cst Back Top Rail Left,247,BBL Cst Back Top Rail Right,248,NONE Cst Back Top Rail Center,249,BBC Cst Cheek Wear Shoe Left,250,BBL Cst Cheek Wear Shoe Right,251,NONE Cst Heel Wear Shoe Left,252,BBL Cst Heel Wear Shoe Right,253,NONE Cst Anchor Left,254,BBL Cst Anchor Right,255,BBR Insert Category Name Here,256,NONE





RE: Journal to Measure Solid Bodies on Certain Layers
http://www.eng-tips.com/viewthread.cfm?qid=321704