From 8b4a2895abf3fbd6454f797ec5921b72da9df7ab Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 4 Jun 2018 12:54:42 -0400 Subject: [PATCH] Control Dxf Point export by preference --- src/Mod/Import/App/ImpExpDxf.cpp | 35 ++++++++++++++++---------------- src/Mod/Import/App/ImpExpDxf.h | 1 + 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/Mod/Import/App/ImpExpDxf.cpp b/src/Mod/Import/App/ImpExpDxf.cpp index ae6a50f88e..a3fba38907 100644 --- a/src/Mod/Import/App/ImpExpDxf.cpp +++ b/src/Mod/Import/App/ImpExpDxf.cpp @@ -339,6 +339,7 @@ void ImpExpDxfWrite::setOptions(void) ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(getOptionSource().c_str()); optionMaxLength = hGrp->GetFloat("maxsegmentlength",5.0); optionPolyLine = hGrp->GetBool("DiscretizeEllipses",true); + optionExpPoints = hGrp->GetBool("ExportPoints",false); } void ImpExpDxfWrite::exportShape(const TopoDS_Shape input) @@ -392,23 +393,23 @@ void ImpExpDxfWrite::exportShape(const TopoDS_Shape input) } } - //export Vertice - //wf: this is a lot of work. Not sure that Points are worth that much in dxf?? - TopExp_Explorer verts(input, TopAbs_VERTEX); - std::vector duplicates; - for (int i = 1 ; verts.More(); verts.Next(),i++) { - const TopoDS_Vertex& v = TopoDS::Vertex(verts.Current()); - gp_Pnt p = BRep_Tool::Pnt(v); - duplicates.push_back(p); - } - - std::sort(duplicates.begin(),duplicates.end(),ImpExpDxfWrite::gp_PntCompare); - auto newEnd = std::unique(duplicates.begin(),duplicates.end(),ImpExpDxfWrite::gp_PntEqual); - std::vector uniquePts(duplicates.begin(),newEnd); - for (auto& p: uniquePts) { - double point[3] = {0,0,0}; - gPntToTuple(point, p); - WritePoint(point, getLayerName().c_str()); + if (optionExpPoints) { + TopExp_Explorer verts(input, TopAbs_VERTEX); + std::vector duplicates; + for (int i = 1 ; verts.More(); verts.Next(),i++) { + const TopoDS_Vertex& v = TopoDS::Vertex(verts.Current()); + gp_Pnt p = BRep_Tool::Pnt(v); + duplicates.push_back(p); + } + + std::sort(duplicates.begin(),duplicates.end(),ImpExpDxfWrite::gp_PntCompare); + auto newEnd = std::unique(duplicates.begin(),duplicates.end(),ImpExpDxfWrite::gp_PntEqual); + std::vector uniquePts(duplicates.begin(),newEnd); + for (auto& p: uniquePts) { + double point[3] = {0,0,0}; + gPntToTuple(point, p); + WritePoint(point, getLayerName().c_str()); + } } } diff --git a/src/Mod/Import/App/ImpExpDxf.h b/src/Mod/Import/App/ImpExpDxf.h index 5d61165602..c04bc3f35e 100644 --- a/src/Mod/Import/App/ImpExpDxf.h +++ b/src/Mod/Import/App/ImpExpDxf.h @@ -114,6 +114,7 @@ namespace Import std::string m_optionSource; double optionMaxLength; bool optionPolyLine; + bool optionExpPoints; }; }