Skip to content

Commit 8188243

Browse files
committed
Export contours in DXF
1 parent cd6b2c9 commit 8188243

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

Diff for: TODO

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Before 0.5.0:
1515

1616
Before 1.0.0:
1717
•Draw contours, removing wiggles as long as they don't violate the accuracy requirement ✓
18-
•Export contours in DXF
18+
•Export contours in DXF
1919

2020
Whenever:
2121
•Color the triangles of the TIN in PLY format to show which triangles are empty, even if empty triangles are exported, and which have dots out of tolerance (Points, not triangles, are colored in 0.5.1, and it does not indicate dots out of tolerance.)

Diff for: dxf.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,6 @@ void insertTriangle(vector<GroupCode> &dxfData,triangle &tri,double outUnit)
668668
colorNumber.integer=0;
669669
dxfData.push_back(entityType);
670670
dxfData.push_back(layerName);
671-
dxfData.push_back(colorNumber);
672671
insertXyz(dxfData,10,*tri.a/outUnit);
673672
insertXyz(dxfData,11,*tri.b/outUnit);
674673
insertXyz(dxfData,12,*tri.c/outUnit); // A 3DFACE always has four corners. That it's a
@@ -686,10 +685,9 @@ void insertPolyline(vector<GroupCode> &dxfData,polyline &poly,DxfLayer &lay,doub
686685
colorNumber.integer=0;
687686
closedFlag.integer=!poly.isopen();
688687
nVertices.integer=poly.size()+poly.isopen();
689-
elev.real=poly.getElevation();
688+
elev.real=poly.getElevation()/outUnit;
690689
dxfData.push_back(entityType);
691690
dxfData.push_back(layerName);
692-
dxfData.push_back(colorNumber);
693691
dxfData.push_back(nVertices);
694692
dxfData.push_back(closedFlag);
695693
dxfData.push_back(elev);

Diff for: dxf.h

+1
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,4 @@ void openEntitySection(std::vector<GroupCode> &dxfData);
8989
void closeEntitySection(std::vector<GroupCode> &dxfData);
9090
void dxfEnd(std::vector<GroupCode> &dxfData);
9191
void insertTriangle(std::vector<GroupCode> &dxfData,triangle &tri,double outUnit);
92+
void insertPolyline(std::vector<GroupCode> &dxfData,polyline &poly,DxfLayer &lay,double outUnit);

Diff for: fileio.cpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,11 @@ void writeDxf(string outputFile,bool asc,double outUnit,int flags)
337337
vector<GroupCode> dxfCodes;
338338
vector<DxfLayer> dxfLayers;
339339
map<ContourLayer,int> contourLayers;
340-
int i;
340+
int i,n;
341341
map<ContourLayer,int>::iterator j;
342+
map<ContourInterval,vector<polyspiral> >::iterator k;
342343
DxfLayer layer;
344+
ContourLayer cl;
343345
BoundRect br;
344346
ofstream dxfFile(outputFile,ofstream::binary|ofstream::trunc);
345347
br.include(&net);
@@ -370,6 +372,17 @@ void writeDxf(string outputFile,bool asc,double outUnit,int flags)
370372
else;
371373
else
372374
cerr<<"Invalid triangle "<<i<<endl;
375+
for (k=net.contours.begin();k!=net.contours.end();++k)
376+
{
377+
cl.ci=k->first;
378+
for (i=0;i<k->second.size();i++)
379+
{
380+
cl.tp=cl.ci.contourType(k->second[i].getElevation());
381+
n=contourLayers[cl]-1;
382+
layer=dxfLayers[n];
383+
insertPolyline(dxfCodes,k->second[i],layer,outUnit);
384+
}
385+
}
373386
closeEntitySection(dxfCodes);
374387
dxfEnd(dxfCodes);
375388
writeDxfGroups(dxfFile,dxfCodes,asc);

0 commit comments

Comments
 (0)