DWG and DXF conversion never finishes (sample provided)

Hi,

I have these three files, where the conversion starts, but never finishes. Am I doing something wrong in my code? I noticed that the files have a UNIT set where as the previous file I converted didn’t. You can download the files from here:

  • File 1 - DXF

  • File 2 - DWG

  • File 3 - DWG

My code:

Blockquoteusing System;
using System.IO;
using Aspose.CAD;
using Aspose.CAD.FileFormats.Cad;
using Aspose.CAD.FileFormats.Dwf;
using Aspose.CAD.FileFormats.Ifc.IFC2X3.Entities;
using Aspose.CAD.ImageOptions;
using static System.Net.Mime.MediaTypeNames;

namespace AsposeCad
{
internal class Program
{
static void Main(string[] args)
{
var inputFilePath = “input.dwfx”;
var outputFilePath = “input.pdf”;

        Console.WriteLine($"Loading file: {inputFilePath}");
        try
        {
            /*using (var cadImage = Image.Load(inputFilePath))
            {
                var rasterizationOptions = new CadRasterizationOptions()
                {
                    PageWidth = 3000,
                    PageHeight = 3000
                };

                var pdfOptions = new PdfOptions
                {
                    VectorRasterizationOptions = rasterizationOptions
                    cadRasterizationOptions.UnitType = Aspose.CAD.ImageOptions.UnitType.Centimenter;
            };

                Console.WriteLine($"Converting {inputFilePath} to {outputFilePath}");
                cadImage.Save(outputFilePath, pdfOptions);
            }*/

            //using (Aspose.CAD image = Aspose.CAD.Image.Load(inputFilePath))

            using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(inputFilePath))
            {

                CadImage cadImage = (CadImage)image;// -> working for DWG
                //DwfImage cadImage = (DwfImage)image; -> working for DWXF
                //DxfImage cadImage = (DxfImage)image;
                    cadImage.UpdateSize(); //--> works for all other filetypes except DXF
                /*foreach (var entity in cadImage.Entities)
                {
                    entity.LineWeight = 0;
                }*/
                /*foreach (Aspose.CAD.FileFormats.Cad.CadTables.CadLayerTable layer in cadImage.Layers)
                {
                    layer.LineWeight = 0;
                }*/

                // Create an instance of CadRasterizationOptions and set its various properties
                Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions();
                //rasterizationOptions.PageWidth = 1600;
                //rasterizationOptions.PageHeight = 1600;
                 //rasterizationOptions.AutomaticLayoutsScaling = false;
                 //rasterizationOptions.ScaleMethod = ScaleType.GrowToFit;
                 //rasterizationOptions.NoScaling = false;
                rasterizationOptions.DrawType = Aspose.CAD.FileFormats.Cad.CadDrawTypeMode.UseObjectColor;
                //rasterizationOptions.Layers = new string[] { "0" };


         //rasterizationOptions.ContentAsBitmap = true;
                rasterizationOptions.Quality = new RasterizationQuality();
                var quality = new RasterizationQuality();
                quality.Arc = RasterizationQualityValue.High;
                quality.Text = RasterizationQualityValue.High;
                quality.TextThicknessNormalization = true;
                quality.Hatch = RasterizationQualityValue.High;
                quality.ObjectsPrecision = RasterizationQualityValue.High; // -> works for all fileformats

                // Export to specific size
                bool currentUnitIsMetric = false;
                double currentUnitCoefficient = 1.0;
                DefineUnitSystem(image.UnitType, out currentUnitIsMetric, out currentUnitCoefficient);

                Console.WriteLine("Dealing with units");
                Console.WriteLine(currentUnitIsMetric + " unit " + currentUnitCoefficient);

            
                if (currentUnitIsMetric)
                {
                    double metersCoeff = 1 / 1000.0;
                    double scaleFactor = metersCoeff / currentUnitCoefficient;
                    //rasterizationOptions.PageWidth = (float)(210 * scaleFactor);
                    //rasterizationOptions.PageHeight = (float)(297 * scaleFactor);
                    rasterizationOptions.UnitType = UnitType.Millimeter;
                }
                else
                {
                    //rasterizationOptions.PageWidth = (float)(8.27f / currentUnitCoefficient);
                    //rasterizationOptions.PageHeight = (float)(11.69f / currentUnitCoefficient);
                    rasterizationOptions.UnitType = UnitType.Inch;
                } // works for all file types


                // Create an instance of PdfOptions
                Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions();

                // Set the VectorRasterizationOptions property
                pdfOptions.VectorRasterizationOptions = rasterizationOptions;

                //Export CAD to PDF
                image.Save(inputFilePath + "_OUTPUT", pdfOptions);

                // Create an instance of TiffOptions
                Aspose.CAD.ImageOptions.TiffOptions tiffOptions = new Aspose.CAD.ImageOptions.TiffOptions(Aspose.CAD.FileFormats.Tiff.Enums.TiffExpectedFormat.Default);

                // Set the VectorRasterizationOptions property
                tiffOptions.VectorRasterizationOptions = rasterizationOptions;

                //Export CAD to TIFF
                //image.Save(inputFilePath + "result_out.tiff", tiffOptions);
            }


        //Console.WriteLine($"File {inputFilePath} converted to {outputFilePath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error converting CAD to PDF: {ex}");
        }




    }

