Draworder sample от Autodesk не помог.
Странно. Мне помог:
//-------------------------------------------
// Опустить примитив относительно другого
//-------------------------------------------
static void AboveAndBelowMoveBelow(void)
{
ads_point p;
ads_name en1,en2;
Acad::ErrorStatus es;
if (acedEntSel("\nУкажите примитив, который должен 'опуститься': ",en1,p) == RTNORM) {
if (acedEntSel("\nУкажите примитив, относительно которого первый примитив 'опустится': ",en2,p) == RTNORM) {
AcDbObjectId id1, id2;
acdbGetObjectId(id1,en1); acdbGetObjectId(id2,en2);
AcDbSortentsTable *pSortTab = NULL;
AcDbObjectId spaceId = acdbCurDwg()->currentSpaceId();
AcDbObjectPointer<AcDbBlockTableRecord> pBTR(spaceId,AcDb::kForRead);
if ((es = pBTR.openStatus()) == Acad::eOk) {
if ((es = pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true)) == Acad::eOk) {
AcDbObjectIdArray ar; ar.append(id1);
pSortTab->moveBelow(ar,id2);
pSortTab->close();
} else {
acutPrintf("\nОшибка открытия/создания AcDbSortentsTable: %d",acadErrorStatusText(es));
}
} else {
acutPrintf("\nОшибка открытия записи таблицы блоков: %d",acadErrorStatusText(es));
}
}
}
}
//-------------------------------------------
// Опустить примитив 'на дно'
//-------------------------------------------
static void AboveAndBelowMoveToBottomDown(void)
{
ads_point p;
ads_name en;
Acad::ErrorStatus es;
if (acedEntSel("\nУкажите примитив, который должен 'опуститься на дно': ",en,p) == RTNORM) {
AcDbObjectId id; acdbGetObjectId(id,en);
AcDbSortentsTable *pSortTab = NULL;
AcDbObjectId spaceId = acdbCurDwg()->currentSpaceId();
AcDbObjectPointer<AcDbBlockTableRecord> pBTR(spaceId,AcDb::kForRead);
if ((es = pBTR.openStatus()) == Acad::eOk) {
if ((es = pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true)) == Acad::eOk) {
AcDbObjectIdArray ar; ar.append(id);
pSortTab->moveToBottom(ar);
pSortTab->close();
} else {
acutPrintf("\nОшибка открытия/создания AcDbSortentsTable: %d",acadErrorStatusText(es));
}
} else {
acutPrintf("\nОшибка открытия записи таблицы блоков: %d",acadErrorStatusText(es));
}
}
}
Так что зная два objectId линий очень не сложно поменять порядок их видимости.