تحويل رسومات CAD إلى PDF وصيغ صور raster

تحويل رسومات CAD إلى صيغ صور Raster

Aspose.CAD لـ Java قادر على تحويل تنسيقات رسومات CAD مثل DXF و DWG إلى صيغ صور raster المدعومة مثل PNG، BMP، TIFF، JPEG و GIF. لقد استخدم Aspose.CAD لـ Java API وسائل فعالة وسهلة الاستخدام لتحقيق هذا الهدف. يمكنك تحويل أي تنسيق رسومات CAD مدعوم إلى صيغ صور raster باستخدام الخطوات البسيطة الموضحة أدناه.

  1. قم بتحميل ملف CAD في مثيل من Image.
  2. أنشئ مثيلًا من CadRasterizationOptions واضبط خصائصه الإلزامية مثل PageWidth و PageHeight.
  3. أنشئ مثيلًا من ImageOptionsBase واضبط خاصية VectorRasterizationOptions على مثيل CadRasterizationOptions الذي تم إنشاؤه في الخطوة السابقة.
  4. استدعِ Image.save مررًا مسار الملف (أو كائن MemoryStream) بالإضافة إلى مثيل ImageOptionsBase الذي تم إنشاؤه في الخطوة السابقة.

إليك الشيفرة المصدرية الكاملة.

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set page width & height
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1200);
// Create an instance of PngOptions for the resultant image
ImageOptionsBase options = new PngOptions();
//Set rasterization options
options.setVectorRasterizationOptions(rasterizationOptions);
// Save resultant image
image.save(dataDir + "conic_pyramid_raster_image_out_.png", options);

بشكل افتراضي، يقوم API بعرض فقط تخطيط “النموذج”. ومع ذلك، يمكنك أيضًا تحديد التخطيطات حسب اختيارك أثناء تحويل رسومات CAD إلى صيغ الصور.

تخصيص تحويل CAD

إجراءات تحويل CAD إلى PDF وتحويل CAD إلى صورة raster قابلة للتكوين بشكل كبير لأن الفصل CadRasterizationOptions قد تم تنفيذه بطريقة تقدم العديد من الخصائص الاختيارية التي عند ضبطها يمكن أن تتجاوز عملية العرض وفقًا لاحتياجات التطبيق.

فئة CadRasterizationOptions

فئة CadRasterizationOptions شائعة لجميع تنسيقات CAD المدعومة مثل DWG و DXF، لذلك، المعلومات التي تم مشاركتها في هذه المقالة صالحة لكلا التنسيقين المذكورين أعلاه.

أكثر خصائص CadRasterizationOptions فائدة هي:

الخاصيةالقيمة الافتراضيةمطلوبالوصف
PageWidth0نعمتحدد عرض الصفحة.
PageHeight0نعمتحدد ارتفاع الصفحة
ScaleMethodScaleType.ShrinkToFitلاتحدد ما إذا كان ينبغي ضبط الرسم تلقائيًا. القيمة الافتراضية تقوم تلقائيًا بتصغير الصورة لتناسب حجم اللوحة. انتقل إلى وضع GrowToFit، أو استخدم الإعداد None لتعطيل الضبط التلقائي.
BackgroundColorColor.Whiteلاتحدد لون خلفية الصورة الناتجة.
DrawTypeCadDrawTypeMode.UseDrawColorلاتحدد وضع تلوين الكيان. حدد خيار UseObjectColor لرسم الكيانات باستخدام لونها الأصلي، أو خيار UseDrawColor لتجاوز الألوان الأصلية.
DrawColorColor.Blackلاتحدد لون الكيان الذي تم تجاوزه (فقط إذا تم ضبط DrawType على قيمة خاصية UseDrawColor).
AutomaticLayoutsScalingخطألاتحدد ما إذا كان يجب إجراء ضبط تلقائي لحجم التخطيط ليتناسب مع تخطيط النموذج.

تعيين حجم اللوحة والوضع

