I am exporting a faceted mesh which is represented by its vertices array and face index array into dwg file format.
I used AcDbSubDmesh but closing the mesh returns "eNoDatabase".
const int subMeshLevel = 0;
auto subMesh = new AcDbSubDMesh();
AcGePoint3dArray verticesArray;
AcArray<AcCmEntityColor> colorsArray;
AcGeVector3dArray normalsArray;
AcArray<Adesk::Int32> faceArray;
{
verticesArray.append(AcGePoint3d(-1, 1, 0));
verticesArray.append(AcGePoint3d(-1, -1, 0));
verticesArray.append(AcGePoint3d(1, -1, 0));
faceArray.append(Adesk::Int32(3));
faceArray.append(Adesk::Int32(0));
faceArray.append(Adesk::Int32(1));
faceArray.append(Adesk::Int32(2));
}
qDebug() << __func__ << "mesh creation " << int(subMesh->setSubDMesh(verticesArray, faceArray, subMeshLevel));
// Open database
AcDbBlockTable *pBlockTable;
m_database->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close();
AcDbObjectId objectId;
pBlockTableRecord->appendAcDbEntity(objectId, subMesh);
pBlockTableRecord->close();
qDebug() << __func__ << " Result " << int(subMesh->close());
The error does not come from my database because if I replace the subDMesh by a simple AcDbPolyFaceMesh object, I can draw a piece of triangles within my dwg file.
I don't see where is the mistake of my usage of AcDbSubDmesh.
Looks like you only put 3 vertices in verticesArray instead of 4?