Community email notifications are disrupted. While we are working to resolve, please check on your favorite boards regularly to keep up with your conversations and new topics.
Version: Windchill 12.1
Use Case: I have created Family instances in solid works and I associated those instance to WTparts. I am able retrieve all the parts, associated cad Documents and instances. I have added all the objects to workspace. Now I wanted to add the generic part of those instances to workspace . Can you help to add the generic part of those instances to workspace.
Description:
This is the code i am using to retrieve all the parts, associate cad documents and ins tances. Now i wanted to retrieve the generic parts and add it to workspace
private void updateChildParts(WTPart parentPart) throws WTException, WTPropertyVetoException {
System.out.println("Updating child parts for:Raghu " + parentPart.getNumber());
QueryResult partUsageLinks = WTPartHelper.service.getUsesWTPartMasters(parentPart);
while (partUsageLinks.hasMoreElements()) {
WTPartUsageLink usageLink = (WTPartUsageLink) partUsageLinks.nextElement();
WTPartMaster partMaster = (WTPartMaster) usageLink.getUses();
QueryResult resultSet = ConfigHelper.service.filteredIterationsOf(partMaster, new LatestConfigSpec());
while (resultSet.hasMoreElements()) {
WTPart childPart = (WTPart) resultSet.nextElement();
try {
System.out.println("Processing child part: " + childPart.getNumber());
if (isVariantPart(childPart)) {
EPMDocument associatedEPM = getAssociatedEPM(childPart);
if (associatedEPM == null) {
EPMDocument copy = saveAsCADAssembly(getEmptyCADAssembly(), childPart);
createLink(copy, childPart);
}
}
addAllToWorkspace(childPart);
// Recursively process the child parts
updateChildParts(childPart);
} catch (Exception e) {
e.printStackTrace();
throw new WTException("Error processing child part: " + childPart.getNumber() + ": " + e.getMessage());
}
}
}
}
private void addAllToWorkspace(WTPart part) throws WTException {
try {
System.out.println("Adding part to workspace: " + part.getNumber());
addToWorkspace(part);
EPMDocument associatedEPM = getAssociatedEPM(part);
if (associatedEPM != null) {
addToWorkspace(associatedEPM);
}
} catch (Exception e) {
e.printStackTrace();
throw new WTException("Error adding part and its related documents to the workspace: " + e.getMessage());
}
}
private void addToWorkspace(Persistable persistable) throws WTException {
try {
System.out.println("Adding to workspace: " + persistable);
wt.fc.ReferenceFactory referenceFactory = new wt.fc.ReferenceFactory();
wt.epm.workspaces.EPMWorkspace workspace = (wt.epm.workspaces.EPMWorkspace) referenceFactory
.getReference("OR:wt.epm.workspaces.EPMWorkspace:1150900").getObject();
wt.fc.collections.WTHashSet collection = new wt.fc.collections.WTHashSet();
if (persistable instanceof EPMDocument) {
EPMDocument epmDoc = (EPMDocument) persistable;
System.out.println("Adding EPMDocument to collection: " + epmDoc.getNumber());
collection.add(epmDoc);
// Get the EPMDocument configuration
wt.epm.workspaces.EPMAsStoredConfigSpec asStored = wt.epm.workspaces.EPMAsStoredConfigSpec.newEPMAsStoredConfigSpec(epmDoc);
wt.fc.QueryResult queryResult = wt.epm.structure.EPMStructureHelper.service.navigateReferencesToIteration(epmDoc, null, true, asStored);
while (queryResult.hasMoreElements()) {
EPMDocument referencedDoc = (EPMDocument) queryResult.nextElement();
System.out.println("Adding referenced EPMDocument to collection: " + referencedDoc.getNumber());
collection.add(referencedDoc);
}
} else if (persistable instanceof WTPart) {
WTPart part = (WTPart) persistable;
System.out.println("Adding WTPart to collection: " + part.getNumber());
collection.add(part);
}
// Add the collection to the workspace
wt.epm.workspaces.EPMWorkspaceHelper.manager.addToWorkspace(workspace, collection);
System.out.println("Added collection to workspace");
} catch (Exception e) {
e.printStackTrace();
throw new WTException("Error adding object to workspace: " + e.getMessage());
}
}
Hi @RaikarRaghu,
Thank you for your question.
It appears your post is well documented , but I am replying to raise awareness. Hopefully, another community member will be able to help.
Regards,
Vivek N
Community Moderation Team.
Hi @RaikarRaghu
The generic is still CAD so you can use standard method to add it to the workspace.
Try following method to get the generic from an instance.
QueryResult queryresult = EPMStructureHelper.service.navigateGeneric(epmdocument, null, true);
PetrH