التصدير من CAD إلى PDF أو CAD إلى صيغ صور raster ليس مهمة بسيطة. نظرًا لأن PDF الناتج أو الصورة يحتاج إلى تعريف حجم اللوحة، نحتاج إلى تحديد الأبعاد الناتجة لصفحة PDF لعرض الرسم بشكل صحيح. اضبط خصائص CadRasterizationOptions.PageWidth و CadRasterizationOptions.PageHeight بشكل صريح، أو قد تحصل على ImageSaveException.

بالإضافة إلى ذلك، يمكنك تحديد خيارات مقياس الأبعاد. يتم تعيين خيارات المقياس من خلال خاصية CadRasterizationOptions.ScaleMethod. استخدم هذه الخيار لضبط أبعاد الصورة تلقائيًا وفقًا لقيم CadRasterizationOptions.PageWidth و CadRasterizationOptions.PageHeight. بشكل افتراضي، يتم تعيين CadRasterizationOptions.ScaleMethod إلى وضع ScaleType.ShrinkToFit. تعرف هذه الخاصية السلوك التالي:

  • إذا كانت أبعاد الرسم CAD أكبر من حجم اللوحة الناتج، فإن أبعاد الرسم يتم تقليصها لتناسب في اللوحة الناتجة مع الحفاظ على نسبة الطول إلى العرض.
  • إذا كانت أبعاد الرسم CAD أصغر من حجم اللوحة الناتج، اضبط خاصية CadRasterizationOptions.ScaleMethod إلى ScaleType.GrowToFit لزيادة حجم الرسم ليتناسب مع اللوحة PDF مع الحفاظ على نسبة الطول إلى العرض.
  • أو تعطيل الضبط التلقائي باستخدام خيار ScaleType.None.

توضح الشيفرة المثال أدناه خيار الضبط التلقائي قيد الاستخدام.

String srcFile = dataDir + "conic_pyramid.dxf";
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setAutomaticLayoutsScaling(true);
rasterizationOptions.setNoScaling(true);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to PDF
objImage.save(dataDir +"result_out_.pdf", pdfOptions);
// Create an instance of TiffOptions
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default);
// Set the VectorRasterizationOptions property
tiffOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to TIFF
objImage.save(dataDir + "result_out_.tiff", tiffOptions);

تعيين ألوان الخلفية والرسم

بشكل افتراضي، يتم تعيين لوح الألوان للوحة الناتجة على مخطط وثيقة مشترك. هذا يعني أن جميع الكيانات داخل رسم CAD يتم رسمها بقلم لون أسود على خلفية بيضاء ثابتة. يمكن تغيير هذه الإعدادات باستخدام خصائص CadRasterizationOptions.BackgroundColor و CadRasterizationOptions.DrawColor. يتطلب تغيير خاصية CadRasterizationOptions.DrawColor أيضًا تعيين خاصية CadRasterizationOptions.DrawType للاستفادة من لون الرسم الذي سيتم استخدامه. تتحكم خاصية CadRasterizationOptions.DrawType فيما إذا كانت كيانات CAD تحتفظ بألوانها الأصلية أو يتم تحويلها إلى ألوان مخصصة. للحفاظ على ألوان الكيانات، حدد CadRasterizationOptions.DrawType كـ CadDrawTypeMode.UseObjectColor، وإلا، حدد قيمة CadDrawTypeMode.UseDrawColor.

توضح الشيفرة المثال أدناه كيفية استخدام خصائص الألوان المختلفة.

String srcFile = dataDir + "conic_pyramid.dxf";
// Image image = Image.load(srcFile);
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setBackgroundColor(com.aspose.cad.Color.getBeige());
rasterizationOptions.setDrawType(CadDrawTypeMode.UseDrawColor);
rasterizationOptions.setBackgroundColor(com.aspose.cad.Color.getBlue());
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to PDF
objImage.save(dataDir +"result_out_.pdf", pdfOptions);
// Create an instance of TiffOptions
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default);
// Set the VectorRasterizationOptions property
tiffOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to TIFF
objImage.save(dataDir + "result_out_.tiff", tiffOptions);

تعيين ضبط التخطيط التلقائي

