iCAx开思网

标题: CAA交互模式的参数化设计 [打印本页]

作者: cwk_seu    时间: 2011-12-17 18:52
标题: CAA交互模式的参数化设计

想做一个交互模式的参数化的例子,现在交互界面做好了(如图),参数化驱动程序写完了,但是运行时一直有点问题,感觉应该是获取参数列表和参数赋值有问题,但一直解决不了,功能实现的主要代码如下,程序框架在附件上,请指点。

//内存中加载零件
HRESULT rc=E_FAIL;
CATDocument * pDocument=NULL;
CATUnicodeString ModelDocName="F:\savefile\catia_development\zhou.CATPart";
rc = CATDocumentServices::OpenDocument(ModelDocName,pDocument);
if (SUCCEEDED(rc))
{
CATInit *pInitOnDoc=NULL;
rc = pDocument->QueryInterface(IID_CATInit,(void**)&pInitOnDoc);

//获取零件的根容器
CATIPrtContainer *pIPrtCont = NULL;
pIPrtCont=(CATIPrtContainer *)pInitOnDoc->GetRootContainer("CATIPrtContainer");

//获取零件设计特征
CATISpecObject_var spSpecObjectPart = pIPrtCont->GetPart();
if (NULL_var != spSpecObjectPart)
{
//获取参数列表
  CATIParmPublisher * pIParmPublisher = NULL;
  rc = spSpecObjectPart->QueryInterface(IID_CATIParmPublisher,(void**)&pIParmPublisher);
  if (SUCCEEDED(rc))
  {
    CATUnicodeString L1="L1";
    CATUnicodeString L2="L2";
CATLISTV (CATISpecObject_var) List ;
CATICkeParm *pICkeParm = NULL;
pIParmPublisher->GetAllChildren("CATICkeParm",List);
int Nb = List.Size();
if ( Nb >= 1 )
{
  CATISpecObject_var specObj = List[1] ;
  rc = specObj->QueryInterface(IID_CATICkeParm,(void**) &pICkeParm);
    }      

//根据特征尺寸依次获取参数并赋值

if (pICkeParm->Name()==L1)
{
    L1=pICkeParm->Content();
       CATUnicodeString msg;
    double OutputReal;
    msg = _pL1Editor->GetText();
    int IsConversionOK = msg.ConvertToNum(&OutputReal);
    OutputReal = OutputReal/1000;
    pICkeParm->Valuate(OutputReal);
}
else
{
  L2=pICkeParm->Content();
  msg = _pL2Editor->GetText();
  int IsConversionOK = msg.ConvertToNum(&OutputReal);
  
  OutputReal = OutputReal/1000;
    pICkeParm->Valuate(OutputReal);
}
ObjectUpdate(spSpecObjectPart);
  }
}
}


作者: cwk_seu    时间: 2011-12-21 21:12
高手,指点一下吧
作者: linlily0925    时间: 2012-1-11 16:34
得到参数名字的时候,试着将CATICkeParm转化为CATIAlias,然后再GetAlias方法返回的CATUnicodeString应该就是用户看到的参数的名字,因为CATICkeParm接口下有几个得到名字的方法,~~~不同的方法返回的名字不一样~~
作者: raul665    时间: 2012-2-4 14:34
求楼主指点,我也在做一个类似的东西
作者: liushaowei    时间: 2013-11-4 21:17
你的菜单是在通用的workshop里吧,怎么运行没找不到你的菜单啊
作者: liushaowei    时间: 2013-11-4 21:17
而且编译时一堆错误,一个个改好了





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