แบบเขียน DXF

การส่งออกแบบเขียน DXF ไปยัง PDF

Aspose.CAD มีฟีเจอร์ในการโหลดหน่วยวัดแบบเขียน DXF ของ AutoCAD และเรนเดอร์เป็นแบบเขียนทั้งหมดในรูปแบบ PDF วิธีการแปลง DXF เป็น PDF ทำงานดังนี้:

  1. โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างวัตถุของ CadRasterizationOptions และตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
  3. สร้างวัตถุของ PdfOptions และตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
  4. เรียกใช้ Image.Save โดยส่งวัตถุของ PdfOptions เป็นพารามิเตอร์ตัวที่สอง

ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงไฟล์โดยใช้การตั้งค่าเริ่มต้น

// 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(ExportDXFDrawingToPDF.class) + "DXFDrawings/";
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.setBackgroundColor(Color.getWhite());
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf", pdfOptions);

รูปแบบที่รองรับ

ในขณะนี้เรารองรับรูปแบบไฟล์ AutoCAD DXF 2010 อย่างเต็มที่ รูปแบบ DXF ที่ก่อนหน้านี้ไม่รับประกันว่าจะถูกต้อง 100% เรากำลังวางแผนที่จะรวมรูปแบบและฟีเจอร์เพิ่มเติมในเวอร์ชัน Aspose.CAD ในอนาคต

หน่วยที่รองรับ

ในขณะนี้เรารองรับหน่วย 2D ที่มีการใช้กันอย่างแพร่หลายทั้งหมดพร้อมกับพารามิเตอร์เริ่มต้นพื้นฐาน ได้แก่:

  1. มิติที่จัดเรียง
  2. มิติองศา
  3. อาร์ค
  4. แอตทริบิวต์
  5. การอ้างอิงบล็อก
  6. วงกลม
  7. มิติเส้นผ่านศูนย์กลาง
  8. เอลลิปส์
  9. แฮทช์
  10. เส้น
  11. ข้อความหลายบรรทัด
  12. มิติออร์ดิเนต
  13. จุด
  14. โพลี่ไลน์
  15. มิติเรเดียล
  16. รังสี
  17. มิติที่หมุน
  18. ตาราง
  19. ข้อความ
  20. Xline

การจัดการหน่วยความจำ

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

  • หากตั้งค่าพร็อพเพอร์ตี้ ExactReallocateOnly เป็นค่เริ่มต้น False พื้นที่จะถูกจัดสรรใหม่ไปที่สื่อเดิม
  • เมื่อถูกตั้งค่าเป็น True, การจัดสรรใหม่ไม่สามารถเกินพื้นที่สูงสุดที่กำหนด ในกรณีนี้ แคชในหน่วยความจำที่จัดสรรไว้ (ซึ่งต้องการการจัดสรรใหม่) จะถูกปล่อยและจัดสรรพื้นที่เพิ่มเติมบนดิสก์

การส่งออกชั้นเฉพาะของแบบเขียน DXF ไปยัง PDF

วิธีการนี้ทำงานดังนี้:

  1. เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
  3. เพิ่มชั้นไปยังวัตถุของ CadRasterizationOptions
  4. สร้างอินสแตนซ์ของ PdfOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
  5. ส่งออกแบบเขียนไปยัง PDF โดยใช้วิธี Image.save

ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงชั้นเฉพาะของ DXF ไปยัง 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(ExportSpecificLayerOfDXFDrawingToPDF.class) + "DXFDrawings/";
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);
// Add desired layers
rasterizationOptions.getLayers().add("0");
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_layer_out_.pdf", pdfOptions);

การส่งออกชั้นเฉพาะของแบบเขียน DXF ไปยังรูปภาพ

วิธีการนี้ทำงานดังนี้:

  1. เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
  3. เพิ่มชั้นไปยังวัตถุของ CadRasterizationOptions
  4. สร้างอินสแตนซ์ของ JpegOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
  5. ส่งออกแบบเขียนไปยัง PDF โดยใช้วิธี Image.save

ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงชั้นเฉพาะของ DXF ไปยังรูปภาพ

// The path to the resource directory.
String dataDir = Utils.getDataDir(ExportSpecificDXFLayoutToPDF.class) + "DXFDrawings\\";
String srcFile = dataDir + "for_layers_test.dwf";
DwfImage image =(DwfImage)Image.load(srcFile);
List<String> layersNames=image.getLayers().getLayersNames();
DwfWhipLayer layer = image.getLayers().getLayerByName("0");
for (DwfWhipLayer lr : image.getLayers())
{
//...
}
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
String[] stringArray = Arrays.copyOf(layersNames.toArray(), layersNames.toArray().length, String[].class);
List<String> stringList = Arrays.asList(stringArray);
// Add desired layers
rasterizationOptions.setLayers(stringList);
JpegOptions jpegOptions = new JpegOptions();
jpegOptions.setVectorRasterizationOptions(rasterizationOptions);
String output = dataDir+"for_layers_test.jpg";
// Export the DXF to Image
image.save(output, jpegOptions);

