Тема: AutoCAD 2005. Отрисовка скрытого объекта

Получил следующую проблему:
Создаём линию красного цвета.Аппендим её в файл.
Создаём ТОЧНО ТАКУЮ-ЖЕ линию синего цвета.Аппендим её в файл.Хотим увидеть КРАСНУЮ по нажатию кнопки или запуская
комманду.Код :

AcDbEntity *pEnt;
 if (Acad::eOk == acdbOpenAcDbEntity(pEnt,oId,AcDb::kForWrite,true))
 {
  pEnt->draw();
  pEnt->recordGraphicsModified();
  pEnt->close();
 }
 acedUpdateDisplay();

не помог.Всегда видим только СИНИЮ линию.
В 2002 всё работало.2005 нет.
Draworder sample от Autodesk не помог.

Re: AutoCAD 2005. Отрисовка скрытого объекта

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 линий очень не сложно поменять порядок их видимости.

Re: AutoCAD 2005. Отрисовка скрытого объекта

Александр Ривилис это всё-таки Александр Ривилис.ОГРОМНОЕ СПАСИБО!!!

Re: AutoCAD 2005. Отрисовка скрытого объекта

:) Рад был помочь!