← 返回首页

CATIA数据更新方法汇总(CAA)

可视化更新

常用的零件插入操作如AddProduct之后在CATIA的可视化界面可能不会发生变化,这里需要用到更新事件,即当一个对象被修改并需要重新生成其图形表示时,它只需要发送一个CATModify事件来警告其所有可视化的图形表示。

  //Update the 3D view
  CATModify ModifyEvent(spObject);
  CATIModelEvents_var spEvents = spObject;
  if(spEvents!=NULL_var)
    spEvents -> Dispatch (ModifyEvent);
目录树更新

常用的零件插入操作如AddProduct之后在CATIA的目录树可能不会发生变化,这里常用到的是图形重绘接口。

  //Update the graph view tree
  CATIRedrawEvent_var spRedraw = spObject;
  if(spRedraw!=NULL_var)
    spRedraw -> Redraw();

但这个接口也有可能会出现失败情况,如对视图和快照进行操作时就会不生效,这里再介绍一种通过折叠目录树节点的办法实现目录树的刷新。

CATListValCATBaseUnknown_var * pNodeList = NULL;
pNodeList = _pNavigController->GetAssociatedElements(spBU);
if (NULL != pNodeList)
{
    int nbNodes = pNodeList->Size();
    for (int k = 1; k <= nbNodes; k++)
    {
        CATIGraphNode_var graphNode = (*pNodeList)[k];
        if (NULL_var != graphNode)
        {
            // To be expanded
            if (1 == graphNode->IsExpanded())
            {
                CATINavigNodeCtrl_var spGraphNodeCtrl = graphNode;
                if (!!spGraphNodeCtrl)
                {
                    spGraphNodeCtrl->Undereference();
                }
            }
        }
    }
}
UI刷新

在设计交互界面时,我们可能会针对界面和窗体控件进行更新,但类似于调整界面窗体和控件大小、修改Label名称等操作,在使用代码设置后界面并没有及时生效,我们就需要对界面进行更新,这里用到的是CATDialog下的方法,在代码操作后添加下面这行代码即可生效。

void Refresh (int iflag=0);
文本刷新

在创建文本或与文本相关的标注时,针对文本涉及的字体、字高、下划线、加粗等操作,在使用代码设置后并没有及时生效,这里是需要调用CATIDftTextProperties/CATIDrwTextProperties下的刷新方法,就可以生效了。

图片

特征刷新(V5)

在创建特征或者对特征进行修改后,我们会发现对应特征的目录树节点和零件变成的待更新状态,需要本地更新一下才会生效,这里我们可以采用一种比较方便的方法,就是用CATISpecObject接口下的更新方法:

图片

但是请特别注意,使用这个接口前请务必确认当前特征没有错误,否则进行更新则会导致CATIA软件本体崩溃。

评论