Skip to content

Commit

Permalink
Mesh: [skip ci] improve support of asymptote export
Browse files Browse the repository at this point in the history
  • Loading branch information
wwmayer committed Aug 27, 2020
1 parent 50bbd52 commit 58a9268
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions src/Mod/Mesh/App/Core/MeshIO.cpp
Expand Up @@ -2417,9 +2417,12 @@ bool MeshOutput::SaveAsymptote(std::ostream &out) const
clIter.Begin();
clEnd.End();

const MeshPointArray& rPoints = _rclMesh.GetPoints();
const MeshFacetArray& rFacets = _rclMesh.GetFacets();
bool saveFaceColor = (_material && _material->binding == MeshIO::PER_FACE &&
_material->diffuseColor.size() == rFacets.size());
bool saveVertexColor = (_material && _material->binding == MeshIO::PER_VERTEX &&
_material->diffuseColor.size() == rPoints.size());
bool saveFaceColor = (_material && _material->binding == MeshIO::PER_FACE &&
_material->diffuseColor.size() == rFacets.size());

std::size_t index = 0;
const MeshGeomFacet *pclFacet;
Expand All @@ -2435,14 +2438,25 @@ bool MeshOutput::SaveAsymptote(std::ostream &out) const
<< pclFacet->_aclPoints[i].z << ")--";
}

out << "cycle),\n";
out << "cycle";

if (saveFaceColor) {
if (saveVertexColor) {
const MeshFacet& face = rFacets[index];
out << ",\n new pen[] {";
for (int i = 0; i < 3; i++) {
const App::Color& c = _material->diffuseColor[face._aulPoints[i]];
out << "rgb(" << c.r << ", " << c.g << ", " << c.b << ")";
if (i < 3)
out << ", ";
}
out << "}));\n";
}
else if (saveFaceColor) {
const App::Color& c = _material->diffuseColor[index];
out << " rgb(" << c.r << ", " << c.g << ", " << c.b << "));\n";
out << "),\n rgb(" << c.r << ", " << c.g << ", " << c.b << "));\n";
}
else {
out << " rgb(0.8, 0.8, 0.8));\n";
out << "),\n rgb(0.8, 0.8, 0.8));\n";
}

++clIter;
Expand Down

0 comments on commit 58a9268

Please sign in to comment.