การส่งออกภาพวาด DWG/DXF และเลย์เอาต์ไปยังขนาดที่กำหนด

ส่งออกโมเดลและเลย์เอาต์ทั้งหมดเป็นขนาด PDF A4

Aspose.CAD API ช่วยให้คุณสามารถส่งออกรายการทั้งหมดของไฟล์ DWG/DXF ไปยังขนาด PDF ทางกายภาพที่กำหนด

โค้ดตัวอย่างต่อไปนี้จะตั้งค่าขนาดของ CadRasterizationOptions เพื่อให้ได้ขนาด PDF ที่ต้องการ ขนาดของแผ่นกระดาษ A4 คือ 210x297 มิลลิเมตร หรือ 8.27x11.69 นิ้ว และค่าที่ได้จะถูกใช้ในโค้ด

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;
}
}

ส่งออกเลย์เอาต์ CAD เป็น PDF ในขนาดที่แตกต่างกัน

บางครั้งมีความจำเป็นต้องส่งออกเลย์เอาต์ในขนาดทางกายภาพของมัน ตัวอย่างด้านล่างแสดงการส่งออกภาพวาดไปยัง PDF หลายหน้า ซึ่งแต่ละหน้าที่มีเนื้อหาเลย์เอาต์ มีขนาด PDF ทางกายภาพของตนเอง ตัวอย่างนี้ใช้ LayoutPageSizes คุณสมบัติ

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;
}