19/10/2013
Изменение цвета вершины у сети (SubDMesh)
Чтобы назначить цвета вершинам сети (SubDMesh), примитив сети (SubDMesh) должен быть предварительно добавлен в базу данных чертежа, прежде чем вызвать метод "AcDbSubDMesh::setVertexColorArray". Вот пример:
Код - C++: [Выделить]
- // Цвет вершины
- AcCmEntityColor vColor;
- vColor.setColorMethod(AcCmEntityColor::kByACI);
- AcArray<AcCmEntityColor> clrArray;
- // Вершины
- AcGePoint3dArray vertexArray;
- vertexArray.setPhysicalLength(4);
- // Вершина-1
- AcGePoint3d pt1(0.0, 0.0, 0.0);
- vertexArray.append(pt1);
- vColor.setColorIndex(1); // Красный
- clrArray.append(vColor);
- // Вершина-2
- AcGePoint3d pt2(20.0, 0.0, 0.0);
- vertexArray.append(pt2);
- vColor.setColorIndex(3); // Зелёный
- clrArray.append(vColor);
- // Вершина-3
- AcGePoint3d pt3(20.0, 10.0, 0.0);
- vertexArray.append(pt3);
- vColor.setColorIndex(2); // Желтый
- clrArray.append(vColor);
- // Вершина-4
- AcGePoint3d pt4(0.0, 10.0, 0.0);
- vertexArray.append(pt4);
- vColor.setColorIndex(5); // Голубой
- clrArray.append(vColor);
- // Грани
- AcArray<Adesk::Int32> faceArray;
- faceArray.setPhysicalLength(8);
- // Грань-1 (Вершина-1 Вершина-2 Вершина-4)
- faceArray.append(3);
- faceArray.append(0);faceArray.append(1);faceArray.append(3);
- // Грань-2 (Вершина-2 Вершина-3 Вершина-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();
- // Чтобы цвет вершины был задействован, сеть (SubDMesh) должна быть добавлена
- // в базу чертежа
- AcDbObjectId meshId = AcDbObjectId::kNull;
- es = pSpaceRecord->appendAcDbEntity(meshId, pSubDMesh);
- es = pSubDMesh->setVertexColorArray(clrArray);
- es = pSubDMesh->close();
- es = pSpaceRecord->close();
Вот сеть (SubDMesh) созданная этим кодом:
Источник: http://adndevblog.typepad.com/autocad/2013/09/vertex-color-for-a-subdmesh.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=272
Опубликовано 19.10.2013