老师我需要获取当前文件中所有显示(元素来自于多个参考)

老师:我获取当前文件中显示元素这是我的测试例子

void allel(WCharCP name)
{
int i = 0;
DgnModelRefP pActiveModel = ISessionMgr::GetManager().GetActiveDgnModelRefP();
ReachableElementOptionsPtr option = ReachableElementOptions::CreateOptions();
ReachableElementCollection elemsColOfModel = pActiveModel->GetReachableElements(option.get());
for each(ElementHandle eh in elemsColOfModel)
{
//是否为可视
if (eh.GetElementType() == CELL_HEADER_ELM && eh.IsValid())
{
Transform tf = getElementAttachmentTransform(eh);
MSElementDescr* pEd = (MSElementDescr*)eh.GetElementDescrCP();
ElementRefP eleref = pEd->h.elementRef;
//将elementref 加入element ref
if (eleref->GetElementType() != 106)
{
i++;
printf("%d\n", eleref->GetElementId());
}
}
}
printf("%d\n", i);
DgnModelPtr dgnModelPtr = ISessionMgr::GetActiveDgnModelP();
dgnModelPtr->GetDgnAttachmentsP();
if (NULL != dgnModelPtr->GetDgnAttachmentsP())
{
for each (DgnAttachmentP attachment in *dgnModelPtr->GetDgnAttachmentsP())
{
if ((attachment->IsDisplayed()))
{
attachment->SetIsDisplayed(false);
}
attachment->Rewrite(false, false);
}
}
}

第一次运行是能获取到显示的参考模型中的元素,当我按ctrl+Z 撤回时,在运行会获取所有参考文件中元素(包含未显示的参考模型中的元素)