string ProjectionAlgos::getDXF(ExtractionType type, double /*scale*/, double tolerance)
{
    stringstream result;
    DXFOutput output;

    if (!H.IsNull() && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh_IncrementalMesh(H,tolerance);
        result  << output.exportEdges(H);
    }
    if (!HO.IsNull() && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh_IncrementalMesh(HO,tolerance);
        result  << output.exportEdges(HO);
    }
    if (!VO.IsNull()) {
        //float width = 0.35f/scale;
        BRepMesh_IncrementalMesh(VO,tolerance);
        result  << output.exportEdges(VO);
    }
    if (!V.IsNull()) {
        //float width = 0.35f/scale;
        BRepMesh_IncrementalMesh(V,tolerance);
        result  << output.exportEdges(V);
    }
    if (!V1.IsNull() && (type & WithSmooth)) {
        //float width = 0.35f/scale;
        BRepMesh_IncrementalMesh(V1,tolerance);
        result  << output.exportEdges(V1);
    }
    if (!H1.IsNull() && (type & WithSmooth) && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh_IncrementalMesh(H1,tolerance);
        result  << output.exportEdges(H1);
    }

    return result.str();
}
std::string ProjectionAlgos::getDXF(ExtractionType type, float scale, float tolerance)
{
    std::stringstream result;
    DXFOutput output;
    
    result << "0"          << endl
        << "SECTION"  << endl

        << "2"          << endl
        << "ENTITIES" << endl;

    if (!H.IsNull() && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh::Mesh(H,tolerance);
        result  //<< "<g" 
                //<< " id=\"" << ViewName << "\"" << endl
                /*<< "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl
                << "   stroke-linecap=\"butt\"" << endl
                << "   stroke-linejoin=\"miter\"" << endl
                << "   stroke-dasharray=\"5 3\"" << endl
                << "   fill=\"none\"" << endl
                << "  >" << endl*/
                << output.exportEdges(H);
                //<< "</g>" << endl;
    }
    if (!HO.IsNull() && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh::Mesh(HO,tolerance);
        result  //<< "<g" 
                //<< " id=\"" << ViewName << "\"" << endl
                /*<< "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl
                << "   stroke-linecap=\"butt\"" << endl
                << "   stroke-linejoin=\"miter\"" << endl
                << "   stroke-dasharray=\"5 3\"" << endl
                << "   fill=\"none\"" << endl
                << "  >" << endl*/
                << output.exportEdges(HO);
                //<< "</g>" << endl;
    }
    if (!VO.IsNull()) {
        //float width = 0.35f/scale;
        BRepMesh::Mesh(VO,tolerance);
        result  //<< "<g" 
                //<< " id=\"" << ViewName << "\"" << endl

                /*<< "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl
                << "   stroke-linecap=\"butt\"" << endl
                << "   stroke-linejoin=\"miter\"" << endl
                << "   fill=\"none\"" << endl
                << "  >" << endl*/

                << output.exportEdges(VO);
                //<< "</g>" << endl;
    }
    if (!V.IsNull()) {
        //float width = 0.35f/scale;
        BRepMesh::Mesh(V,tolerance);
        result  //<< "<g" 
                //<< " id=\"" << ViewName << "\"" << endl
                /*<< "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl
                << "   stroke-linecap=\"butt\"" << endl

                << "   stroke-linejoin=\"miter\"" << endl
                << "   fill=\"none\"" << endl
                << "  >" << endl*/
                << output.exportEdges(V);
                //<< "</g>" << endl;

    }
    if (!V1.IsNull() && (type & WithSmooth)) {
        //float width = 0.35f/scale;
        BRepMesh::Mesh(V1,tolerance);
        result  //<< "<g" 

                //<< " id=\"" << ViewName << "\"" << endl
               /* << "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl
                << "   stroke-linecap=\"butt\"" << endl
                << "   stroke-linejoin=\"miter\"" << endl
                << "   fill=\"none\"" << endl

                << "  >" << endl*/
                << output.exportEdges(V1);
                //<< "</g>" << endl;
    }
    if (!H1.IsNull() && (type & WithSmooth) && (type & WithHidden)) {
        //float width = 0.15f/scale;
        BRepMesh::Mesh(H1,tolerance);
        result  //<< "<g" 
                //<< " id=\"" << ViewName << "\"" << endl
                /*<< "   stroke=\"rgb(0, 0, 0)\"" << endl 
                << "   stroke-width=\"" << width << "\"" << endl

                << "   stroke-linecap=\"butt\"" << endl
                << "   stroke-linejoin=\"miter\"" << endl
                << "   stroke-dasharray=\"5 3\"" << endl
                << "   fill=\"none\"" << endl
                << "  >" << endl*/

                << output.exportEdges(H1);
                //<< "</g>" << endl;
    }


    result      << 0          << endl
                << "ENDSEC"   << endl
                << 0          << endl
                << "EOF";

    return result.str();
}