可视化更新
常用的零件插入操作如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软件本体崩溃。
评论