Open a part from a view

Top  Previous  Next

Here is a fragment to show you how:

 

    CComPtr<DocumentDescriptor> pDocDesc  ;

    pView->get_ReferencedDocumentDescriptor (&pDocDesc) ;

 

    // Still finding out the part which this is a view of...

    CComPtr<Document> pReffedDoc  ;

    pDocDesc->get_ReferencedDocument ((IDispatch**)&pReffedDoc) ;

 

    if (kAssemblyDocumentObject != pReffedDoc->DocumentType) {

        WalertBoxW (L"The referenced document is not an assemblu part") ;

        return ;

    }

 

    // Convert the general referenced doc into a part doc...

    CComQIPtr<AssemblyDocument> pAsmDoc = pReffedDoc ;

 

    // Get assembly component definition

    CComPtr<AssemblyComponentDefinition> pAssemblyCompDef ;

    hRes = pAsmDoc->get_ComponentDefinition(&pAssemblyCompDef);

    if (FAILED(hRes) || (pAssemblyCompDef == nullptr)){

         ShowCOMError(hRes,L"GetComponentOccurrenceByName, get_ComponentDefinition failed "); 

         return ;

    }

 

    CComPtr<ComponentOccurrences> pOccurrencesList=nullptr;

    hRes = pAssemblyCompDef->get_Occurrences (&pOccurrencesList) ;

    if (FAILED(hRes) || (pOccurrencesList==nullptr)) {

        ShowCOMError (hRes,L"get_Occurrences failed") ;

        return  ;

    }

 

       CComPtr<ComponentOccurrence> pThisCompOcc  ;

       hRes = pOccurrencesList->get_Item(1, &pThisCompOcc);

    if (FAILED(hRes) || (pThisCompOcc == nullptr)){

        ShowCOMError(hRes,L"GetComponentOccurrenceByName, get_Item failed "); 

        return ;

    }

 

 

    // Now find out the part which this is a view of...

    CComPtr<DocumentDescriptor> pDocDesc2  ;

    pThisCompOcc->get_ReferencedDocumentDescriptor (&pDocDesc2) ;

 

    CComBSTR bstrFullDocName ;

    pDocDesc2->get_FullDocumentName (&bstrFullDocName) ;

 

    WalertBoxW (L"Referenced doc = %s",bstrFullDocName) ;

 

    CComPtr<PartComponentDefinition> pPartCompDef ;

    CComPtr<PartDocument> pPartDoc ;

 

    CComPtr<Application> pInvApp = theApp.GetInvAppPtr () ;

 

    hRes =  OpenPart (pPartCompDef,

                      pPartDoc,

                      CString(bstrFullDocName),

                      pInvApp) ;

 

.

Text, images and diagrams © 2021 Owen F. Ransen. All rights reserved. (But copy the source code as much as you want!)