static void XrefUtilsGetAllXrefs(void)
{
Acad::ErrorStatus es;
AcDbXrefGraph graphXref;
if ((es = acdbGetHostDwgXrefGraph(acdbCurDwg(), graphXref)) == Acad::eOk) {
//////////////////////////////////////////////////////////////////////////
// Дерево внешних ссылок всегда начинается с текущей базы.
// По этой причине начинаем индексацию с 1, а не 0.
//////////////////////////////////////////////////////////////////////////
acutPrintf(L"\nВсего %d внешних ссылок",graphXref.numNodes()-1);
for (int idx=1; idx < graphXref.numNodes(); idx++) {
AcDbXrefGraphNode *nodeXref = graphXref.xrefNode(idx);
if (nodeXref) {
AcDbObjectId btrId = nodeXref->btrId();
AcDbBlockTableRecordPointer pBTR(btrId,AcDb::kForRead);
const ACHAR *path = NULL;
if ((es = pBTR.openStatus()) == Acad::eOk && (es = pBTR->pathName(path)) == Acad::eOk) {
acutPrintf(L"\n Xref[%d]=%s path=\"%s\"",idx,nodeXref->name(),path);
} else {
acutPrintf(L"\nError=%s",acadErrorStatusText(es));
}
}
}
} else {
acutPrintf(L"\nacdbGetHostDwgXrefGraph(acdbCurDwg(), graphXref)=%s",acadErrorStatusText(es));
}
}