cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X

How to stop traversing a structure based on part type

Pekholm
11-Garnet

How to stop traversing a structure based on part type

Hi

We have a requirement to stop traversing a structure in BOM report if the assembly has part type = inseparable or source=buy when generating a BOM report. The reason is that the buy or inseparable compoents does not have child components in ERP. Can this be done without major customizations?

1 ACCEPTED SOLUTION

Accepted Solutions

Hi @Hari_Vara 

Do you men this attribute?

HelesicPetr_0-1701954973610.png

because OOTB "Collapsible Assembly" does not exists on a WTPart in the PDMLink

If I set this attribute to yes, the report still shows the child components.

Multilevel BOM and Multilevel component report do the same as before the change

 

PS> it is related to BOM Transformer and Variants not the BOM Reporting. 

Collapsible Attribute Set to Yes

Collapsible Attribute Set to No

 

PetrH

View solution in original post

13 REPLIES 13

Hello @Pekholm 

the system allows you just exclude a gathering parts from the report by preference Filter Gathering Parts

HelesicPetr_0-1701854335392.png

As I know there is only a way and it is customization. 

for your interest following classes could be customized to achieve what you really need.

MultiLevelBOMReportTreeBuilder.class

PartReportTreeHandler.class

You can extend MultiLevelBOMReportTreeBuilder class with own one and overwrite buildComponentData

 

  public Object buildComponentData(ComponentConfig var1, ComponentParams var2) throws Exception {
    return new PartReportTreeHandler(var2);
  }

 

 

In the MultiLevelBOMReportTreeBuilder buildComponentData is a PartReportTreeHandler where the BOM is collected.

I would create new class, extend the PartReportTreeHandler and rewrite a getNodes where you can filter the children if the parent is your specific type 

 

public Map<Object, List> getNodes(List var1) throws WTException

 

in the method getNodes you would find a place where you can add the condition. 

 

PetrH

Fadel
22-Sapphire I
(To:Pekholm)

Hello Per,

Glad to hear from you again , would you try to set filtering in  PSB before generating the BOM report 

Fadel_0-1701860288801.png

 

 

 

 

Fede
HelesicPetr
21-Topaz II
(To:Fadel)

Hi @Fadel 

I guess that inseparable is set on the assembly, which should be part of the BOM report. but used parts on the lower level of that assembly shouldn't be part of the BOM report.

 

I know the case and I don't think it is possible to set it by the filter. 

One our customer needed same report with different conditions.  

I wrote own BOM report for him.

 

example what I understood

HelesicPetr_1-1701864222793.png

PetrH

Hari_Vara
13-Aquamarine
(To:Fadel)

Hi,

Will this not completely skip the InSeperable part? 

 

Thanks & Regards

Hari

Hi @Hari_Vara 

Have you seen the video?

It skips the Inseparable assembly. 

PetrH

Hari_Vara
13-Aquamarine
(To:HelesicPetr)

Hi Petr,

Yeah, thats my point. I think the requirement was to "Collapse" the child parts and just show the parent part . here it is not showing the parent part.

We call this as Collapsible Assembly.

Am I missing something?

 

Best Regards

Hari

Hi @Hari_Vara 

I guess that you miss my point.

System does not support that feature. 

You need to customize it by code.

 

In my previous post I showed a picture with my understanding. 

PetrH

Hi

Thanks för your inputs. Yes, I tried to colapse child components by attribute filering which seems to give correct result. However, when generating the multi level component report, the assembly note is not reported. The report does not treat the assembly with hidden children as a component.

Pekholm_0-1701952123000.png

 

Yeah. multilevel component report 

it is different story 😄

It really reports only the lowest children and it does not care about the upper assembly(nodes). 

It can be customized

 

I have seen a configuration for dynamic structure visualization where you could define a logic where the visualization should be picked up from. It could be based on node, part or assembly and also type or attribute value atc.

But it is different story it is not about reporting. 

PetrH

Hari_Vara
13-Aquamarine
(To:Pekholm)

Hi,

Please set the parent part attribute "Collapsible Assembly" as Yes and redo the BOM Report.

It should meet your requirement I think.

Best Regards

Hari

Hi @Hari_Vara 

Do you men this attribute?

HelesicPetr_0-1701954973610.png

because OOTB "Collapsible Assembly" does not exists on a WTPart in the PDMLink

If I set this attribute to yes, the report still shows the child components.

Multilevel BOM and Multilevel component report do the same as before the change

 

PS> it is related to BOM Transformer and Variants not the BOM Reporting. 

Collapsible Attribute Set to Yes

Collapsible Attribute Set to No

 

PetrH

Hari_Vara
13-Aquamarine
(To:HelesicPetr)

Hi Peter,

Yes you are right, I completely forgot that it is used in Variant BOM generation where we have Collapsible Middle nodes.

 

However, I think his requirement was to Show only the Parent part (For eg., Bought out Motor), for which the Spindle and Cage have CAD content.

I would suggest, if there is CAD Models for the Parent and child parts in question, then we can set the Attribute called "Part Structure Override Attribute" (A Boolean that tells Windchill if it needs to build a WTPart for that CAD or not).

If @Pekholm can elaborate if he is working with or without CAD linked BOM, accordingly, The above approach can be applied.

For CAD Linked BOM, it will surely work - Setting the Attribute.

First you need to Declare that CAD Attribute which will define this in Preferences.

Please look in the help.

 

Best Regards

Hari

 

Hi @Hari_Vara 

You right. the Part Structure Override Attribute is good way, but if the BOM exists, it can not help.

 

This is good for a methodical process, how to design a CAD and how to drive a WTPart BOM. 

You can set a usage Boolean attribute and the CAD can be linked to the WTPart. but based on usage attribute the wtpart would not be part of the BOM. 

This is a way, but you need to start with CAD, correct configuration and an users methodical work

 

PetrH

 

Top Tags