AcDbWipeout: проблема с ориентацией.

Автор Тема: AcDbWipeout: проблема с ориентацией.  (Прочитано 2610 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DebalanceАвтор темы

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Пытаюсь по координатам замкнутой полилинии создать вайпаут. В результате получаю странное перевёрнуто-смещённое отображение последнего.
Вот тестовый код:
Код - C++ [Выбрать]
  1. AcDbPolyline* TmpPolyline = new AcDbPolyline(3);
  2. TmpPolyline->addVertexAt(0, AcGePoint2d::kOrigin);
  3. TmpPolyline->addVertexAt(1, AcGePoint2d(0.0, 50.0));
  4. TmpPolyline->addVertexAt(2, AcGePoint2d(70.0, 0.0));
  5. TmpPolyline->setNormal(AcGeVector3d::kZAxis);
  6. TmpPolyline->setClosed(Adesk::kTrue);
  7. TmpPolyline->setColorIndex(1);
  8. AddEntityToBtr(ModelSpaceId, TmpPolyline);
  9.  
  10. Acad::ErrorStatus es = AcDbWipeout::createImageDefinition();
  11. if (es == Acad::eOk)
  12. {
  13.         AcDbWipeout *TmpWipe = new AcDbWipeout();
  14.         TmpWipe->setDatabaseDefaults();
  15.  
  16.         AcGePoint2dArray VertexArray;
  17.         VertexArray.setLogicalLength(TmpPolyline->numVerts());
  18.         for (int i = 0; i < TmpPolyline->numVerts(); i++)
  19.         {
  20.                 AcGePoint2d TmpPt;
  21.                 TmpPolyline->getPointAt(i, TmpPt);
  22.                 VertexArray.setAt(i, TmpPt);
  23.         }
  24.         VertexArray.append(VertexArray.at(0));
  25.  
  26.         if (TmpWipe->setClipBoundary(AcDbRasterImage::kPoly, VertexArray) == Acad::eOk)
  27.         {
  28.                 TmpWipe->setColorIndex(2);
  29.                 AddEntityToBtr(ModelSpaceId, TmpWipe);
  30.         }
  31. }
  32. else
  33. {
  34.         OutputDebugStringA((boost::format("\nError: <%d>") % es).str().c_str());
  35. }
  36.  

На выходе имеем такую картину:


Как с этим бороться? Как сориентировать?


Отмечено как Решение Debalance 28-05-2018, 15:32:57

Оффлайн DebalanceАвтор темы

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Re: AcDbWipeout: проблема с ориентацией.
« Ответ #1 : 28-05-2018, 14:32:49 »
Код - C++ [Выбрать]
  1. TmpWipe->setOrientation(AcGePoint3d::kOrigin + AcGeVector3d(-0.5, 0.5, 0.0), AcGeVector3d::kXAxis, AcGeVector3d(AcGeVector3d::kYAxis).negate());