另外,我试了一下AssemblyUI.edu\CAAAuiCreateCstOnParts.m\src\CAAAuiCreateCstOnParts.cpp,
这个例子中是在两个Part的XY平面建了两个Connector,然后建了两个面的平行约束,
这时用CATIA打开新生成的Product文件是不用更新。
但是,如果我把其中一个平面改成YZ平面,这时生成的Product文件中的平行约束是没有被更新的,也就是
两个Part还都是原来的位置坐标,Constraint的状态也是“未更新”,需要在CATIA中手动更新一下,两个Part的相对
位置约束才能生效。
请问,如何在程序里更新该Constraint呢?
还有就是这个例子中CreateConstraint()中的第三个参数是NULL, 即没有使用CATICkeParm_var参数,如果我想创建
一些位移约束等,该参数应该如何指定呢?我试了一下,使用下面的代码后,生成的Constraint中的长度等都是0,
没有正确的生成,这个参数该如何指定呢?下面代码只给出了生成CATICkeParm_var的过程:
CATInit *pDocAsInit = NULL;
_pDoc->QueryInterface(IID_CATInit, (void**)&pDocAsInit) ;
if ( NULL != pDocAsInit ) {
_piProductCont = (CATIPrtContainer *)pDocAsInit->GetRootContainer("CATIProductContainer");
}
CATIGSMFactory_var spGsmFact;
CATIGSMFactory * _pFact =NULL;
rc = _piProductCont -> QueryInterface(IID_CATIGSMFactory ,(void**)&_pFact);
spGsmFact = _pFact;
CATICkeParmFactory_var spCkeFact = spGsmFact;
CATICkeParm_var spParm = NULL_var;
spParm = spCkeFact->CreateLength("L", 100./1000.);
rc = ::CreateConstraint(catCstTypeParallelism, ConnectorList2, NULL, _piProductOnRoot, &pCst2); |