แบบเขียน DXF
การส่งออกแบบเขียน DXF ไปยัง PDF
Aspose.CAD มีฟีเจอร์ในการโหลดหน่วยวัดแบบเขียน DXF ของ AutoCAD และเรนเดอร์เป็นแบบเขียนทั้งหมดในรูปแบบ PDF วิธีการแปลง DXF เป็น PDF ทำงานดังนี้:
- โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างวัตถุของ CadRasterizationOptions และตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
- สร้างวัตถุของ PdfOptions และตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
- เรียกใช้ 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 ที่มีการใช้กันอย่างแพร่หลายทั้งหมดพร้อมกับพารามิเตอร์เริ่มต้นพื้นฐาน ได้แก่:
- มิติที่จัดเรียง
- มิติองศา
- อาร์ค
- แอตทริบิวต์
- การอ้างอิงบล็อก
- วงกลม
- มิติเส้นผ่านศูนย์กลาง
- เอลลิปส์
- แฮทช์
- เส้น
- ข้อความหลายบรรทัด
- มิติออร์ดิเนต
- จุด
- โพลี่ไลน์
- มิติเรเดียล
- รังสี
- มิติที่หมุน
- ตาราง
- ข้อความ
- Xline
การจัดการหน่วยความจำ
พร็อพเพอร์ตี้ ExactReallocateOnly สามารถใช้เพื่อควบคุมการจัดสรรหน่วยความจำใหม่ การจัดสรรใหม่จะเกิดขึ้นได้มากที่สุดสำหรับแคชที่ถูกจัดสรรไว้ล่วงหน้า อาจเกิดขึ้นเมื่อระบบตรวจสอบว่าพื้นที่ที่จัดสรรไว้นั้นไม่เพียงพอ
- หากตั้งค่าพร็อพเพอร์ตี้ ExactReallocateOnly เป็นค่เริ่มต้น False พื้นที่จะถูกจัดสรรใหม่ไปที่สื่อเดิม
- เมื่อถูกตั้งค่าเป็น True, การจัดสรรใหม่ไม่สามารถเกินพื้นที่สูงสุดที่กำหนด ในกรณีนี้ แคชในหน่วยความจำที่จัดสรรไว้ (ซึ่งต้องการการจัดสรรใหม่) จะถูกปล่อยและจัดสรรพื้นที่เพิ่มเติมบนดิสก์
การส่งออกชั้นเฉพาะของแบบเขียน DXF ไปยัง PDF
วิธีการนี้ทำงานดังนี้:
- เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
- เพิ่มชั้นไปยังวัตถุของ CadRasterizationOptions
- สร้างอินสแตนซ์ของ PdfOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
- ส่งออกแบบเขียนไปยัง 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 ไปยังรูปภาพ
วิธีการนี้ทำงานดังนี้:
- เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
- เพิ่มชั้นไปยังวัตถุของ CadRasterizationOptions
- สร้างอินสแตนซ์ของ JpegOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
- ส่งออกแบบเขียนไปยัง 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
วิธีการนี้ทำงานดังนี้:
- โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
- ตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
- เรียกใช้ 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
วิธีการนี้ทำงานดังนี้:
- โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
- ตั้งค่าพร็อพเพอร์ตี้ PageHeight & PageWidth
- เรียกใช้ 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
วิธีการนี้ทำงานดังนี้:
- เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างอินสแตนซ์ของ CadRasterizationOptions และระบุพร็อพเพอร์ตี้ PageWidth & PageHeight
- ระบุชื่อเลย์เอาต์ที่ต้องการโดยใช้พร็อพเพอร์ตี้ CadRasterizationOptions.Layouts
- สร้างอินสแตนซ์ของ PdfOptions & ตั้งค่าพร็อพเพอร์ตี้ VectorRasterizationOptions
- ส่งออกแบบเขียนไปยัง 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
วิธีการนี้ทำงานดังนี้:
- เปิดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- เข้าถึงหน่วยภายในไฟล์ CAD
- ตรวจสอบ CadEntityTypeName.MTEXT และ CadEntityTypeName.INSERT หน่วย
- เพิ่มไปยังรายการชั่วคราวเพื่อการประมวลผลต่อไป
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
วิธีการนี้ทำงานดังนี้:
- เปิดไฟล์ DXF โดยใช้ Image.load factory method
- เข้าถึงหน่วยภายในไฟล์ CAD
- ตรวจสอบหน่วย CadEntityTypeName.INSERT
- ตรวจสอบรายการประเภท CadBlockEntity
- ประมวลผลหน่วย
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 มีฟีเจอร์ของการตัดบล็อก วิธีการตัดบล็อกทำงานดังนี้:
- โหลดไฟล์แบบเขียน DXF โดยใช้ Image.load factory method
- สร้างวัตถุของคลาส CadRasterizationOptions และโหลดไฟล์ PDF
- ตั้งค่าพร็อพเพอร์ตี้ที่ต้องการของ CadRasterizationOptions
- เรียกใช้ 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 โดยใช้วิธีนี้คุณสามารถทำการดำเนินการดังต่อไปนี้:
- ตั้งค่าฟอนต์ใหม่
- ซ่อนหน่วย
- อัปเดตข้อความ
ตัวอย่างโค้ดด้านล่างแสดงวิธีการดำเนินการตามรายการที่แสดงด้านบน
// 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; | |
} |