การวาด DWG

Contents
[ ]

การส่งออกภาพวาด DWG เป็น PDF

Aspose.CAD สำหรับ Java API สามารถโหลดภาพวาด AutoCAD ในรูปแบบ DWG และแปลงเป็น PDF หัวข้อนี้อธิบายการใช้งาน Aspose.CAD API เพื่อให้การแปลง DWG เป็นรูปแบบ PDF ผ่านขั้นตอนที่ง่ายตามที่กำหนดไว้ข้างหน้า

รูปแบบไฟล์ DWG

DWG เป็นไฟล์ไบนารีที่มีข้อมูลภาพเวกเตอร์และเมตาดาต้า ข้อมูลภาพเวกเตอร์ให้คำแนะนำแก่แอปพลิเคชัน CAD เกี่ยวกับวิธีการแสดงผล DWG; เมตาดาต้าอาจมีข้อมูลหลากหลายเกี่ยวกับไฟล์รวมถึงข้อมูลที่เฉพาะเจาะจงตามตำแหน่งและข้อมูลของลูกค้า สเปคทางเปิดสำหรับรูปแบบไฟล์ DWG สามารถพบได้ ใน PDF นี้

แปลงไฟล์ DWG เป็น PDF

ขั้นตอนง่าย ๆ ต่อไปนี้ต้องการเพื่อแปลง DWG เป็น PDF

  1. โหลดไฟล์ DWG เข้าสู่วิธี Image
  2. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าคุณสมบัติ PageHeight & PageWidth
  3. สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
  4. เรียกใช้ 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 เดียวที่มีขนาดเลย์เอาต์ต่างกัน วิธีนี้ทำงานดังต่อไปนี้:

  1. โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load
  2. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
  3. เพิ่ม LayoutPageSizes ตามที่ต้องการสำหรับอ็อบเจ็กต์ CadRasterizationOptions
  4. สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
  5. ส่งออกรูปภาพไปยัง 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

  1. โหลดไฟล์ DWG เข้าสู่วิธี Image
  2. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่า PageHeight & PageWidth 
  3. สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
  4. เรียกใช้ 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

วิธีนี้ทำงานดังต่อไปนี้:

  1. โหลดไฟล์ DWG โดยใช้วิธี Image.load
  2. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
  3. ตั้งค่าคุณสมบัติ Layouts สำหรับอ็อบเจ็กต์ CadRasterizationOptions
  4. สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
  5. ส่งออกรูปภาพไปยัง 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

วิธีนี้ทำงานดังต่อไปนี้:

  1. โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load 
  2. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions 
  3. สร้างอ็อบเจ็กต์ของคลาส CadRasterizationOptions และตั้งค่าสูงและกว้างของหน้า
  4. สร้างอ็อบเจ็กต์ของคลาส PdfOptions และตั้งค่าคุณสมบัติ VectorRasterizationOptions
  5. ส่งออกรูปภาพไปยัง PDF โดยใช้วิธี Image.save()

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

// The path to the resource directory.
String dataDir = Utils.getDataDir(SupportForHiddenLines.class) + "DWGDrawings/";
String sourceFilePath = dataDir + "Bottom_plate.dwg";
String outPath = dataDir + "Bottom_plate.pdf";
CadImage cadImage = (CadImage)Image.load(sourceFilePath);
List<String> list = Arrays.asList("Print","L1_RegMark","L2_RegMark");
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageHeight(cadImage.getHeight());
rasterizationOptions.setPageWidth(cadImage.getWidth()) ;
rasterizationOptions.setLayers(list);
PdfOptions pdfOptions = new PdfOptions();
rasterizationOptions.setLayouts(new String[] { "Model" });
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
cadImage.save(outPath, pdfOptions);
System.out.println("\nThe DWG file exported successfully to PDF.\nFile saved at " + dataDir);

การสนับสนุนสำหรับการตั้งค่าพื้นที่พิมพ์สำหรับรูปภาพ 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

  1. โหลดไฟล์ DWG โดยใช้วิธี Aspose.CAD.Image.load 
  2. เดินทางผ่านทุกเอนทิตีภาพ
  3. หากเอนทิตีนั้นคือ 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 ทำงานดังต่อไปนี้:

  1. โหลดไฟล์ภาพวาด DWG โดยใช้วิธี Image.load 
  2. ส่งออกภาพวาด 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 ผ่านขั้นตอนที่ง่ายตามที่กำหนดไว้ด้านล่าง

  1. โหลดไฟล์ DWG เข้าสู่วิธี Image
  2. สร้างอ็อบเจ็กต์ของคลาส SvgOptions และตั้งค่าคุณสมบัติที่ต้องการ
  3. ส่งออกภาพวาด 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");
}