เรนเดอร์ไฟล์ PDF เป็นส่วนหนึ่งของแบบเขียน DXF

วิธีการนี้ทำงานดังนี้:

  1. โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
  3. ตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
  4. เรียกใช้ Image.save และบันทึกไฟล์

ตัวอย่างโค้ดด้านล่างแสดงวิธีการเรนเดอร์ไฟล์ PDF เป็นส่วนหนึ่งของแบบเขียน DXF

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.setBackgroundColor(Color.getWhite());
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf", pdfOptions);

การส่งออก DXF ไปที่ WMF

วิธีการนี้ทำงานดังนี้:

  1. โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
  3. ตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
  4. เรียกใช้ Image.save และบันทึกไฟล์

ตัวอย่างโค้ดด้านล่างแสดงวิธีการส่งออก DXF ไปที่ WMF

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
IfcImage cadImage = (IfcImage)Image.load((dataDir +"example.ifc"));
try
{
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(100);
rasterizationOptions.setPageHeight(100);
WmfOptions wmfOptions = new WmfOptions();
cadImage.save(dataDir+" example.ifc.wmf", wmfOptions);
}
}
finally
{
cadImage.dispose();
}
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf");
}

การสนับสนุนการบันทึกไฟล์ DXF

Aspose.CAD มีฟีเจอร์ในการโหลดไฟล์ DXF ของ AutoCAD และทำการเปลี่ยนแปลงในนั้นและบันทึกมันอีกครั้งในรูปแบบไฟล์ DXF ตัวอย่างโค้ดด้านล่างแสดงวิธีการบรรลุความต้องการที่ระบุ

String dataDir = Utils.getDataDir(SaveDXFFiles.class) + "CADConversion/";
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage = (CadImage)Image.load(srcFile);
cadImage.save(dataDir+"conic.dxf");

การส่งออก DGN ที่ฝังอยู่สำหรับรูปแบบ DXF

Aspose.CAD มีฟีเจอร์ในการโหลดไฟล์ DXF ของ AutoCAD และส่งออก DGN ที่ฝังอยู่สำหรับรูปแบบ DXF

ตัวอย่างโค้ดด้านล่างแสดงวิธีการบรรลุความต้องการที่ระบุ

String dataDir = Utils.getDataDir(ExportEmbeddedDGN.class) + "ExportingDGN/";
String fileName = dataDir + "BlockRefDgn.dwg";
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(fileName);
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setLayouts(new String[] {"Model"});
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
objImage.save(dataDir + "BlockRefDgn.pdf", pdfOptions);
}

การส่งออกเลย์เอาต์ DXF เฉพาะไปยัง PDF

วิธีการนี้ทำงานดังนี้:

  1. เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
  3. ระบุชื่อเลย์เอาต์ที่ต้องการโดยใช้พร็อพเพอร์ตี้ CadRasterizationOptions.Layouts
  4. สร้างอินสแตนซ์ของ PdfOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
  5. ส่งออกแบบเขียนไปยัง PDF โดยใช้วิธี Image.save

ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงเลย์เอาต์เฉพาะของ DXF เป็น 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(ExportSpecificDXFLayoutToPDF.class) + "DXFDrawings/";
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);
// Specify desired layout name
rasterizationOptions.setLayouts(new String[] {"Model"});
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_layout_out_.pdf", pdfOptions);

เข้าถึงวัตถุ ATTRIB และ MTEXT

วิธีการนี้ทำงานดังนี้:

  1. เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. เข้าถึงหน่วยภายในไฟล์ CAD
  3. ตรวจสอบ CadEntityTypeName.MTEXT และ CadEntityTypeName.INSERT หน่วย
  4. เพิ่มไปยังรายการชั่วคราวเพื่อการประมวลผลต่อไป
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage =(CadImage) Image.load(srcFile);
List<CadBaseEntity> mtextList = new ArrayList<CadBaseEntity>();
List<CadBaseEntity> attribList = new ArrayList<CadBaseEntity>();
try
{
for (CadBaseEntity entity : cadImage.getEntities())
{
if (entity.getTypeName() == CadEntityTypeName.MTEXT)
{
mtextList.add(entity);
}
if (entity.getTypeName() == CadEntityTypeName.INSERT)
{
for (CadBaseEntity childObject : entity.getChildObjects())
{
if (childObject.getTypeName() == CadEntityTypeName.ATTRIB)
{
attribList.add(childObject);
}
}
}
}
System.out.println("MText Size: "+ mtextList.size());
System.out.println("Attribute Size: "+ attribList.size());
}
finally
{
cadImage.dispose();
}