معظم رسومات CAD تحتوي على أكثر من تخطيط مخزن في ملف واحد، وقد يكون لكل تخطيط أبعاد مختلفة. أثناء تحويل مثل هذه الرسومات CAD إلى PDF، قد يحتوي كل صفحة من PDF على مقياس مختلف وفقًا لحجم التخطيط. لجعل العرض متجانسًا، لقد عرضت Aspose.CAD APIs خاصية CadRasterizationOptions.AutomaticLayoutsScaling. قيمتها الافتراضية هي false ولكن عند تعيينها على true، سيقوم API بمحاولة البحث عن مقياس مطابق لكل تخطيط منفصل ورسمها بطريقة مناسبة من خلال إجراء عملية تغيير الحجم التلقائي وفقًا لحجم الصفحة.

إليك كيفية عمل خاصية CadRasterizationOptions.AutomaticLayoutsScaling بالتعاون مع خاصية CadRasterizationOptions.ScaleMethod.

  1. إذا كانت ScaleMethod قيد التعيين إلى ScaleType.ShrinkToFit أو ScaleType.GrowToFit مع تعيين AutomaticLayoutsScaling إلى false، فسيتم معالجة جميع التخطيطات (بما في ذلك النموذج) وفقًا للخيار الأول.
  2. إذا كانت ScaleMethod قيد التعيين إلى ScaleType.ShrinkToFit أو ScaleType.GrowToFit مع تعيين AutomaticLayoutsScaling إلى true، فسيتم معالجة جميع التخطيطات (باستثناء النموذج) وفقًا لحجمها بينما سيتم معالجة النموذج وفقًا للخيار الأول.
  3. إذا كانت ScaleMethod قيد التعيين إلى ScaleType.None مع تعيين AutomaticLayoutsScaling إلى true أو false، فلن يتم إجراء أي تغيير في القياس.

توضح الشيفرة المثال أدناه كيفية تعيين ضبط التخطيط التلقائي لتحويل CAD إلى PDF.

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Set Auto Layout Scaling
rasterizationOptions.setAutomaticLayoutsScaling(true);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the CAD to PDF
image.save(dataDir + "result_out_.pdf", pdfOptions);

تحويل تخطيطات CAD إلى صيغ صور Raster

Aspose.CAD لـ Java API قادر على تحويل تخطيطات CAD من التنسيقات المدعومة مثل DXF و DWG إلى صور raster مثل PNG و BMP و TIFF و JPEG و GIF. يوفر API أيضًا الدعم لعرض التخطيطات المحددة لرسم CAD إلى طبقات PSD مختلفة.  لقد استخدم Aspose.CAD لـ Java API وسائل فعالة وسهلة الاستخدام لتحديد قائمة التخطيطات CAD المطلوبة وعرضها إلى صيغ صور raster. إليك كيفية تحقيق نفس الشيء في 5 خطوات بسيطة كما هو موضح أدناه.

  1. قم بتحميل ملف CAD في مثيل من Image باستخدام طريقة المصنع load.
  2. أنشئ مثيلًا من CadRasterizationOptions واضبط خصائصه الإلزامية مثل PageWidth و PageHeight.
  3. حدد اسم/أسماء التخطيط المرغوب باستخدام خاصية CadRasterizationOptions.Layouts.
  4. أنشئ مثيلًا من ImageOptionsBase واضبط خاصيته VectorRasterizationOptions على مثيل CadRasterizationOptions الذي تم إنشاؤه في الخطوة السابقة.
  5. استدعِ Image.Save عن طريق تمرير مسار الملف (أو كائن MemoryStream) بالإضافة إلى مثيل ImageOptionsBase الذي تم إنشاؤه في الخطوة السابقة.

إليك الشيفرة المصدرية الكاملة.

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set page width & height
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1200);
// Specify a list of layout names
rasterizationOptions.setLayouts(new String[] {"Model", "Layout1"});
// Create an instance of TiffOptions for the resultant image
ImageOptionsBase options = new TiffOptions(TiffExpectedFormat.Default);
// Set rasterization options
options.setVectorRasterizationOptions(rasterizationOptions);
// Save resultant image
image.save(dataDir + "conic_pyramid_layoutstorasterimage_out_.tiff", options);

 

