iCAx开思网

标题: 【 SolidWorks 】vc++开发装配体的问题 [打印本页]

作者: mengyubest    时间: 2005-10-10 20:24
标题: 【 SolidWorks 】vc++开发装配体的问题
CComPtr<IModelDocExtension> pModelDocExten;
           CComPtr<IMate2> pMate;
           CComBSTR type2;
       VARIANT_BOOL retval;

    pModelDoc=NULL;
    m_iSldWorks->get_IActiveDoc2 (&pModelDoc);
    hres=pModelDoc->get_Extension (&pModelDocExten);
        if(hres!=S_OK||pModelDocExten==NULL)
                AfxMessageBox("初始化失败");

        name="Axis1@tutor1-1@装配体1";
    type2="AXIS";
        pModelDoc->ClearSelection2 (true);
        status=pModelDocExten->SelectByID(name,type2,0,0,0,true,1,NULL,&retval);
        if(status!=S_OK)
                AfxMessageBox("零件1选择有问题");

        name="Axis1@tutor2-1@装配体1";
    type2="AXIS";
        status=pModelDocExten->SelectByID (name,type2,0,0,0,true,1,NULL,&retval);
        if(status!=S_OK)
                AfxMessageBox("零件2选择有问题");

        long mateTypeFromEnum;
        long alignFromEnum;
        long errorStatus;
        mateTypeFromEnum=swMateCOINCIDENT;
        alignFromEnum=swMateAlignALIGNED;
    status=pAssemblyDoc->AddMate2(mateTypeFromEnum,alignFromEnum,false,0,0,0,0,0,0,0,0,&errorStatus,&pMate);
        if(status!=S_OK)
                AfxMessageBox("配合有问题");

   
        pModelDoc->ClearSelection2 (true);
       
        pModelDoc.Release ();
        pModelDocExten.Release ();
    pAssemblyDoc.Release ();
       

    //*******************************************************//
    pModelDoc=NULL;
    m_iSldWorks->get_IActiveDoc2 (&pModelDoc);
    hres=pModelDoc->get_Extension (&pModelDocExten);
        if(hres!=S_OK||pModelDocExten==NULL)
                AfxMessageBox("初始化失败");


   
        name="Face1@tutor1-1@装配体1";
        type2="PLANE";
    pModelDoc->ClearSelection2(true);
        status=pModelDocExten->SelectByID(name,type2,0,0,0,true,1,NULL,&retval);
        if (status!=S_OK)
                AfxMessageBox("零件1选择有问题");

        name="Face1@tutor2-1@装配体1";
        type2="PLANE";
        status=pModelDocExten->SelectByID(name,type2,0,0,0,true,1,NULL,&retval);
        if (status!=S_OK)
                AfxMessageBox("零件2选择有问题");


    mateTypeFromEnum=swMateCOINCIDENT;
        alignFromEnum=swMateAlignALIGNED;
        status=pAssemblyDoc->AddMate2(mateTypeFromEnum,alignFromEnum,false,0,0,0,0,0,0,0,0,&errorStatus,&pMate);
        if (status!=S_OK)
                AfxMessageBox("配合有问题");
        pModelDoc->ClearSelection2 (true);
        pModelDoc.Release ();
        pModelDocExten.Release ();
        pAssemblyDoc.Release ();



请高手指点一下,为什么装配的时候,在/***********/之间的这部分运行的时候老出问题呢?

[ 本帖最后由 pzytony 于 2005-10-11 20:57 编辑 ]
作者: pzytony    时间: 2005-10-11 12:41
你是基于哪个CAD软件开发的?标题上要说清楚,不要浪费其他人的时间!
作者: sinocc    时间: 2005-10-11 17:46
楼主用的是 SolidWorks 什么版本?
建议你在每个调用都检查返回值。这样容易定位错误




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3