Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations IDS on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Journal to Measure Solid Bodies on Certain Layers

Status
Not open for further replies.

ChaseWichert

Mining
Jan 4, 2012
147
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.
Code:
'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
 
Replies continue below

Recommended for you

Status
Not open for further replies.

Part and Inventory Search

Sponsor