การแยกวัตถุ CAD Insert

วิธีการนี้ทำงานดังนี้:

  1. เปิดไฟล์ DXF โดยใช้ Image.load factory method
  2. เข้าถึงหน่วยภายในไฟล์ CAD
  3. ตรวจสอบหน่วย CadEntityTypeName.INSERT
  4. ตรวจสอบรายการประเภท CadBlockEntity
  5. ประมวลผลหน่วย
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage =(CadImage) Image.load(srcFile);
try
{
for (int i=0; i<cadImage.getEntities().length;i++)
{
if (cadImage.getEntities()[i].getTypeName() == CadEntityTypeName.INSERT)
{
CadBlockEntity block =
(CadBlockEntity)cadImage.getBlockEntities().get_Item(((CadInsertObject)cadImage.getEntities()[i]).getName());
for (CadBaseEntity blockChild : block.getEntities())
{
// process entities
}
}
}
}
finally
{
cadImage.dispose();
}

การสนับสนุนการตัดบล็อก

Aspose.CAD มีฟีเจอร์ของการตัดบล็อก วิธีการตัดบล็อกทำงานดังนี้:

  1. โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
  2. สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
  3. ตั้งค่าพร็อพเพอร์ตี้ที่ต้องการของ CadRasterizationOptions
  4. เรียกใช้ Image.save พร้อมส่งวัตถุของ PdfOptions เป็นพารามิเตอร์ตัวที่สองและบันทึกไฟล์

ตัวอย่างโค้ดด้านล่างแสดงวิธีที่การตัดบล็อกทำงาน

// 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(RenderDXFAsPDF.class) + "DXFDrawings/";
String inputFile = dataDir + "SLS-CW-CD-CE001-R01_blockClip.dxf";
String outputFile = dataDir + "SLS-CW-CD-CE001-R01_blockClip.pdf";
CadImage cadImage = (CadImage)Image.load(inputFile);
Margins margins = new Margins();
margins.setTop(5);
margins.setRight(30);
margins.setBottom(5);
margins.setLeft(30);
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setBackgroundColor(Color.getWhite());
rasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setMargins(margins);
rasterizationOptions.setLayouts( new String[] { "Model" } );
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
cadImage.save(outputFile, pdfOptions);

ส่งออกรูปภาพเป็น DXF

โดยใช้ Aspose.CAD คุณสามารถส่งออกรูปภาพเป็นรูปแบบ DXF โดยใช้วิธีนี้คุณสามารถทำการดำเนินการดังต่อไปนี้:

  1. ตั้งค่าฟอนต์ใหม่
  2. ซ่อนหน่วย
  3. อัปเดตข้อความ

ตัวอย่างโค้ดด้านล่างแสดงวิธีการดำเนินการตามรายการที่แสดงด้านบน

// The path to the resource directory.
String dataDir = Utils.getDataDir(RenderDXFAsPDF.class) + "DXFDrawings/";
File[] files = new File(dataDir).listFiles();
for (File file : files) {
String extension = GetFileExtension(file);
if(extension == ".dxf"){
// ****************************
// Set new font per document
// ****************************
CadImage cadImage = (CadImage)Image.load(file.getName());
for (Object style : cadImage.getStyles()) {
// Set font name
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName("Broadway");
}
cadImage.save(file.getName() + "_font.dxf");
// ****************************
// Hide all "straight" lines
// ****************************
CadImage cadImageEntity = (CadImage)Image.load(file.getName());
for (CadBaseEntity entity : cadImageEntity.getEntities()) {
// Make lines invisible
if ((entity.getTypeName() == CadEntityTypeName.LINE)) {
entity.setVisible((short)0);
}
}
cadImageEntity.save(file.getName() + "_lines.dxf");
// ****************************
// Manipulations with text
// ****************************
CadImage cadImageText = (CadImage)Image.load(file.getName());
for (CadBaseEntity entity : cadImageText.getEntities()) {
// Make lines invisible
if ((entity.getTypeName() == CadEntityTypeName.TEXT)) {
((CadText)entity).setDefaultValue("New text here!!! :)");
break;
}
}
cadImageText.save(file.getName() + "_text.dxf");
}//If extension = .dxf
}
private static String GetFileExtension(File file) {
String extension = "";
try {
if (file != null && file.exists()) {
String name = file.getName();
extension = name.substring(name.lastIndexOf("."));
}
} catch (Exception e) {
extension = "";
}
return extension;
}