Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

How to identify parts that are having different properties applied in different Contexts?

Status
Not open for further replies.

MFDO

Mechanical
Aug 10, 2005
217
In an Assembly BOM, how could I distinguish the items which are having different values in different Contexts?

At assembly level it’s possible to apply values in Context to Component, Instance, Reference Set and Part. The problem is, the values entered at part level are over ridden by Assembly level Context=”Component” (by default), which gives undesired results in the BOM. How could I clearly see the driving context of each cell item of the BOM?

Ex: “Size” attribute entered at the part level is overridden by Assembly Property applied in context to “Component” (By Default). There could be some few parts with this unwanted behaviour (especially in a cloned design) and what is the best way to catch those culprits?


Michael Fernando (CSWE)
Tool and Die Designer
Siemens NX V9.0 + PDW
SWX 2013 SP3.0 X64
PDMWorks 2013
Logopress3
FastForm Advance
FormatWorks
 
Replies continue below

Recommended for you

I know of no definitive method for checking to see if the values of the Attributes as seen at the Component level, which is what controls what appears in the Assembly Parts List, have been overridden (somewhere between the Part and the Component level) or not using a built-in function. The best that one can do would be while in the context of the Assembly, select the component(s) of interest, press MB3, select Properties -> Attributes and then from the 'Export' section of the dialog, select the 'Export Attributes to Information Window'. Without closing the listing window, repeats this for all four levels; Component, Instance, Reference Set and Part. Once you have a complete listing you could visually check the 'history' of the value of the Attribute(s) of interest as you moved from Part thru Component. Now I guess it could be possible to write some NX Open application which would automate this process of comparing the values at the four levels and flagging any apparent changes between these levels.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Digital Factory
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.
 
When you look at the attributes of a component (or part, instance, etc), look at the "inherited" column. The inherited column may be empty or show one of two icons: a tag (indicating the attribute has been inherited and overridden) or a tag with a small green arrow/triangle in the upper left corner (indicating that the attribute value is being inherited from somewhere else).

MFDO said:
The problem is, the values entered at part level are over ridden by Assembly level Context=”Component” (by default)
Some attributes get inherited by default (components inherit the part attributes and values by default) but I know of no attributes that get overridden by default. To override an attribute, you must supply a new value to an inherited attribute. To remove the "override" value, select the attribute and press the delete button*; the overridden value will disappear and it will return to the "inherited" status and value.

* the graphical "delete" button in the dialog, not the delete button on the keyboard.

www.nxjournaling.com
 
Yes, cowski is correct; I had forgotten about the 'Inherited' column in the Attribute 'navigator'. Note that you can also use the 'Inherited' column to determine at what level was an attribute originally ADDED. If there is NO notation whatsoever in the 'Inherited' column than that indicates that this particular attribute was actually created new at this level.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Digital Factory
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.
 
Cowski, I mean that some components’ attributes were entered at assembly level with the setting Context=>Apply to= Components (Default) unintentionally. If the default was changed to “Part” every time then would have got the desired value in the BOM.

The question is how to find those components with undesired values. John, I don’t think the method you suggest is a practical. (I’m not a fortune teller to identify the Components with problematic attributes by looking at the BOM :) )

Could we change the default = “Part”?


Michael Fernando (CSWE)
Tool and Die Designer
Siemens NX V9.0 + PDW
SWX 2013 SP3.0 X64
PDMWorks 2013
Logopress3
FastForm Advance
FormatWorks
 
default = “Part” is not the solution but will reduce future mistakes.

Michael Fernando (CSWE)
Tool and Die Designer
Siemens NX V9.0 + PDW
SWX 2013 SP3.0 X64
PDMWorks 2013
Logopress3
FastForm Advance
FormatWorks
 
Here's a rough journal that may help.

Code:
Option Strict Off

Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.Assemblies

Module Module1

    Public theSession As Session = Session.GetSession()
    Public ufs As UFSession = UFSession.GetUFSession()
    Public lw As ListingWindow = theSession.ListingWindow

    Sub Main()
        Dim workPart As Part = theSession.Parts.Work
        Dim dispPart As Part = theSession.Parts.Display

        lw.Open()

        lw.WriteLine("component attributes overriding the part attribute value:")
        lw.WriteLine("")

        Try
            Dim c As ComponentAssembly = dispPart.ComponentAssembly
            If Not IsNothing(c.RootComponent) Then
                reportComponentChildren(c.RootComponent, 0)
            Else
                '*** insert code to process piece part
                lw.WriteLine("Part has no components")
            End If
        Catch e As Exception
            theSession.ListingWindow.WriteLine("Failed: " & e.ToString)
        End Try

        lw.WriteLine("component processing complete")

        lw.Close()

    End Sub

    Sub reportComponentChildren(ByVal comp As Component, _
        ByVal indent As Integer)

        For Each child As Component In comp.GetChildren()
            '*** insert code to process component or subassembly
            lw.WriteLine(New String(" ", indent * 2) & child.DisplayName())

            Dim userAttInfo() As NXObject.AttributeInformation = child.GetUserAttributes
            For Each temp As NXObject.AttributeInformation In userAttInfo
                If IsAttributeOverridden(child, temp) Then
                    lw.WriteLine(New String(" ", indent * 2) & "attribute title: " & temp.Title)

                End If
            Next
            lw.WriteLine("")
            reportComponentChildren(child, indent + 1)
        Next
    End Sub

    Function IsAttributeOverridden(ByVal theComp As Component, ByVal theAttribute As NXObject.AttributeInformation) As Boolean

        'if "inherited" = false, the attribute may be original to the component or it is overridden
        'if the component's parent (part) has the same attribute, it must be overridden
        'otherwise it must be new to the component

        Dim thePart As Part = theComp.Prototype.OwningPart
        Dim isOverridden As Boolean = False

        If Not theAttribute.Inherited Then
            If theAttribute.Array Then
                isOverridden = thePart.HasUserAttribute(theAttribute.Title, theAttribute.Type, theAttribute.ArrayElementIndex)
            Else
                isOverridden = thePart.HasUserAttribute(theAttribute.Title, theAttribute.Type, -1)
            End If

        End If

        Return isOverridden

    End Function

    Public Function GetUnloadOption(ByVal dummy As String) As Integer
        Return Session.LibraryUnloadOption.Immediately
    End Function

End Module

www.nxjournaling.com
 
Thanks Cowski for your efforts.

May be I should consider an ER for this issue.

Michael Fernando (CSWE)
Tool and Die Designer
Siemens NX V9.0 + PDW
SWX 2013 SP3.0 X64
PDMWorks 2013
Logopress3
FastForm Advance
FormatWorks
 
GTAC said:
Your recent call to the Global Technical Access Center, Incident Report (IR)
Number 7352185 opened on 07-APR-2015, has been researched by our GTAC
software engineers. They have determined that this issue should be
reviewed for possible enhancement to the current software functionality.


This IR was converted into an enhancement request (ER) on 08-APR-2015
and is now referenced as ER Number 7352185. It is OPEN for review at this time.

Michael Fernando (CSWE)
Tool and Die Designer
Siemens NX V9.0 + PDW
SWX 2013 SP3.0 X64
PDMWorks 2013
Logopress3
FastForm Advance
FormatWorks
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor