המרת שרטוטי CAD לפורמטי PDF ודימויים רסטריים

המרת שרטוטי CAD לפורמטי דימוי רסטרי

Aspose.CAD for Java מסוגל להמיר פורמטי שרטוט CAD כמו DXF ו-DWG לפורמטי דימוי רסטריים נתמכים כמו PNG, BMP, TIFF, JPEG ו-GIF. API של Aspose.CAD for Java חשף אמצעים יעילים וקלים לשימוש כדי להשיג מטרה זו. אתם יכולים להמיר כל פורמט שרטוט CAD הנתמך לפורמטי דימוי רסטריים באמצעות הצעדים הפשוטים המפורטים למטה.

  1. ט load קובץ 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 רינדורים רק את פריסת ה"Model". עם זאת, תוכלו גם לציין את הפריסות לפי בחירתכם בעת המרת שרטוטי CAD לפורמטי דימוי.

התאמת המרת CAD

הליך ההמרה מ-CAD ל-PDF ול-CAD לדימוי רסטרי הוא מאוד ניתן להגדרה מכיוון שכיתת CadRasterizationOptions היישום כך שהיא מספקת הרבה תכונות אופציונליות שעל ידי הגדרתן יכולות לשנות את תהליך הרינדור על פי צרכי היישום.

כיתת CadRasterizationOptions

כיתת CadRasterizationOptions היא משותפת לכל פורמטי CAD הנתמכים כמו DWG ו-DXF, ולכן, המידע המשותף במאמר זה הוא תקף לשני פורמטי CAD המוזכרים לעיל.

תכונות השימושיות ביותר בכיתת CadRasterizationOptions הן:

תכונהערך ברירת מחדלדרושתיאור
PageWidth0כןמפרט את רוחב העמוד.
PageHeight0כןמפרט את גובה העמוד
ScaleMethodScaleType.ShrinkToFitלאמפרט אם השרטוט צריך להיות מוקטן אוטומטית. ערך ברירת המחדל מקטין אוטומטית את התמונה כדי להתאים לגודל הקנבס. החלף למצב GrowToFit, או השתמש בהגדרת None כדי להשבית את ההקטנה האוטומטית.
BackgroundColorColor.Whiteלאמפרט את צבע הרקע של התמונה המפלטה.
DrawTypeCadDrawTypeMode.UseDrawColorלאמפרט את מצב הצבע של הישות. ציין את אפשרות UseObjectColor כדי לצייר ישויות תוך שימוש בצבען הטבעי, או את אפשרות UseDrawColor כדי לבטל את הצבעים הטבעיים.
DrawColorColor.Blackלאמפרט את צבע הישות המוחל (רק אם DrawType מוגדר לערך של תכונת UseDrawColor).
AutomaticLayoutsScalingשקרלאמפרט אם יש לבצע הקטנת פריסות אוטומטית כדי להתאים לפריסת המודל.

הגדרת גודל ומצב קנבס

הייצוא מ-CAD ל-PDF או מ-CAD לפורמטי דימוי רסטריים אינו משימה שגרתית. מכיוון שה-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 עשוי להיות עם הקטנה שונה בהתאם לגודל הפריסה. כדי להפוך את הרינדור להומוגני, ה-API של Aspose.CAD חשף את תכונת CadRasterizationOptions.AutomaticLayoutsScaling. ערך ברירת המחדל שלה הוא שקר, אבל כאשר זה נכון, ה-API ינסה לחפש קנה מידה מתאים עבור כל פריסה נפרדת ולצייר אותן באופן מתאים על ידי ביצוע פעולה אוטומטית להתאמה בהתאם לגודל העמוד.

הנה כיצד תכונת CadRasterizationOptions.AutomaticLayoutsScaling פועלת בשיתוף פעולה עם תכונת CadRasterizationOptions.ScaleMethod.

  1. אם ScaleMethod מוגדר ל-ScaleType.ShrinkToFit או ScaleType.GrowToFit עם AutomaticLayoutsScaling מוגדר ל"שקר", אז כל הפריסות (כולל המודל) יופעלו לפי האפשרות הראשונה.
  2. אם ScaleMethod מוגדר ל-ScaleType.ShrinkToFit או ScaleType.GrowToFit עם AutomaticLayoutsScaling מוגדר ל"נכון", אז כל הפריסות (מלבד המודל) יתעובדו בהתאם לגודל שלהם ואילו המודל יתעובד בהתאם לאפשרות הראשונה.
  3. אם ScaleMethod מוגדר ל-ScaleType.None עם AutomaticLayoutsScaling מוגדר ל"נכון" או “שקר”, אז לא תתבצע הקטנה.

דוגמת הקוד למטה מציגה כיצד להגדיר הקטנה אוטומטית להמרת 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 לפורמטי דימוי רסטרי

API של Aspose.CAD for Java מסוגל להמיר פריסות CAD של פורמטים נתמכים כמו DXF ו-DWG לדימויים רסטריים כמו PNG, BMP, TIFF, JPEG ו-GIF. ה-API מספק גם תמיכה לרינדור את הפריסות הספציפיות של שרטוט CAD לשכבות PSD שונות. API של Aspose.CAD for Java חשף אמצעים יעילים וקלים לשימוש כדי לציין את רשימת הפריסות הנדרשות של CAD ולרינדור אותן לפורמטי דימוי רסטריים. הנה כיצד אתם יכולים להשיג זאת ב-5 צעדים פשוטים כמפורט למטה.

  1. ט load קובץ 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 לפורמט דימוי רסטרי. במצבים כאלה, ה-API של Aspose.CAD יפעיל חריגה מתאימה כדי להדגיש את הגופן (ים) החסרים ולהפסיק את תהליך ההמרה מכיוון שה-API דורש גופנים אלה לרינדור נכון של התוכן ל-PDF ול/או התמונות המתקבלות. API של Aspose.CAD מספק אמצעים קלים להשתמש במנגנון להחלפת הגופנים הנדרשים בגופנים הזמינים. תכונת CadImage.Styles מחזירה מופע של CadStylesDictionary שמכיל בתורו את CadStyleTableObject עבור כל סגנון בשרטוט CAD, בעוד ש-CadStyleTableObject.PrimaryFontName יכול לשמש כדי לציין את שם הגופן הזמין.

הקטע הקוד הבא מדגים את השימוש ב-Aspose.CAD for 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 לפורמטי דימוי רסטרי

API של Aspose.CAD for Java חשף אמצעים יעילים וקלים לשימוש כדי לציין את שם שכבת CAD הדרושה ולרנדר אותה לפורמטי דימוי רסטריים. הנה כיצד אתם יכולים להשיג את אותו הדבר ב-5 צעדים פשוטים כמפורט למטה.

  1. ט load קובץ 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 לפורמטי דימוי רסטרי

API של Aspose.CAD for Java חשף אמצעים יעילים וקלים לשימוש כדי לציין את שם השכבת CAD הדרושה ולרנדר אותה לפורמטי דימוי רסטריים. הנה כיצד אתם יכולים להשיג את אותו הדבר ב-5 צעדים פשוטים כמפורט למטה.

  1. ט load קובץ 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);