31/08/2016
Создание простой полигональной сети
Это пример создания простой полигональной сети при помощи ObjectARX. Если используется конструктор AcDbPolygonMesh() без каких-либо параметров, необъодимо явно задать количество вершин в направлениях M и N, а также открыта или закрыта полигональная сеть в направлениях M и N:
Код - C++: [Выделить]
- void createSimplePolygonMesh()
- {
- // Создаём полилинию
- AcGePoint3dArray ptArr;
- ptArr.setLogicalLength(4);
- for (int i = 0; i < 4; i++)
- {
- ptArr[i].set((double)(i/2), (double)(i%2), 0.0);
- }
- AcDb2dPolyline *pNewPline =
- new AcDb2dPolyline( AcDb::k2dSimplePoly, ptArr, 0.0, Adesk::kTrue);
- pNewPline->setColorIndex(3);
- // Используем конструктор полигональной сети без параметров
- AcDbPolygonMesh *pMesh = new AcDbPolygonMesh();
- pMesh->setMSize(1);
- pMesh->setNSize(4);
- pMesh->makeMClosed();
- pMesh->makeNClosed();
- AcDbVoidPtrArray arr;
- arr.append(pMesh);
- AcDbBlockTable *pBlockTable;
- acdbHostApplicationServices()->workingDatabase()->
- getSymbolTable(pBlockTable, AcDb::kForRead);
- AcDbBlockTableRecord *pBlockTableRecord;
- pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
- pBlockTable->close();
- AcDbObjectId plineObjId;
- pBlockTableRecord->appendAcDbEntity(plineObjId,pNewPline);
- AcDbObjectIterator *pVertIter= pNewPline->vertexIterator();
- AcDb2dVertex *pVertex;
- AcGePoint3d location;
- AcDbObjectId vertexObjId;
- for (int vertexNumber = 0; !pVertIter->done();
- vertexNumber++, pVertIter->step())
- {
- vertexObjId = pVertIter->objectId();
- acdbOpenObject(pVertex, vertexObjId,
- AcDb::kForRead);
- location = pVertex->position();
- pVertex->close();
- AcDbPolygonMeshVertex* polyVertex =
- new AcDbPolygonMeshVertex(pVertex->position());
- pMesh->appendVertex(polyVertex);
- polyVertex->close();
- }
- delete pVertIter;
- pBlockTableRecord->appendAcDbEntity(pMesh);
- pBlockTableRecord->close();
- pNewPline->close();
- pMesh->close();
- }
Источник: http://adndevblog.typepad.com/autocad/2016/08/creating-a-simple-polygon-mesh.html
Автор перевода: Александр Ривилис
Обсуждение: http://adn-cis.org/forum/index.php?topic=7302
Опубликовано 31.08.2016