problem with getting children

Hi again,

I also tried this code . No luck.

Not be able to get the children and traverse the assembly..

void CreateAssemblyMap(CComPtr pModelDoc, CComPtr /*IComponent2Ptr*/  swComp )

{

     MAP_OBJECT* mo = NULL;

     bstr_t name = pModelDoc->GetTitle();   

     CString spName(name.GetBSTR());   

    long    nChildren;

     CComPtr  oChild;

     CComPtr< IAssemblyDoc> swThisAssemblyDoc;

     mo = new MAP_OBJECT();   

    CComBSTR    sPathName;

    try

    {

    BSTR bPath = pModelDoc->GetPathName();

    CString sPath(bPath);

    mo->filename = sPath;

    CFileStatus status;

    BOOL bFileExists = CFile::GetStatus( sPath, status );

    printf("createAsemblyMap: PathName = %s\n", mo->filename);

    fflush(stdout);

    pModelDoc->QueryInterface(__uuidof(IAssemblyDoc), reinterpret_cast(&swThisAssemblyDoc));

    mo->oAssy = swThisAssemblyDoc;

    printf("createAsemblyMap: assemly pointer = %s\n", mo->oAssy);

    fflush(stdout);

    if ( bFileExists )

    {

        try

        {

        mo->partName = spName;

        printf("createAsemblyMap: partName  = %s\n", name);

        fflush(stdout);

        }

        catch(const _com_error &roError )

        {

        #ifdef _DEBUG   

        printf("SolidWorks: Failed to get partName with the error - %s", roError.ErrorMessage());

        fflush(stdout);

        #endif)

        }

    }

#ifdef _DEBUG

    printf("createAssemblyMap [%s][%s][%s]\n", mo->partName, mo->instanceName, sPath);

    fflush(stdout);

#endif

        if ( pModelDoc->GetType() == swDocASSEMBLY )

        {

                                BSTR cpstr = swComp->GetName2();

                                CString spName(cpstr);

                                mo->instanceName = spName;

                                g_map[mo->partName] = mo;

                                nChildren = swComp->IGetChildrenCount();

                                printf("\n g_map emlements : oAssy = %s partName= %s InstaceName = %s fileName= %s nChildren = %d  \n", mo->oAssy, mo->partName, mo->instanceName, mo->filename, nChildren);

                                fflush(stdout);

        }

                            /   typedef CComPtr LPCOMPONENT2;

                                LPCOMPONENT2 pChildren;

                                pChildren = swComp->IGetChildren(); 

                                 int childrenCount;

                                 childrenCount = swComp->IGetChildrenCount();

                                 std::cout << "\n  chilrenCount = " << childrenCount << std::endl;

                                 // Recursively traverse the children

                                for (long i=1; i

                                {

                                    BSTR path;

                                    LPCOMPONENT2 oChild  = (&pChildren)[i];

                                    path = oChild->GetPathName();

                                    std::cout << " path = " << path << std::endl;

                                        try

                                        {

                                std::cout << "Componenet name = " << oChild->GetName2().GetBSTR() << std::endl;

                                        }

                                    catch(const _com_error &roError)

                                            {

                                                #ifdef _DEBUG   

                                                        std::cout <<"SolidWorks: Failed to get Child i = %d" << i <<" the error is  - " <<  roError.ErrorMessage() << std::endl;

                                                        fflush(stdout);

                                                #endif

                                            }

                                    //    CreateAssemblyMap(oChild->GetModelDoc2(), oChild);

                                }

                               ..

                               .

                               .

                               .

I am using Visual Studio 2010.

I appreciate any help.

Azarm

SolidworksEducator Student