Thank you to everyone who helped on this. We found a combination of methods that is working exactly how we want and am posting here as the solution and perhaps it will help someone else. It is necessarily lengthy as I wanted to give the complete solution that I asked for in the original post and perhaps help someone else too.
@pausob, Thank you for your last solution. Although when I first saw it I dreaded the idea of creating and dreaded even more maintaining it, I realized that if I used a saved Query instead of mapkeying the query it will be shorter mapkeys, more stable, and easier to maintain/troubleshoot. We can now auto assemble a sub-assembly entirely except just the one surface we cannot define automatically but the user can then easily pick that surface to finish the full definition of assembly constraints.
I ended up using a combination of tools:
- Mapkeys (5 unique simple mapkeys for different sub-asms call 1 slightly more complex mapkeys)
- Saved/Retrieved Search Queries (only looking at top level datums!)
- Interface to Geometry feature saved with the placing sub-assembly
Method:
- The Interface to geometry fully saves the constraints for just the sub-asm.
- Then the Mapkey retrieves 2 search queries to match them to 2 of the 3 interface constraints.
- Then the user needs to pick just one surface to completely defined the assembly constraints.
Example Mapkeys (generalized for posting her):
- mapkey ER1 @MAPKEY_NAMEP/N 43012.asm;@MAPKEY_LABELMy Asm1;\
mapkey(continued) ~ Command `ProCmdCompAssem` ;\
mapkey(continued) ~ Input `file_open` `Inputname` `43012.asm`;\
mapkey(continued) ~ Activate `file_open` `Inputname`;\
mapkey(continued) ~ Select `selintrfc` `IntrfcList` 1 `INTC8263`;%qer;
- I then have 4 other similar mapkeys to above that are the same except the red text (e.g. ER2, ER3, ER4, ER5). Each of them call teh QER mapkey shown below which simplifies them all tramendously! Creo uses the Interface feature ID (8263) when assembling even though we picked the name. Added a little more complexity but not much.
- mapkey qer @MAPKEY_NAMEQuery Asm;;@MAPKEY_LABELAssists My Asm asms Mapkeys;\
mapkey(continued) ~ Activate `selintrfc` `SingleBtn`;\
mapkey(continued) ~ Activate `main_dlg_cur` `chkbn.ScrLayout.0` 1;\
mapkey(continued) ~ Command `ProCmdMdlTreeSearch` ;~ Activate `selspecdlg0` `ReadQryFromFile`;\
mapkey(continued) ~ Input `file_open` `Inputname` \
mapkey(continued) `c:\\Queries\\QUERY_TOPLEV_AXIS.QRY`;\
mapkey(continued) ~ Activate `file_open` `Inputname`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `ScrLayout.0.0` `PH.pop_constr_offset_type` 1 `Coincident`;\
mapkey(continued) ~ Command `ProCmdMdlTreeSearch` ;~ Activate `selspecdlg0` `ReadQryFromFile`;\
mapkey(continued) ~ Input `file_open` `Inputname` \
mapkey(continued) `c:\\Queries\\\QUERY_TOPLEV_SKETCH.QRY`;\
mapkey(continued) ~ Activate `file_open` `Inputname`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;
Example Interface to Geometry footer feature inside the placing component sub-asm:
- We did not use the Criteria tab at all.
- We had to use an angle offset of 0º because Creo was making a false assumption and rotating it by 90º even though we didn't want it to! We still don't know why Creo was doing this. Very odd.





Example of a retrieved search query:
