Skip to main content
14-Alexandrite
January 5, 2024
Question

Add an older version using As Stored dependencies

  • January 5, 2024
  • 3 replies
  • 2301 views

Hi

i'm trying to build an Creo utility that adds "non latest" version of epmdoc to WS.

Unfortunately, this is not supported through the toolkit - as specified in Article - CS7762

So, i'm thinking to add epmdoc to WS using Windchill api first and then connect to relevant WS using Creo API.

did any of you tried this approach ? any other suggestions/ideas ?

i'm planning to facilitate  AddToWorkspaceAction for that.

 

Many thanks,

3 replies

avillanueva
23-Emerald I
23-Emerald I
January 5, 2024

What is the ultimate goal? Are you trying to load data and control some pre-existing as-stored history? I have not tried this approach but it is possible to load older iterations and versions to a workspace. The normal UI allows for download of non-latest versions but there will be a check to verify you want to replace the existing version if it already exists in the workspace. Seems like a lot of work, especially if you want to use this all the time. 

Rami_Noah14-AlexandriteAuthor
14-Alexandrite
January 6, 2024

Hi,

I'm implementing now DrawingValidator byElysium Software, which is btw great product for comparing drawings & geometry, and though it would be VERY beneficial, process vise, to add the drawing comparison result to promotion/ECN approval process. so the approver can see the report and skip the tedious process of looking for the changes. 

in order to do the comparison i need to get the previous RELEASED/APPROVED version of the model/drawing, and comparing it to new one.

Getting the new one, latest, was quite easy. however, getting the old one seems like a real challenge...

 

and here i'm looking for the community assistance

 

joe_morton
18-Opal
18-Opal
January 8, 2024

What if you published a PDF at each release, then just compare PDFs? I would think it would be easier to manage 1 PDF for future comparisons then trying to get all the correct references historically.

HelesicPetr
22-Sapphire II
22-Sapphire II
January 8, 2024

Hi @Rami_Noah 

Check the wt.vc.config.ConfigSpec interface

there is a subclass wt.epm.workspaces.EPMAsStoredConfigSpec that can be used for the query 

 

here is example how to use it

EPMDocument epmDoc = null; // null is just for usage purpose you need to search your assembly iteration to get as stored config.
List<ConfigSpec> configSpecList = new ArrayList<ConfigSpec>();
EPMAsStoredConfigSpec epmAsStoredConfig = EPMAsStoredConfigSpec.newEPMAsStoredConfigSpec(epmDoc.getAsStoredConfig());
configSpecList.add(epmAsStoredConfig);
QueryResult qr = ConfigHelper.service.filteredIterationsOf(epmDoc.getMaster(), configSpecList);

PetrH

Rami_Noah14-AlexandriteAuthor
14-Alexandrite
January 9, 2024

thank you for you suggestion.

i'll verify that soon

Rami_Noah14-AlexandriteAuthor
14-Alexandrite
January 30, 2024

you can see below the relevant code :

       public static WTCollection collectItemsForWorkspace(EPMDocument theDraw) throws WTException, WTPropertyVetoException {

              WTCollection myResult = new WTArrayList();

             

              // Definitions/setup

              WTCollection seeds = new WTArrayList();

              Collection<?> result = new WTArrayList();

              EPMDocConfigSpec configSpec = new EPMDocConfigSpec();

              configSpec.setAsStoredActive(true);

              NavigationCriteria nc = NavigationCriteria.newNavigationCriteria();

              List<EPMDocConfigSpec> configpecs = new ArrayList<>();

             

              // Collect Items

              seeds.add(theDraw);

              logger.debug("Seed is: "+theDraw.getNumber()+" "+theDraw.getName());

              EPMAsStoredConfigSpec asStored = EPMAsStoredConfigSpec.newEPMAsStoredConfigSpec(theDraw);

              EPMDocConfigSpec epmAsStoredConfig = EPMDocConfigSpec.newEPMDocConfigSpec(asStored);

             

              //Bug Correction for EPMDocs that does not have As Stored Config Spec - PTC Case C12869402

              if (asStored == null) {

                     configSpec.setLatestActive();

                     configpecs.add(configSpec);

                     logger.debug("Seed is: "+theDraw.getNumber()+" "+theDraw.getName()+" LATEST Config Spec");

              } else {

                     configSpec.setAsStoredConfig(asStored);

                     configpecs.add(epmAsStoredConfig);

                     logger.debug("Seed is: "+theDraw.getNumber()+" "+theDraw.getName()+" AS STORED Config Spec");

              }

             

              // Navigation Criteria

              nc.setConfigSpecs(configpecs);

             

              // Collect items

              //CadCollectedResult ccr = CadCollector.newInstance(seeds, nc).dependents(GatherDependents.ALL).familyGenerics(GatherFamilyGenerics.ALL).familyMembers(GatherFamilyMembers.ALL).drawings(CadCollector.GatherDrawings.ALL).collect();

              CadCollectedResult ccr = CadCollector.newInstance(seeds, nc).dependents(GatherDependents.ONLY_REQUIRED).collect();

              result = (Collection<?>) ccr.getCollectedObjects();

              logger.debug("collectItemsForWorkspace - Number of objects Collected : " + result.size());

              for (Object obj : result) {

                     logger.trace("collectItemsForWorkspace - obj: "+obj);

                     if (obj instanceof EPMDocument) {

                           EPMDocument epm = (EPMDocument)obj;

                           logger.trace("collectItemsForWorkspace - collected: "+epm.getDisplayIdentifier());

                     }

              }

              logger.debug("collectItemsForWorkspace - Added Collected EPM Docs");

             

              WTCollection addedItems = new WTArrayList(result);

             

              //result.addAll(partResult); - this collection gets Object Reference

              Iterator<?> items = result.iterator();

              while (items.hasNext()) {

                     Object item = items.next();

                     if (item instanceof EPMDocument) logger.trace("collectItemsForWorkspace - Related CAD object : " + ((EPMDocument)item).getNumber()+" "+((WTObject)item).getDisplayIdentity());

                     if (item instanceof WTPart) logger.trace("collectItemsForWorkspace - WTPart object : " + ((WTPart)item).getNumber()+" "+((WTObject)item).getDisplayIdentity());

              }

             

              myResult = addedItems;

             

              return myResult;

       }