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

Community Tip - You can change your system assigned username to something more personal in your community settings. X

Programmatically retrieve part instance structure

SH_9602401
12-Amethyst

Programmatically retrieve part instance structure

I am using Windchill PDMLink Release 12.0 and Datecode with CPS 12.0.0.0

What is the best way to programmatically retrieve part instance structure by oid such as OR:wt.part.WTProductInstance2:XXXX?

ACCEPTED SOLUTION

Accepted Solutions

Thanks for the insights. Here is the code that can retrieve the structure of a part instance:

try {	
        ObjectIdentifier oid = ObjectIdentifier.newObjectIdentifier("wt.part.WTPart:1988914855");
        WTPart part = (WTPart)PersistenceHelper.manager.refresh(oid);
        System.out.println("My part: " + part.getName());
        	
        WTPartMaster master = part.getMaster();
        QueryResult qr = ConfigurationHelper.service.getAllInstances(master);
        if (qr != null) {
        	while (qr.hasMoreElements()) {
        		WTProductInstance2 instance = (WTProductInstance2) qr.nextElement();
        		System.out.println("Instance name: " + instance.getNumber());
        		QueryResult qr2 = ConfigurationHelper.service.getAllMappedInstances(instance);
        		while (qr2.hasMoreElements()) {
        			WTProductInstance2 instance2 = (WTProductInstance2) qr2.nextElement();
            			System.out.println("Instance2 name: " + instance2.getNumber());
        		}
        	}
        }
} catch (Exception e) {
        e.printStackTrace();
}

View solution in original post

5 REPLIES 5

Hi @SH_9602401 

I don't think there is such an API can do that, I have searched the PTC knowledge base

Hi @SH_9602401 

Try to use something like this >  

 

WTProductInstance2 retValue = null;
NmOid bsOid = NmOid.newNmOid("OR:wt.part.WTProductInstance2:XXXX");
Object persObject = bsOid.getReferencedIterationObject();
if (persObject.getClass().equals(WTProductInstance2.class))
{
	retValue = (WTProductInstance2) persObject;
}

 

sure simple condition

 

if (persObject instanceof WTProductInstance2)
{
	retValue = (WTProductInstance2) persObject;
}

 

PetrH

 

Hi @HelesicPetr 

 

Thank you very much for your response. But retValue shows the part instance itself. Is there a way to get structure from the object?

 

Best,

Susan H

Hi @SH_9602401 

First you need to get the WTProductInstance2 from OID and then use general method to retrieve the structure. 

But Iam not sure if you can get structure directly from WTProductInstance2 or you need to get WTPart from WTProductInstance2 and then get the structure. 

ConfigSpec localConfigSpec = ConfigHelper.service.getConfigSpecFor(parentWTPart);
QueryResult qr = WTPartHelper.service.getUsesWTParts(parentWTPart, localConfigSpec);

 PetrH

Thanks for the insights. Here is the code that can retrieve the structure of a part instance:

try {	
        ObjectIdentifier oid = ObjectIdentifier.newObjectIdentifier("wt.part.WTPart:1988914855");
        WTPart part = (WTPart)PersistenceHelper.manager.refresh(oid);
        System.out.println("My part: " + part.getName());
        	
        WTPartMaster master = part.getMaster();
        QueryResult qr = ConfigurationHelper.service.getAllInstances(master);
        if (qr != null) {
        	while (qr.hasMoreElements()) {
        		WTProductInstance2 instance = (WTProductInstance2) qr.nextElement();
        		System.out.println("Instance name: " + instance.getNumber());
        		QueryResult qr2 = ConfigurationHelper.service.getAllMappedInstances(instance);
        		while (qr2.hasMoreElements()) {
        			WTProductInstance2 instance2 = (WTProductInstance2) qr2.nextElement();
            			System.out.println("Instance2 name: " + instance2.getNumber());
        		}
        	}
        }
} catch (Exception e) {
        e.printStackTrace();
}
Announcements


Top Tags