تمكين التتبع لعملية عرض CAD

لقد قدمت Aspose.CAD سلسلة من الفئات وحقول التعداد المساندة للمساعدة في تتبع عملية عرض CAD. مع وضع هذه التغييرات في الاعتبار، يمكن الآن تحقيق تحويل CAD إلى PDF كما يلي مع تمكين التتبع.

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(EnableTracking.class) + "DXFDrawings/";
Image image = Image.load(dataDir + "conic_pyramid.dxf");
{
OutputStream stream = new FileOutputStream(dataDir + "output_conic_pyramid.pdf");
{
PdfOptions pdfOptions = new PdfOptions();
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
cadRasterizationOptions.setPageWidth(800);
cadRasterizationOptions.setPageHeight(600);
cadRasterizationOptions.RenderResult = new ErrorHandler();
System.out.println("Exporting to pdf format");
image.save(stream, pdfOptions);
}
}
// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
public static class ErrorHandler extends CadRasterizationOptions.CadRenderHandler
{
@Override
public void invoke(CadRenderResult result) {
System.out.println("Tracking results of exporting");
if (result.isRenderComplete())
return;
System.out.println("Have some problems:");
int idxError = 1;
for (RenderResult rr : result.getFailures())
{
System.out.printf("{0}. {1}, {2}", idxError, rr.getRenderCode(), rr.getMessage());
idxError++;
}
}
}

يمكن أن يكتشف تتبع عملية عرض CAD المشاكل المحتملة التالية.

  1. معلومات الرأس المفقودة أو التالفة.
  2. معلومات التخطيط المفقودة.
  3. كيانات الكتل المفقودة.
  4. أنماط الأبعاد المفقودة.
  5. الأنماط المفقودة.

استبدال الخطوط أثناء تحويل رسومات CAD

من الممكن تمامًا أن تستخدم رسمة CAD معينة خطًا محددًا غير متوفر على الجهاز حيث تتم عملية تحويل CAD إلى PDF أو CAD إلى صورة raster. في مثل هذه الحالات، ستقوم واجهة برمجة التطبيقات Aspose.CAD بإطلاق استثناء مناسب لتسليط الضوء على الخطوط المفقودة وإيقاف عملية التحويل لأن الواجهة تطلب هذه الخطوط لعرض المحتويات بشكل صحيح على PDF الناتج و/أو الصور. توفر واجهة برمجة التطبيقات Aspose.CAD طريقة سهلة لاستخدام آلية لاستبدال الخطوط المطلوبة مع الخطوط المتاحة. خاصية CadImage.Styles ترجع مثيلًا من CadStylesDictionary الذي يحتوي بدوره على CadStyleTableObject لكل نمط في رسم CAD، بينما يمكن استخدام CadStyleTableObject.PrimaryFontName لتحديد اسم الخط المتاح.

توضح الشيفرة المثال أدناه كيفية استخدام Aspose.CAD لـ Java API لتغيير خط جميع الأنماط في رسم CAD.

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage cadImage = (CadImage) Image.load(srcFile);
// Iterate over the items of CadStylesDictionary
for(Object style : cadImage.getStyles())
{
// Set the font name
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName("Arial");
}

من الممكن أيضًا تغيير الخط لنمط معين واحد فقط من خلال الوصول إليه عبر اسم النمط. توضح الشيفرة المثال أدناه كيفية استخدام هذا النهج.

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage cadImage = (CadImage)Image.load(srcFile);
// Specify the font for one particular style
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)cadImage.getStyles().get_Item(0)).setPrimaryFontName("Arial");

تحويل طبقات CAD إلى صيغ صور Raster

