Het exporteren van DWG/DXF-tekeningen en indelingen naar een specifieke grootte

Exporteer model en alle indelingen naar A4 PDF-grootte

Aspose.CAD API stelt u in staat om alle bladen van het DWG/DXF-bestand naar een specifieke fysieke PDF-grootte te exporteren.

De volgende voorbeeldcode stelt de grootte van het CadRasterizationOptions object in om de gewenste PDF-grootte te bereiken. De grootte van een A4-papierblad is 210x297 millimeter of 8,27x11,69 inch en deze waarden worden in de code gebruikt.

bool currentUnitIsMetric = false;
double currentUnitCoefficient = 1.0;
DefineUnitSystem(cadImage.UnitType, out currentUnitIsMetric, out 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;
}
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;
}
}

Exporteer CAD-indelingen naar PDF in verschillende formaten

Soms is het nodig om een indeling naar zijn fysieke grootte te exporteren. Het onderstaande voorbeeld demonstreert de export van de tekening naar een meerpagina-PDF waar elke pagina met indelingsinhoud zijn eigen fysieke PDF-grootte heeft. Dit voorbeeld gebruikt de LayoutPageSizes eigenschap.

using (CadImage cadImage = (CadImage)Image.Load(fileName))
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
foreach (CadLayout layout in cadImage.Layouts.Values)
{
if (layout.LayoutName == "Model") continue;
SizeF pageSize = GetPageSizeFromLayout(layout);
rasterizationOptions.LayoutPageSizes.Add(layout.LayoutName, pageSize);
}
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save(outPath, pdfOptions);
}
private static SizeF GetPageSizeFromLayout(CadLayout layout)
{
var isLandscape = IsLayoutLandscape(layout);
float pageWidth;
float pageHeight;
if (layout.PlotPaperUnits == CadPlotPaperUnits.PlotInInches)
{
pageWidth = (float)MillimetersToInches(layout.PlotPaperSize.Width);
pageHeight = (float)MillimetersToInches(layout.PlotPaperSize.Height);
}
else
{
pageWidth = (float)layout.PlotPaperSize.Width;
pageHeight = (float)layout.PlotPaperSize.Height;
}
if (isLandscape)
{
return new SizeF(pageHeight, pageWidth);
}
else
{
return new SizeF(pageWidth, pageHeight);
}
}
private static bool IsLayoutLandscape(CadLayout layout)
{
return layout.PlotRotation == CadPlotRotation.Clockwise90Degrees || layout.PlotRotation == CadPlotRotation.Counterclockwise90Degrees;
}
private static double MillimetersToInches(double millimeters)
{
const double MillimetersToInchesFactor = 0.0393701;
return millimeters * MillimetersToInchesFactor;
}