A 3D editing plugin
Programmer: how the skin is done 
HELP !
I'd be grateful if anybody could contribute a better skin method.
Currently, there are 3 methods to make the skin, and all 3 are pretty similar.
[1] Static points:
A user-defined ("n corners") number of reference points is set at the "Save DXF" popup menu. The image center is used to generate a circle with a radius larger than any possible distance between two pixels of the image. Reference points are evenly distributed over the circle perimeter.
Distance from every curve point to each reference point is calculated, and lowest distance values are selected -the corners. From now on, the curve is segmented, each segment containing curve points from one corner to the next.
Points from consecutive segments in the Z axis are used to make triangles, which are defined as required in DXF format.
Most reliable method, but skin may look funny sometimes.
[2] relative points:
Same as static, but center of circle to define reference points is calculated as the average center of two consecutive curves.
It corrects some bad segment alignments in some cases.
[3] paired rays:
Similar to relative points method, but corners are found not only by the lowest distance to the reference points, but also by the lowest angle difference. This ensures that corners are selected among such curve points closer to the reference point and to the "ray" going from the center of curve to the reference point.
Best method, but may not work properly in some cases.
Schemata 
saveDXF
|
|--- > makeDXFSkin
|
|---> getGroupedCurves
|
|---> getGroupTriangles
|
|-------|---> retrieveSegments_static_points
| | |
| | |---> findCornerPoints_static_points
| | |---> checkAndFixToCCWOrderInDoubles
| | |---> countPointsInBetween
| | |---> getSegmentsInDoubles
| |
| |---> writeTriangles_static_points
| |
| |---> duplicateTwoTimesNeededPointsInDoubles
| |---> makeSegmentTrianglesInDoubles
| |---> writeTrianglesInString
|
|
|-------|---> retrieveSegments_relative_points
| | |
| | |---> findCornerPoints_relative_points
| | |---> checkAndFixToCCWOrderInDoubles
| | |---> countPointsInBetween
| | |---> getSegmentsInDoubles
| |
| |---> writeTriangles_relative_points
| |
| |---> duplicateTwoTimesNeededPointsInDoubles
| |---> makeSegmentTrianglesInDoubles
| |---> writeTrianglesInString
|
|-------|---> retrieveSegments_paired_rays
| |
| |---> findCornerPoints_paired_rays
| |---> checkAndFixToCCWOrderInDoubles
| |---> countPointsInBetween
| |---> getSegmentsInDoubles
|
|---> writeTriangles_paired_rays
|
|---> duplicateTwoTimesNeededPointsInDoubles
|---> makeSegmentTrianglesInDoubles
|---> writeTrianglesInString
|