قدمت Aspose.CAD لـ Java API وسيلة فعالة وسهلة الاستخدام لتحديد اسم طبقة CAD المطلوبة وعرضها إلى صيغ صور raster. إليك كيفية تحقيق نفس الشيء في 5 خطوات بسيطة كما هو موضح أدناه.

  1. قم بتحميل ملف CAD في مثيل من Image باستخدام طريقة المصنع load.
  2. أنشئ مثيلًا من CadRasterizationOptions واضبط خصائصه الإلزامية مثل PageWidth و PageHeight.
  3. أضف اسم الطبقة المرغوبة باستخدام الطريقة CadRasterizationOptions.Layers.add.
  4. أنشئ مثيلًا من ImageOptionsBase واضبط خاصيته VectorRasterizationOptions على مثيل CadRasterizationOptions الذي تم إنشاؤه في الخطوة السابقة.
  5. استدعِ الدالة Image.save عن طريق تمرير مسار الملف (أو كائن MemoryStream) بالإضافة إلى مثيل ImageOptionsBase الذي تم إنشاؤه في الخطوة السابقة.

إليك الشيفرة المصدرية الكاملة.

// The path to the resource directory.
String dataDir = Utils.getDataDir(ConvertCADLayerToRasterImageFormat.class) + "CADConversion/";
String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of Image
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set image width & height
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setPageHeight(500);
List<String> stringList = new ArrayList<>(Arrays.asList("0"));
// Add the layer name to the CadRasterizationOptions's layer list
rasterizationOptions.setLayers(stringList);
// Create an instance of JpegOptions (or any ImageOptions for raster formats)
JpegOptions options = new JpegOptions();
// Set VectorRasterizationOptions property to the instance of CadRasterizationOptions
options.setVectorRasterizationOptions(rasterizationOptions);
// Export each layer to JPEG format
image.save(dataDir + "CADLayersToRasterImageFormats_out_.jpg", options);

تحويل جميع طبقات CAD إلى صور منفصلة

يمكنك الحصول على جميع الطبقات من رسم CAD باستخدام CadImage.Layers وتحويل كل طبقة إلى صورة منفصلة كما هو موضح أدناه.

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage image = (CadImage) Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set image width & height
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setPageHeight(500);
// Get the layers in an instance of CadLayersDictionary.
// Iterate over the layers
for (String layer : image.getLayers().getLayersNames())
{
// Display layer name for tracking
System.out.println("Start with " +layer);
List<String> stringList = Arrays.asList(layer);
// Add the layer name to the CadRasterizationOptions's layer list
rasterizationOptions.setLayers(stringList);
// Create an instance of JpegOptions (or any ImageOptions for raster formats)
JpegOptions options = new JpegOptions();
// Set VectorRasterizationOptions property to the instance of CadRasterizationOptions
options.setVectorRasterizationOptions(rasterizationOptions);
// Export each layer to JPEG format
image.save(dataDir + layer + "_out_.jpg", options);
}

تحويل طبقات DWF CAD إلى صيغ صور Raster

قدمت Aspose.CAD لـ Java API وسيلة فعالة وسهلة الاستخدام لتحديد اسم طبقة CAD المطلوبة وعرضها إلى صيغ صور raster. إليك كيفية تحقيق نفس الشيء في 5 خطوات بسيطة كما هو موضح أدناه.

  1. قم بتحميل ملف DWF CAD في مثيل من Image باستخدام طريقة المصنع Load.
  2. أنشئ مثيلًا من CadRasterizationOptions واضبط خصائصه الإلزامية مثل PageWidth و PageHeight.
  3. أضف اسم الطبقة المرغوبة باستخدام الطريقة CadRasterizationOptions.Layers.Add.
  4. أنشئ مثيلًا من ImageOptionsBase واضبط خاصيته VectorRasterizationOptions على مثيل CadRasterizationOptions الذي تم إنشاؤه في الخطوة السابقة.
  5. استدعِ الدالة Image.Save عن طريق تمرير مسار الملف (أو كائن MemoryStream) بالإضافة إلى مثيل ImageOptionsBase الذي تم إنشاؤه في الخطوة السابقة.

إليك الشيفرة المصدرية الكاملة.

String fileName = (dataDir + "site.dwf");
com.aspose.cad.Image image = com.aspose.cad.Image.load(fileName);
BmpOptions bmpOptions = new BmpOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
bmpOptions.setVectorRasterizationOptions(rasterizationOptions);
rasterizationOptions.setPageHeight(500);
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setLayouts(new String[] { "Model" });
// export
String outPath = dataDir +"site.bmp";
image.save(outPath, bmpOptions);