List iMates in an assembly |
Top Previous Next |
Here's something which will list iMates in an assembly:
CComPtr<AssemblyComponentDefinition> pAsmCompDef; CComPtr<AssemblyDocument> pAsmDoc; const CString kcsFullAsmFileName(L"C:\\docs\TestAssembly.Iam") ;
const bool kbOpenedOk = OpenAssembly (pAsmCompDef,pAsmDoc,kcsFullAsmFileName) ; if (!kbOpenedOk) { TRACE("Failed to open"); return; }
CComPtr<iMateDefinitions> piMateDefinitions = nullptr ; HRESULT hRes = pAsmCompDef->get_iMateDefinitions(&piMateDefinitions); if (FAILED(hRes)) { TRACE("Failed to get imate definitions"); return; }
TRACE ("There are %d imate definitions\n",piMateDefinitions->GetCount());
for (int i = 1; i <= piMateDefinitions->GetCount(); i++) { CComPtr<iMateDefinition> piMateDef; piMateDefinitions->get_Item(i, &piMateDef);
_bstr_t bstrName = piMateDef->GetName(); CString csName1((wchar_t*)bstrName);
CComPtr<iMateDefinition> piMateDef2; piMateDef->get_ReferencedEntity(&piMateDef2);
TRACE(L"%d %s\n", i, csName1);
if (piMateDef2 != nullptr) { bstrName = piMateDef2->GetName(); CString csName2((wchar_t*)bstrName); TRACE(L" Referenced entity name = %s\n",csName2); }
CComPtr<ReferenceComponent> pRefComp; piMateDef->get_ReferenceComponent(&pRefComp); if (pRefComp != nullptr) { TRACE (L" Refernced component = %s\n",pRefComp->Name) ; }
const ObjectTypeEnum eObjType = piMateDef->GetType();
TRACE(L" Obj type is %d <%s>\n", eObjType, GetObjTypeDesc(eObjType)); }
pAsmDoc->Close(VARIANT_TRUE); |
Text, images and diagrams © 2021 Owen F. Ransen. All rights reserved. (But copy the source code as much as you want!)