Vertex color for a SubDMesh

By Balaji Ramamoorthy

To assign per-vertex colors for a SubDMesh, the subDMesh entity must be added to the database before the “AcDbSubDMesh::setVertexColorArray” can be used. Here is a sample code :

// Vertex color
AcCmEntityColor vColor; 
vColor.setColorMethod(AcCmEntityColor::kByACI); 
 
AcArray clrArray;
 
// Vertices
AcGePoint3dArray vertexArray;
vertexArray.setPhysicalLength(4);
 
// Vertex-1
AcGePoint3d pt1(0.0, 0.0, 0.0);
vertexArray.append(pt1);
vColor.setColorIndex(1); // Red
clrArray.append(vColor);
 
// Vertex-2
AcGePoint3d pt2(20.0, 0.0, 0.0);
vertexArray.append(pt2);
vColor.setColorIndex(3); // Green 
clrArray.append(vColor);
 
// Vertex-3
AcGePoint3d pt3(20.0, 10.0, 0.0);
vertexArray.append(pt3);
vColor.setColorIndex(2); // Yellow
clrArray.append(vColor);
 
// Vertex-4
AcGePoint3d pt4(0.0, 10.0, 0.0);
vertexArray.append(pt4);
vColor.setColorIndex(5); // Blue 
clrArray.append(vColor);
 
// Faces
AcArray faceArray;
faceArray.setPhysicalLength(8);
 
// Face-1 (Vertex-1 Vertex-2 Vertex-4)
faceArray.append(3);
faceArray.append(0);faceArray.append(1);faceArray.append(3);
 
// Face-2 (Vertex-2 Vertex-3 Vertex-4)
faceArray.append(3);
faceArray.append(1);faceArray.append(2);faceArray.append(3);
 
AcDbSubDMesh *pSubDMesh = new AcDbSubDMesh();
Acad::ErrorStatus es = pSubDMesh->setSubDMesh
                                (vertexArray, faceArray, 0);
 
AcDbBlockTable *pBlockTable;
AcDbBlockTableRecord *pSpaceRecord;
 
es = acdbHostApplicationServices()->workingDatabase()
                ->getSymbolTable(pBlockTable, AcDb::kForRead);
es = pBlockTable
    ->getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite);
es = pBlockTable->close();
 
// For Vertex color to work, the SubDMesh must be added 
// to the database 
AcDbObjectId meshId = AcDbObjectId::kNull;
es = pSpaceRecord->appendAcDbEntity(meshId, pSubDMesh);
 
es = pSubDMesh->setVertexColorArray(clrArray);
 
es = pSubDMesh->close();
 
es = pSpaceRecord->close();

Here is the SubDMesh created by the sample code :
Per-VertexColors


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading