การวาด DWG
การส่งออกภาพวาด DWG เป็น PDF
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และแปลงเป็น PDF หัวข้อนี้อธิบายการใช้งาน Aspose.CAD API เพื่อให้การแปลง DWG เป็นรูปแบบ PDF ผ่านขั้นตอนที่ง่ายตามที่กำหนดไว้ข้างหน้า
API รองรับการปรับปรุง DWG ของ AutoCAD ดังต่อไปนี้:
- DWG 2004 เวอร์ชัน 16.0 รุ่น 18
- DWG 2005 เวอร์ชัน 16.1
- DWG 2010 เวอร์ชัน 18.0
- DWG 2013 เวอร์ชัน 19.0
รูปแบบไฟล์ DWG
DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า ข้อมูลภาพเวกเตอร์ให้คำแนะนำแก่แอปพลิเคชัน CAD เกี่ยวกับวิธีการแสดงผล DWG; เมตาดาต้าอาจมีข้อมูลหลากหลายเกี่ยวกับไฟล์รวมถึงข้อมูลที่เฉพาะเจาะจงตามตำแหน่งและข้อมูลของลูกค้า สเปคทางเปิดสำหรับรูปแบบไฟล์ DWG สามารถพบได้ ใน PDF นี้
แปลงไฟล์ DWG เป็น PDF
ขั้นตอนง่าย ๆ ต่อไปนี้ต้องการเพื่อแปลง DWG เป็น PDF
- โหลดไฟล์ DWG เข้าสู่วิธี Image
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าคุณสมบัติ PageHeight & PageWidth
- สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
- เรียกใช้ Image.save และส่งอ็อบเจ็กต์ของ PdfOptions เป็นพารามิเตอร์ที่สอง
ตัวอย่างโค้ดด้านล่างแสดงวิธีการส่งออกภาพวาด DWG เป็น PDF
String srcFile = dataDir + "Bottom_plate.dwg"; | |
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.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 DWG to PDF | |
objImage.save(dataDir + "Bottom_plate_out_.pdf", pdfOptions); |
สร้าง PDF เดียวที่มีขนาดเลย์เอาต์ต่างกัน
Aspose.CAD สำหรับ Java อนุญาตให้คุณแปลงไฟล์ DWG เป็น PDF เดียวที่มีขนาดเลย์เอาต์ต่างกัน วิธีนี้ทำงานดังต่อไปนี้:
- โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
- เพิ่ม LayoutPageSizes ตามที่ต้องการสำหรับอ็อบเจ็กต์ CadRasterizationOptions
- สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
- ส่งออกรูปภาพไปยัง PDF โดยใช้วิธี Image.save
ตัวอย่างโค้ดด้านล่างแสดงวิธีการสร้าง PDF เดียวที่มีเลย์เอาต์ต่างๆ
String dataDir = Utils.getDataDir(SinglePDFWithDifferentLayouts.class) + "DWGDrawings/"; | |
CadImage cadImage = (CadImage)Image.load(dataDir + "City skyway map.dwg"); | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.setPageWidth(1000); | |
rasterizationOptions.setPageHeight(1000); | |
//custom sizes for several layouts | |
rasterizationOptions.getLayoutPageSizes().addItem("ANSI C Plot", new SizeF(500, 1000)); | |
rasterizationOptions.getLayoutPageSizes().addItem("8.5 x 11 Plot", new SizeF(1000, 100)); | |
PdfOptions pdfOptions = new PdfOptions(); | |
pdfOptions.setVectorRasterizationOptions(rasterizationOptions); | |
cadImage.save(dataDir + "singlePDF_out.pdf", pdfOptions); | |
การส่งออก DWG เป็น PDF/A และ PDF/E
ขั้นตอนง่าย ๆ ต่อไปนี้ต้องการเพื่อแปลง DWG เป็น PDF
- โหลดไฟล์ DWG เข้าสู่วิธี Image
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่า PageHeight & PageWidth
- สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
- เรียกใช้ Image.save และส่งอ็อบเจ็กต์ของ PdfOptions เป็นพารามิเตอร์ที่สอง
ตัวอย่างโค้ดด้านล่างแสดงวิธีการส่งออกภาพวาด DWG เป็น PDF
String srcFile = dataDir + "Bottom_plate.dwg"; | |
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile); | |
// Create an instance of PdfOptions | |
PdfOptions pdfOptions = new PdfOptions(); | |
pdfOptions.setVectorRasterizationOptions(new CadRasterizationOptions()); | |
pdfOptions.setCorePdfOptions(new PdfDocumentOptions()); | |
pdfOptions.getCorePdfOptions().setCompliance(PdfCompliance.PdfA1a); | |
objImage.save(dataDir+"Saved1.pdf", pdfOptions); | |
pdfOptions.getCorePdfOptions().setCompliance(PdfCompliance.PdfA1b); | |
objImage.save(dataDir+"Saved.pdf", pdfOptions); |
รูปแบบหลักของ AutoCAD ที่รองรับ
รูปแบบหลักของ AutoCAD ที่รองรับ ได้แก่
- TEXT
- MTEXT
- ATTDEF
- ATTRIB
- ARC
- ELLIPSE
- HATCH
- LEADER
- POINT
- VERTEX 2D
- VERTEX 3D
- POLYLINE 2D
- LWPOLYLINE
- RAY
- CIRCLE
- DIMENSION ORDINATE
- DIMENSION LINEAR
- DIMENSION ALIGNED
- DIMENSION ANG 3Pt
- DIMENSION ANG 2Ln
- DIMENSION RADIUS
- DIMENSION DIAMETER
- SHAPE
- SOLID
- SPLINE
- MLINE
- LINE
- XLINE
- STYLE
- DIMSTYLE
- LTYPE
- MLINESTYLE
- LAYER
- VIEWPORT
- LAYOUT
การส่งออกเลย์เอาต์ DWG เฉพาะไปยัง PDF
วิธีนี้ทำงานดังต่อไปนี้:
- โหลดไฟล์ DWG โดยใช้วิธี Image.load
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
- ตั้งค่าคุณสมบัติ Layouts สำหรับอ็อบเจ็กต์ CadRasterizationOptions
- สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
- ส่งออกรูปภาพไปยัง PDF โดยใช้วิธี Image.save()
ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงเลย์เอาต์เฉพาะของ DWG เป็น PDF
String srcFile = dataDir + "visualization_-_conference_room.dwg"; | |
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[] {"Layout1"}); | |
// Create an instance of PdfOptions | |
PdfOptions pdfOptions = new PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.setVectorRasterizationOptions(rasterizationOptions); | |
// Export the DWG to PDF | |
image.save(dataDir + "ExportSpecificLayoutToPDF_out_.pdf", pdfOptions); |
การส่งออก DWG เป็น Raster หรือ PDF โดยใช้ขนาดคงที่
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และแปลงเป็น PDF หรือ Raster โดยใช้ขนาดคงที่
ตัวอย่างโค้ดด้านล่างแสดงวิธีการดำเนินการนี้
public static void main(String[] args) | |
{ | |
// The path to the resource directory. | |
String dataDir = Utils.getDataDir(ExportDWGToPDFOrRaster.class) + "DWGDrawings/"; | |
String srcFile = dataDir + "Bottom_plate.dwg"; | |
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile); | |
Boolean currentUnitIsMetric = IsMetric(objImage.getUnitType()); | |
int currentUnitCoefficient = objImage.getUnitType(); | |
if (currentUnitIsMetric) | |
{ | |
double metersCoeff = 1 / 1000.0; | |
double scaleFactor = metersCoeff / currentUnitCoefficient; | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.setPageWidth((float)(210 * scaleFactor)); | |
rasterizationOptions.setPageHeight((float)(297 * scaleFactor)); | |
rasterizationOptions.setUnitType(UnitType.Millimeter); | |
} | |
else | |
{ | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.setPageWidth((float)(8.27f / currentUnitCoefficient)); | |
rasterizationOptions.setPageHeight((float)(11.69f / currentUnitCoefficient)); | |
rasterizationOptions.setUnitType(UnitType.Inch); | |
} | |
PdfOptions pdfOptions = new PdfOptions(); | |
pdfOptions.setVectorRasterizationOptions(new CadRasterizationOptions()); | |
objImage.save(dataDir+"Saved.pdf", pdfOptions); | |
} | |
public static Boolean IsMetric(int initial) | |
{ | |
Boolean isMetric = true; | |
switch (initial) | |
{ | |
case UnitType.Inch: | |
case UnitType.MicroInch: | |
case UnitType.Mil: | |
case UnitType.Foot: | |
case UnitType.Yard: | |
case UnitType.Mile: | |
case UnitType.Unitless: | |
isMetric = false; | |
} | |
return isMetric; | |
} | |
private Double Coefficient(int unitType) | |
{ | |
Double coefficient = 1.0; | |
switch (unitType) | |
{ | |
case UnitType.Parsec: | |
coefficient = 3.0857 * 10000000000000000.0; | |
break; | |
case UnitType.LightYear: | |
coefficient = 9.4607 * 1000000000000000.0; | |
break; | |
case UnitType.AstronomicalUnit: | |
coefficient = 1.4960 * 100000000000.0; | |
break; | |
case UnitType.Gigameter: | |
coefficient = 1000000000.0; | |
break; | |
case UnitType.Kilometer: | |
coefficient = 1000.0; | |
break; | |
case UnitType.Decameter: | |
coefficient = 10.0; | |
break; | |
case UnitType.Hectometer: | |
coefficient = 100.0; | |
break; | |
case UnitType.Meter: | |
coefficient = 1.0; | |
break; | |
case UnitType.Centimenter: | |
coefficient = 0.01; | |
break; | |
case UnitType.Decimeter: | |
coefficient = 0.1; | |
break; | |
case UnitType.Millimeter: | |
coefficient = 0.001; | |
break; | |
case UnitType.Micrometer: | |
coefficient = 0.000001; | |
break; | |
case UnitType.Nanometer: | |
coefficient = 0.000000001; | |
break; | |
case UnitType.Angstrom: | |
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; | |
} | |
return coefficient; | |
} | |
การสนับสนุนสำหรับเส้นซ่อนกลมเมื่อส่งออก DWG/DXF ไปยัง BMP และ PDF
วิธีนี้ทำงานดังต่อไปนี้:
- โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions
- สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
- สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
- ส่งออกรูปภาพไปยัง PDF โดยใช้วิธี Image.save()
ตัวอย่างโค้ดด้านล่างแสดงวิธีการดำเนินการนี้
การสนับสนุนสำหรับการตั้งค่าพื้นที่พิมพ์สำหรับรูปภาพ DWG ใน PDF ที่ส่งออก
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และแปลงเป็น PDF หัวข้อนี้อธิบายการใช้งาน Aspose.CAD API เพื่อให้การสนับสนุนในการตั้งค่าพื้นที่พิมพ์สำหรับรูปภาพ DWG ใน PDF ที่ส่งออก
ตัวอย่างโค้ดด้านล่างแสดงวิธีการดำเนินการนี้
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "visualization_-_conference_room.dwg"; | |
using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(sourceFilePath)) | |
{ | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Specify desired layout name | |
rasterizationOptions.Layouts = new string[] { "Layout1" }; | |
// Create an instance of PdfOptions | |
Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
MyDir = MyDir + "ExportSpecificLayoutToPDF_out.pdf"; | |
//Export the DWG to PDF | |
image.Save(MyDir, pdfOptions); | |
} |
การสนับสนุนสำหรับการอ่าน metadata XREF สำหรับไฟล์ DWG
- โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load
- เดินทางผ่านทุกเอนทิตีภาพ
- หากเอนทิตีนั้นคือ CadUnderlay ก็จะเป็นเอนทิตี XREF ที่มี metadata
ตัวอย่างโค้ดด้านล่างแสดงวิธีการบรรลุคุณสมบัตินี้
CadImage image = (CadImage)Image.load(dataDir+"Bottom_plate.dwg"); | |
{ | |
for (CadBaseEntity entity : image.getEntities()) | |
{ | |
if (entity instanceof CadUnderlay) | |
{ | |
//XREF entity with metadata | |
Cad3DPoint insertionPoint = ((CadUnderlay) entity).getInsertionPoint(); | |
String path = ((CadUnderlay) entity).getUnderlayPath(); | |
} | |
} | |
} |
เอกสาร DWG โดยการระบุพิกัด
Aspose.CAD สำหรับ Java API ในปัจจุบันมีฟีเจอร์ในการเรนเดอร์เอกสาร DWG โดยการให้พิกัดของความกว้างและความสูงของเอกสาร
ตัวอย่างโค้ดด้านล่างแสดงวิธีการเรนเดอร์เอกสาร DWG
String srcFile = dataDir + "visualization_-_conference_room.dwg"; | |
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[] {"Layout1"}); | |
// Create an instance of PdfOptions | |
PdfOptions pdfOptions = new PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.setVectorRasterizationOptions(rasterizationOptions); | |
// Export the DWG to PDF | |
image.save(dataDir + "ExportSpecificLayoutToPDF_out_.pdf", pdfOptions); | |
คุณสมบัติ CadRasterizationOptions.Layouts เป็นชนิดอาร์เรย์ของสตริงดังนั้นคุณจึงสามารถระบุเลย์เอาต์มากกว่าหนึ่งตัวในคราวเดียวสำหรับการแปลงเป็นรูปแบบ PDF ขณะระบุเลย์เอาต์หลายรายการสำหรับคุณสมบัติ CadRasterizationOptions.Layouts PDF ที่ได้จะมีหลายหน้า โดยแต่ละหน้าจะแสดงถึงเลย์เอาต์ AutoCAD แต่ละรายการ
รายการเลย์เอาต์ทั้งหมด
คุณสามารถแสดงรายการเลย์เอาต์ทั้งหมดที่มีอยู่ในภาพวาด AutoCAD โดยใช้โค้ดสั้น ๆ ต่อไปนี้
String srcFile = dataDir + "conic_pyramid.dxf"; | |
Image image = Image.load(srcFile); | |
CadImage cadImage = (CadImage)image; | |
CadLayoutDictionary layouts = cadImage.getLayouts(); | |
for (CadLayout layout : layouts.getValues()) | |
{ | |
System.out.println("Layout " + layout.getLayoutName()); | |
} | |
รับค่าพารามิเตอร์ของบล็อกอ้างอิงภายนอก
Aspose.CAD สำหรับ Java API อนุญาตให้คุณรับการอ้างอิงภายนอกของบล็อกพารามิเตอร์ Aspose.CAD API เปิดเผย getXRefPathName() เพื่อให้ได้รับการอ้างอิงภายนอกของบล็อกพารามิเตอร์ในคอลเล็กชันของ CadBlockDictionary
โค้ดต่อไปนี้แสดงวิธีการได้รับการอ้างอิงภายนอกของบล็อกพารามิเตอร์
// Load an existing DWG file as CadImage. | |
CadImage cadImage = (CadImage) Image.load(dataDir + "sample.dwg"); | |
// Access the external path name property | |
CadStringParameter sXternalRef = cadImage.getBlockEntities().get_Item("*MODEL_SPACE").getXRefPathName(); | |
System.out.println(sXternalRef); |
ค้นหาข้อความในไฟล์ DWG AutoCAD
Aspose.CAD สำหรับ Java API อนุญาตให้คุณค้นหาข้อความในไฟล์ DWG AutoCAD Aspose.CAD API เปิดเผยคลาส CadText ที่เป็นตัวแทนของเอนทิตีข้อความในไฟล์ DWG AutoCAD คลาส CadMText ก็รวมเข้ากับ Aspose.CAD API เนื่องจากเอนทิตีอื่น ๆ อาจมีข้อความด้วย
โค้ดต่อไปนี้แสดงวิธีการค้นหาข้อความในไฟล์ DWG AutoCAD
private static final String dataDir = Utils.getDataDir(SearchTextInDWGAutoCADFile.class) + "DWGDrawings/"; | |
public static void main(String[] args) { | |
// Search Text In DWG AutoCAD File | |
searchTextInDWGAutoCADFile(); | |
// Search For Text In Specific Layout | |
} | |
public static void searchTextInDWGAutoCADFile() | |
{ | |
//String dataDir="Test_Apsose.CAD\\"; | |
// Load an existing DWG file as CadImage. | |
CadImage cadImage = (CadImage) CadImage.load(dataDir + "sample_file.dwg"); | |
for (CadBaseEntity entity : cadImage.getEntities()) | |
{ | |
IterateCADNodeEntities(entity); | |
} | |
// Search for text in the block section | |
for (CadBlockEntity blockEntity : cadImage.getBlockEntities().getValues()) | |
{ | |
for (CadBaseEntity entity : blockEntity.getEntities()) | |
{ | |
IterateCADNodeEntities(entity); | |
} | |
} | |
} | |
//Recursive function to iterate nodes inside nodes | |
private static void IterateCADNodeEntities(CadBaseEntity obj) | |
{ | |
switch (obj.getTypeName()) | |
{ | |
case CadEntityTypeName.TEXT: | |
CadText childObjectText = (CadText) obj; | |
System.out.println(childObjectText.getDefaultValue()); | |
break; | |
case CadEntityTypeName.MTEXT: | |
CadMText childObjectMText = (CadMText) obj; | |
System.out.println(childObjectMText.getText()); | |
break; | |
case CadEntityTypeName.INSERT: | |
CadInsertObject childInsertObject = (CadInsertObject) obj; | |
for (CadBaseEntity tempobj : childInsertObject.getChildObjects()) | |
{ | |
IterateCADNodeEntities(tempobj); | |
} | |
break; | |
case CadEntityTypeName.ATTDEF: | |
CadAttDef attDef = (CadAttDef) obj; | |
System.out.println(attDef.getDefaultString()); | |
break; | |
case CadEntityTypeName.ATTRIB: | |
CadAttrib attAttrib = (CadAttrib) obj; | |
System.out.println(attAttrib.getDefaultText()); | |
break; | |
} | |
} | |
ค้นหาข้อความในเลย์เอาต์เฉพาะ
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Load an existing DWG file as CadImage. | |
CadImage cadImage = (CadImage) CadImage.load(dataDir + "sample_file.dwg"); | |
// get all layout names and link each layout with corresponding block with entities | |
CadLayoutDictionary layouts = cadImage.getLayouts(); | |
String[] layoutNames = new String[layouts.size()]; | |
int i = 0; | |
for (com.aspose.cad.fileformats.cad.cadobjects.CadLayout layout : layouts.getValues()) { | |
layoutNames[i++] = layout.getLayoutName(); | |
System.out.println("Layout " + layout.getLayoutName() + " is found"); | |
// find block, applicable for DWG only | |
CadBlockTableObject blockTableObjectReference = null; | |
for (CadBlockTableObject tableObject : cadImage.getBlocksTables()) { | |
if (String.CASE_INSENSITIVE_ORDER.compare(tableObject.getHardPointerToLayout(), layout.getObjectHandle()) == 0) { | |
blockTableObjectReference = tableObject; | |
break; | |
} | |
} | |
// Collection cadBlockEntity.Entities contains information about all entities on specific layout | |
// if this collection has no elements it means layout is a copy of Model layout and contains the same entities | |
// Below line of code is for reference | |
CadBlockEntity cadBlockEntity = cadImage.getBlockEntities().get_Item(blockTableObjectReference.getBlockName()); | |
} |
การเข้าถึงธงอันเดอร์เลย์สำหรับรูปแบบ DWG
Aspose.CAD สำหรับ Java ได้ดำเนินการธงอันเดอร์เลย์สำหรับรูปแบบ DWG และอนุญาตให้นักพัฒนาสามารถเข้าถึงได้ ด้านล่างนี้คือการสาธิตโค้ดอย่างง่าย
String dataDir = Utils.getDataDir(AccessingUnderlayFlagsofDWG.class) + "DWGDrawings/"; | |
String fileName = dataDir + "BlockRefDgn.dwg"; | |
// Load an existing DWG file and convert it into CadImage | |
com.aspose.cad.fileformats.cad.CadImage image = (com.aspose.cad.fileformats.cad.CadImage) com.aspose.cad.Image.load(fileName); | |
// Go through each entity inside the DWG file | |
for (com.aspose.cad.fileformats.cad.cadobjects.CadBaseEntity entity : image.getEntities()) | |
{ | |
// Check if entity is of CadDgnUnderlay type | |
if (entity instanceof com.aspose.cad.fileformats.cad.cadobjects.CadDgnUnderlay) | |
{ | |
// Access different underlay flags | |
com.aspose.cad.fileformats.cad.cadobjects.CadUnderlay underlay = (com.aspose.cad.fileformats.cad.cadobjects.CadUnderlay) entity; | |
System.out.println(underlay.getUnderlayPath()); | |
System.out.println(underlay.getUnderlayName()); | |
System.out.println(underlay.getInsertionPoint().getX()); | |
System.out.println(underlay.getInsertionPoint().getY()); | |
System.out.println(underlay.getRotationAngle()); | |
System.out.println(underlay.getScaleX()); | |
System.out.println(underlay.getScaleY()); | |
System.out.println(underlay.getScaleZ()); | |
System.out.println((underlay.getFlags() & com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.UnderlayIsOn) == com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.UnderlayIsOn); | |
System.out.println((underlay.getFlags() & com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.ClippingIsOn) == com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.ClippingIsOn); | |
System.out.println((underlay.getFlags() & com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.Monochrome) != com.aspose.cad.fileformats.cad.cadobjects.UnderlayFlags.Monochrome); | |
break; | |
} | |
} |
การสนับสนุนสำหรับเอนทิตี DWG
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และสนับสนุนเอนทิตีต่าง ๆ ในการทำงาน
การสนับสนุนสำหรับเอนทิตี MLeader
DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า มีเอนทิตีที่แตกต่างกันในไฟล์ DWG ส่วนด้านล่างนี้อธิบายถึงตัวอย่างการทำงานกับเอนทิตี MLeader ภายในไฟล์ DWG
String file = dataDir + "Multileaders.dwg"; | |
Image image = Image.load(file); | |
// Test | |
CadImage cadImage = (CadImage)image; | |
Assert.areNotEqual(cadImage.getEntities().length, 0); | |
CadMLeader cadMLeader = (CadMLeader)cadImage.getEntities()[2]; | |
Assert.areEqual(cadMLeader.getStyleDescription(), "Standard"); | |
Assert.areEqual(cadMLeader.getLeaderStyleId(), "12E"); | |
Assert.areEqual(cadMLeader.getArrowHeadId1(), "639"); | |
Assert.areEqual(cadMLeader.getLeaderLineTypeID(), "14"); | |
CadMLeaderContextData context = cadMLeader.getContextData(); | |
Assert.areEqual(context.getArrowHeadSize(), 30.0, 0.1); | |
Assert.areEqual(context.getBasePoint().getX(), 481, 1); | |
Assert.areEqual(context.getContentScale(), 1.0, 0.01); | |
Assert.areEqual(context.getDefaultText().getValue(), "This is multileader with huge text\\P{\\H1.5x;6666666666666666666666666666\\P}bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); | |
Assert.areEqual(context.hasMText(), true); | |
CadMLeaderNode mleaderNode = context.getLeaderNode(); | |
Assert.areEqual(mleaderNode.getLastLeaderLinePoint().getX(), 473, 1); | |
CadMLeaderLine leaderLine = mleaderNode.getLeaderLine(); | |
Assert.areEqual(leaderLine.getBreakEndPoint().toString(), null); | |
Assert.areEqual(Integer.toString(leaderLine.getBreakPointIndex().getValue()), Integer.toString(0)); | |
Assert.areEqual(leaderLine.getBreakStartPoint().toString(), null); | |
Assert.areEqual(Integer.toString(leaderLine.getLeaderLineIndex().getValue()), Integer.toString(0)); | |
Assert.areEqual(Integer.toString(leaderLine.getLeaderPoints().size()), Integer.toString(4)); | |
Assert.areEqual(Integer.toString(mleaderNode.getBranchIndex()), Integer.toString(0)); | |
Assert.areEqual(mleaderNode.getDogLegLength(), 8.0, 0.1); | |
Assert.areEqual(context.hasMText(), true); | |
// Assert.IsTrue((context.hasMText()==true , "Invalid Z value"); | |
Assert.areEqual(context.getTextAttachmentType().getValue(), (short)1); | |
Assert.areEqual(context.getTextBackgroundColor().getValue(), 18); | |
Assert.areEqual(context.getTextHeight(), 20.0, 0.1); | |
Assert.areEqual(context.getTextStyleID().getValue(), "11"); | |
Assert.areEqual(context.getTextRotation().getValue(), 0.0, 0.01); | |
Assert.areEqual(cadMLeader.getArrowHeadId1(), "639"); | |
Assert.areEqual(cadMLeader.getLeaderType(), 1); | |
Assert.areEqual(cadMLeader.getBlockContentColor(), 0); | |
Assert.areEqual(cadMLeader.getLeaderLineColor(), 0); | |
Assert.areEqual(cadMLeader.getTextHeight(), 1.0, 0.01); | |
การสนับสนุนการส่งออกเอนทิตี DWG เป็นภาพ
DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า มีเอนทิตีที่แตกต่างกันในไฟล์ DWG ส่วนด้านล่างนี้อธิบายถึงตัวอย่างการส่งออกเอนทิตี DWG เฉพาะไปยังภาพ
// The path to the resource directory. | |
String dataDir = Utils.getDataDir(ParticularDWGToImage.class) + "DWGDrawings/"; | |
String sourceFilePath = dataDir + "visualization_-_conference_room.dwg"; | |
CadImage cadImage = ((CadImage)(Image.load(sourceFilePath))); | |
CadBaseEntity[] entities = cadImage.getEntities(); | |
List<CadBaseEntity> filteredEntities = new ArrayList<CadBaseEntity>(); | |
for (CadBaseEntity baseEntity : entities) { | |
// selection or filtration of entities | |
if ((baseEntity.getTypeName() == CadEntityTypeName.TEXT)) { | |
filteredEntities.add(baseEntity); | |
} | |
} | |
CadBaseEntity[] arr = new CadBaseEntity[filteredEntities.size()]; | |
cadImage.setEntities(filteredEntities.toArray(arr)); | |
// 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); | |
String outFile = dataDir + "result_out_generated.pdf"; | |
// Export the CAD to PDF | |
cadImage.save(outFile, pdfOptions); |
การสนับสนุนการนำเข้าภาพไปยังไฟล์ DWG
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และสนับสนุนเอนทิตีที่แตกต่างกันในการทำงาน DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า มีเอนทิตีที่แตกต่างกันในไฟล์ DWG ส่วนด้านล่างนี้อธิบายว่าจะนำเข้าสามารถทำได้อย่างไรภายในไฟล์ DWG
การสนับสนุนในการเพิ่มข้อความใน DWG
Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และสนับสนุนเอนทิตีที่แตกต่างกันในการทำงาน DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า มีเอนทิตีที่แตกต่างกันในไฟล์ DWG ส่วนด้านล่างนี้อธิบายวิธีการเพิ่มข้อความภายในไฟล์ DWG
String dataDir = Utils.getDataDir(AddTextInDWG.class) + "DWGDrawings/"; | |
String dwgPathToFile = dataDir + "SimpleEntites.dwg"; | |
Image image = Image.load(dwgPathToFile); | |
CadText cadText = new CadText(); | |
cadText.setStyleType("Standard"); | |
cadText.setDefaultValue("Some custom text"); | |
cadText.setColorId(256); | |
cadText.setLayerName("0"); | |
cadText.getFirstAlignment().setX(47.9); | |
cadText.getFirstAlignment().setY(5.56); | |
cadText.setTextHeight(0.8); | |
cadText.setScaleX(0); | |
CadImage cadImage = ((CadImage)(image)); | |
cadImage.getBlockEntities().get_Item("*Model_Space").addEntity(cadText); | |
PdfOptions pdfOptions = new PdfOptions(); | |
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); | |
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions); | |
cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor); | |
cadRasterizationOptions.setPageHeight(1600); | |
cadRasterizationOptions.setPageWidth(1600); | |
cadRasterizationOptions.setLayouts(new String[] {"Model"}); | |
image.save(dataDir+"SimpleEntites_generated.dwg.pdf", pdfOptions); | |
การสนับสนุนสำหรับ Mesh ใน DWG
Aspose.CAD สำหรับ Java API ในตอนนี้สามารถเข้าถึงเอนทิตีที่สนับสนุน Mesh ซึ่งรวมถึงประเภท CadPolyFaceMesh และ CadPolygonMesh ตัวอย่างต่อไปนี้อธิบายวิธีการเข้าถึงประเภท Mesh
แปลงภาพวาด DWG เป็น DXF
Aspose.CAD มีฟีเจอร์ในการโหลดไฟล์ DWG ของ AutoCAD และส่งออกไปยังรูปแบบ DXF วิธีการแปลง DWG เป็น DXF ทำงานดังต่อไปนี้:
- โหลดไฟล์ภาพวาด DWG โดยใช้วิธี Image.load
- ส่งออกภาพวาด DWG เป็น DXF โดยใช้วิธี Image.save()
ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงไฟล์ DWG ไปยังรูปแบบ DXF
// The path to the resource directory. | |
String dataDir = Utils.getDataDir(DWGToDXF.class) + "DWGDrawings/"; | |
String inputFile = dataDir+ "Line.dwg"; | |
String outFile = dataDir+ "Line.dxf"; | |
CadImage cadImage = (CadImage)Image.load(inputFile); | |
cadImage.save(outFile); |
แปลงภาพวาด DWG เป็น SVG
Aspose.CAD API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และแปลงเป็น SVG หัวข้อนี้อธิบายการใช้งาน Aspose.CAD API เพื่อให้การแปลง DWG เป็นรูปแบบ SVG ผ่านขั้นตอนที่ง่ายตามที่กำหนดไว้ด้านล่าง
- โหลดไฟล์ DWG เข้าสู่วิธี Image
- สร้างอ็อบเจ็กต์ของคลาส SvgOptions และตั้งค่าคุณสมบัติที่ต้องการ
- ส่งออกภาพวาด DWG เป็น SVG โดยใช้วิธี Image.save()
ตัวอย่างโค้ดด้านล่างแสดงวิธีการแปลงไฟล์ DWG เป็นรูปแบบ SVG
// The path to the resource directory. | |
String dataDir = Utils.getDataDir(ExportToSVG.class) + "DWGDrawings/"; | |
Image image = Image.load(dataDir + "meshes.dwg"); | |
{ | |
SvgOptions options = new SvgOptions(); | |
options.setColorType(SvgColorMode.Grayscale); | |
options.setTextAsShapes(true); | |
image.save(dataDir + "meshes.svg"); | |
} |