//--------------------------------------------------------------------------------------------------

        #endregion

        #region IVectorExporter

        bool IVectorExporter.DoExport(string fileName, VectorExportTemplate template, VectorExportLayer[] layers)
        {
            bool result;

            using (new ProcessingScope(null, "Exporting vector to DXF"))
            {
                var stream = DxfVectorExporter.Export(template, layers, Settings.ExportVersion, _GetFlags(), Settings.ExportPolygonPrecision);
                result = _WriteToFile(fileName, stream);
            }
            return(result);
        }
        //--------------------------------------------------------------------------------------------------

        #region Helper

        MemoryStream RunExporter(bool useTriangulation, Ax3 projection, TopoDS_Shape[] shapes,
                                 DxfVersion version = DxfVersion.Latest, DxfFlags flags = DxfFlags.None)
        {
            var helper = new DrawingExportHelper(useTriangulation, projection);

            helper.IncludeEdgeType(HlrEdgeType.VisibleSharp);
            helper.IncludeEdgeType(HlrEdgeType.VisibleOutline);
            helper.IncludeEdgeType(HlrEdgeType.VisibleSmooth);
            helper.IncludeEdgeType(HlrEdgeType.HiddenSharp);
            helper.IncludeEdgeType(HlrEdgeType.HiddenOutline);

            var layers = helper.PrepareExportLayers(shapes);

            if (layers == null || layers.Length == 0)
            {
                return(new MemoryStream("!HLRExporterError!".ToUtf8Bytes()));
            }

            return(DxfVectorExporter.Export(VectorExportTemplate.Drawing, layers, version, flags));
        }