    private static void DefineUnitSystem(UnitType unitType, out bool isMetric, out double coefficient)
    {
        isMetric = false;
        coefficient = 1.0;

        switch (unitType)
        {
            case UnitType.Parsec:
                coefficient = 3.0857 * 10000000000000000.0;
                isMetric = true;
                break;
            case UnitType.LightYear:
                coefficient = 9.4607 * 1000000000000000.0;
                isMetric = true;
                break;
            case UnitType.AstronomicalUnit:
                coefficient = 1.4960 * 100000000000.0;
                isMetric = true;
                break;
            case UnitType.Gigameter:
                coefficient = 1000000000.0;
                isMetric = true;
                break;
            case UnitType.Kilometer:
                coefficient = 1000.0;
                isMetric = true;
                break;
            case UnitType.Decameter:
                isMetric = true;
                coefficient = 10.0;
                break;
            case UnitType.Hectometer:
                isMetric = true;
                coefficient = 100.0;
                break;
            case UnitType.Meter:
                isMetric = true;
                coefficient = 1.0;
                break;
            case UnitType.Centimenter:
                isMetric = true;
                coefficient = 0.01;
                break;
            case UnitType.Decimeter:
                isMetric = true;
                coefficient = 0.1;
                break;
            case UnitType.Millimeter:
                isMetric = true;
                coefficient = 0.001;
                break;
            case UnitType.Micrometer:
                isMetric = true;
                coefficient = 0.000001;
                break;
            case UnitType.Nanometer:
                isMetric = true;
                coefficient = 0.000000001;
                break;
            case UnitType.Angstrom:
                isMetric = true;
                coefficient = 0.0000000001;
                break;
            case UnitType.Inch:
                coefficient = 1.0;
                break;
            case UnitType.MicroInch:
                coefficient = 0.000001;
                break;
            case UnitType.Mil:
                coefficient = 0.001;
                break;
            case UnitType.Foot:
                coefficient = 12.0;
                break;
            case UnitType.Yard:
                coefficient = 36.0;
                break;
            case UnitType.Mile:
                coefficient = 63360.0;
                break;
        }
    }

}

}

@Pavitter
Hi.
I can confirm the issue, we will look what is happening there.

We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): CADNET-9220

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

thank you very much! where can i track the progress of the ticket?

@Pavitter,
The ticket status is available at the bottom of this thread, I will also post here message once the release with fix is available or in case of other questions.

thank you very much! appreciate the help

1 Like