HRESULT hr;
CATDocument *pDocument = NULL;
CATFrmEditor* pEdit = CATFrmEditor::GetCurrentEditor();
CATILinkableObject* pILinkableOnActive = NULL;
hr = pEdit->GetUIActiveObject().Search(
IID_CATILinkableObject,
(void**)&pILinkableOnActive);
pDocument = pILinkableOnActive->GetDocument();//获取到文档
if(pEdit == NULL)
{
return (CATStatusChangeRCAborted);
}
if (pDocument == NULL)
{
return (CATStatusChangeRCAborted);
}
CATIDocRoots* piDocRoot = NULL;
hr = pDocument->QueryInterface(IID_CATIDocRoots,(void**)&piDocRoot);
if (FAILED(hr) || piDocRoot == NULL)
{
return (CATStatusChangeRCAborted);
}
CATListValCATBaseUnknown_var* spRootList = NULL;
if (SUCCEEDED(spRootList = piDocRoot->GiveDocRoots()) && (spRootList != NULL))
{
piDocRoot->Release();
piDocRoot = NULL;
}
CATIProduct_var spiRootProduct = NULL_var;
if (spRootList->Size())
{
spiRootProduct = (*spRootList)[1];
delete spRootList;
spRootList = NULL;
}
CATListValCATBaseUnknown_var* spListOfChildProduct = NULL;
if (spiRootProduct != NULL_var)
{
spListOfChildProduct = spiRootProduct->GetAllChildren();
}
CATIProduct_var spiProduct = NULL_var;
CATIProduct_var spipart = NULL_var;
CATUnicodeString strName;
if ((spListOfChildProduct != NULL) && (spListOfChildProduct->Size()>0))
{
for (int i = 1;i <= spListOfChildProduct->Size();i++)
{
spiProduct = (*spListOfChildProduct)[i];
CATIProduct_var spiRefProd = spiProduct->GetReferenceProduct();
CATILinkableObject_var spiLinkOnChild = spiRefProd;
CATDocument* pCurrentDoc = spiLinkOnChild->GetDocument();
if (pCurrentDoc->GetType() == "CATPart")
{
/*CATIPrtPart_var spPart = NULL_var;
if (pCurrentDoc)
{
CATInit_var spInitOnDoc(pCurrentDoc);
if(NULL_var == spInitOnDoc) return (CATStatusChangeRCAborted);;
CATIPrtContainer * piPrtCont = (CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");
if (!piPrtCont)
{
// Ends session
cout<<"Sy GeomMain"<<endl;
return (CATStatusChangeRCAborted);
}
// Get the part feature of the container.
spPart = piPrtCont->GetPart();
piPrtCont->Release();
piPrtCont=NULL;
}*/
CATISpecObject_var spiObj = spiProduct;
/*//设置隐藏CATGraphicAttributeSet
CATIVisProperties* piPropOnElem = NULL;
HRESULT rc = spiObj->QueryInterface(IID_CATIVisProperties,
(void**)&piPropOnElem);
if(piPropOnElem != NULL)
{
CATVisPropertiesValues PropValue;
CATVisPropertyType ProType = CATVPShow;//信息是可见性
CATVisGeomType geomtype = CATVPGlobalType;//此类型定义了一组属性类型:
PropValue.SetShowAttr(CATNoShowAttr);//设置显示标志。
rc = piPropOnElem->SetPropertiesAtt(PropValue,ProType,geomtype);//设置图形属性集。
piPropOnElem->Release();
piPropOnElem = NULL;
}
CATModify pModifyOnRoot(spiObj);
CATIModelEvents_var pMEOnRoot= spiObj;
pMEOnRoot->Dispatch(pModifyOnRoot);//刷新图形*/
//获取零件状态
CATIVisPropertiesAbstract* spiPro = NULL;
spiObj->QueryInterface(IID_CATIVisProperties,(void**)&spiPro);
if (spiPro == NULL)
{
cout<<"213 GeomMain"<<endl;
return (CATStatusChangeRCAborted);
}
CATVisPropertiesValues ProVis;
CATVisPropertyType ProType = CATVPShow;
spiPro->GetPropertiesAtt(ProVis,ProType);//获取图形状态
CATShowAttribut ShowAttr;
ProVis.GetShowAttr(ShowAttr);
if (ShowAttr == CATNoShowAttr)//是否为隐藏状态
{
cout<<"6666"<<endl;
}
}
}
}