Bản vẽ DWG

Xuất bản vẽ DWG sang PDF

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG và chuyển đổi chúng sang PDF. Chủ đề này giải thích cách sử dụng API Aspose.CAD để thực hiện việc chuyển đổi từ DWG sang định dạng PDF thông qua các bước đơn giản như đã định nghĩa ở phía trước.

Định dạng tệp DWG

DWG là một tệp nhị phân chứa dữ liệu hình ảnh vector và siêu dữ liệu. Dữ liệu hình ảnh vector cung cấp hướng dẫn cho ứng dụng CAD về cách hiển thị DWG; siêu dữ liệu có thể chứa nhiều thông tin khác nhau về tệp, bao gồm dữ liệu theo vị trí và cũng là dữ liệu của khách hàng. Các thông số kỹ thuật mở cho định dạng tệp DWG có thể được tìm thấy trong PDF này

Chuyển đổi tệp DWG sang PDF

Các bước đơn giản sau đây là cần thiết để chuyển đổi DWG sang PDF.

  1. Tải tệp DWG vào một phiên bản của Image.
  2. Tạo một đối tượng của lớp CadRasterizationOptions và thiết lập các thuộc tính PageHeight & PageWidth.
  3. Tạo một đối tượng của lớp PdfOptions và thiết lập thuộc tính VectorRasterizationOptions.
  4. Gọi phương thức Image.save và truyền đối tượng của PdfOptions làm tham số thứ hai.

Mẫu mã bên dưới cho thấy cách xuất bản vẽ DWG sang 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);

Tạo PDF Đơn với Các Kích Thước Bố Cục Khác Nhau

Aspose.CAD cho Java cho phép bạn chuyển đổi tệp DWG thành một PDF đơn với các kích thước bố cục khác nhau. Cách làm này hoạt động như sau:

  1. Tải một tệp DWG bằng cách sử dụng phương thức nhà máy Aspose.CAD.Image.load.
  2. Tạo một phiên bản của lớp CadRasterizationOptions và thiết lập chiều cao và chiều rộng trang kết quả.
  3. Thêm các LayoutPageSizes cần thiết cho đối tượng CadRasterizationOptions.
  4. Tạo một phiên bản của lớp PdfOptions và thiết lập thuộc tính VectorRasterizationOptions.
  5. Xuất hình ảnh sang PDF bằng cách sử dụng phương thức Image.save .

Mẫu mã bên dưới cho thấy cách tạo một PDF đơn với các bố cục khác nhau.

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);

Xuất DWG sang PDF/A và PDF/E

Các bước đơn giản sau đây là cần thiết để chuyển đổi DWG sang PDF.

  1. Tải tệp DWG vào một phiên bản của Image.
  2. Tạo một đối tượng của lớp CadRasterizationOptions và thiết lập các thuộc tính PageHeight & PageWidth .
  3. Tạo một đối tượng của lớp PdfOptions và thiết lập thuộc tính VectorRasterizationOptions.
  4. Gọi phương thức Image.save và truyền đối tượng của PdfOptions vào tham số thứ hai.

Mẫu mã bên dưới cho thấy cách xuất các bản vẽ DWG sang 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);

Các Đối Tượng AutoCAD Hỗ Trợ

Các đối tượng AutoCAD sau được hỗ trợ.

  • 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

Xuất Bố Cục DWG Cụ Thể sang PDF

Cách làm này hoạt động như sau:

  1. Tải một tệp DWG bằng cách sử dụng phương thức Image.load nhà máy.
  2. Tạo một phiên bản của lớp CadRasterizationOptions và thiết lập chiều cao và chiều rộng trang kết quả.
  3. Thiết lập thuộc tính Layouts cho đối tượng CadRasterizationOptions.
  4. Tạo một phiên bản của lớp PdfOptions và thiết lập thuộc tính VectorRasterizationOptions.
  5. Xuất hình ảnh sang PDF bằng cách sử dụng phương thức Image.save() .

Mẫu mã bên dưới cho thấy cách chuyển đổi một bố cục cụ thể của DWG sang 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);

Xuất DWG sang Raster hoặc PDF sử dụng Kích Thước Cố Định

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG, và chuyển đổi chúng sang PDF hoặc Raster sử dụng kích thước cố định.

Mẫu mã bên dưới cho thấy cách thực hiện tính năng này.

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;
}

Hỗ trợ các đường ẩn bo tròn khi xuất DWG/DXF sang BMP và PDF

Cách làm này hoạt động như sau:

  1. Tải một tệp DWG bằng cách sử dụng phương thức Aspose.CAD.Image.load nhà máy.
  2. Tạo một phiên bản của lớp CadRasterizationOptions.
  3. Tạo một phiên bản của lớp CadRasterizationOptions và thiết lập chiều cao và chiều rộng trang kết quả.
  4. Tạo một phiên bản của lớp PdfOptions và thiết lập thuộc tính VectorRasterizationOptions .
  5. Xuất hình ảnh sang PDF bằng cách sử dụng phương thức Image.save() .

Mẫu mã bên dưới cho thấy cách thực hiện tính năng này.

// 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);

Hỗ trợ thiết lập khu vực in cho hình ảnh DWG trong PDF xuất ra

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG và chuyển đổi chúng sang PDF. Chủ đề này giải thích cách sử dụng API Aspose.CAD để đạt được sự hỗ trợ cho việc thiết lập một khu vực in cho hình ảnh DWG trong PDF xuất ra.

Mẫu mã bên dưới cho thấy cách thực hiện tính năng này.

// 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);
}

Hỗ trợ đọc siêu dữ liệu XREF cho tệp DWG

  1. Tải một tệp DWG bằng cách sử dụng phương thức Aspose.CAD.Image.load nhà máy.
  2. Duyệt qua từng thực thể hình ảnh.
  3. Nếu thực thể là CadUnderlay thì là thực thể XREF với siêu dữ liệu.

Mẫu mã bên dưới cho thấy cách đạt được tính năng này.

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();
}
}
}

Tài liệu DWG bằng cách xác định tọa độ

Aspose.CAD cho Java API hiện cung cấp tính năng để kết xuất tài liệu DWG bằng cách cung cấp tọa độ của chiều rộng và chiều cao của tài liệu.

Mẫu mã bên dưới cho thấy cách kết xuất một tài liệu 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);

Thuộc tính CadRasterizationOptions.Layouts là kiểu mảng chuỗi vì vậy bạn có thể chỉ định nhiều hơn một bố cục cùng một lúc cho việc chuyển đổi sang định dạng PDF có thể. Khi chỉ định nhiều bố cục cho thuộc tính CadRasterizationOptions.Layouts, PDF kết quả sẽ có nhiều trang, nơi mỗi trang đại diện cho một bố cục AutoCAD riêng biệt.

Liệt kê tất cả các bố cục

Bạn có thể liệt kê tất cả các bố cục có trong một bản vẽ AutoCAD bằng cách sử dụng mẫu mã sau.

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());
}

Lấy Giá Trị Thuộc Tính Khối Của Tham Chiếu Ngoài

Aspose.CAD cho Java API cho phép bạn lấy một tham chiếu ngoài của một thuộc tính khối. API Aspose.CAD phơi bày thuộc tính getXRefPathName() để lấy tham chiếu ngoài của một thuộc tính khối trong một bộ CadBlockDictionary.

Mẫu mã sau đây minh họa cách lấy một tham chiếu ngoài của một thuộc tính khối.

// 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);

Tìm kiếm văn bản trong tệp DWG AutoCAD

Aspose.CAD cho Java API cho phép bạn tìm kiếm văn bản trong một tệp DWG AutoCAD. API Aspose.CAD phơi bày lớp CadText đại diện cho các thực thể văn bản trong tệp DWG AutoCAD. Lớp CadMText cũng được bao gồm trong API Aspose.CAD vì một số thực thể khác cũng có thể chứa văn bản.

Mẫu mã sau đây minh họa cách tìm kiếm văn bản trong tệp 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;
}
}

Tìm kiếm Văn Bản Trong Bố Cục Cụ Thể

// 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());
}

Truy cập Cờ Bỏ Qua cho Định Dạng DWG

Aspose.CAD cho Java đã triển khai các cờ bỏ qua cho định dạng DWG và cho phép các nhà phát triển truy cập chúng. Dưới đây là một minh họa mã đơn giản.

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;
}
}

Hỗ trợ Các Thực Thể DWG

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG và hỗ trợ các thực thể khác nhau để làm việc.

Hỗ trợ Thực Thể MLeader

DWG là một tệp nhị phân chứa dữ liệu hình ảnh vector và siêu dữ liệu. Có nhiều thực thể khác nhau trong một tệp DWG. Phần sau đây mô tả một ví dụ về việc làm việc với thực thể MLeader bên trong tệp 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);

Hỗ trợ Xuất Thực Thể DWG sang Hình Ảnh

DWG là một tệp nhị phân chứa dữ liệu hình ảnh vector và siêu dữ liệu. Có nhiều thực thể khác nhau trong một tệp DWG. Phần sau đây mô tả một ví dụ về việc xuất một thực thể DWG cụ thể sang hình ảnh.

// 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);

Hỗ trợ Nhập Hình Ảnh vào Tệp DWG

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG và hỗ trợ các thực thể khác nhau để làm việc. Một DWG là một tệp nhị phân chứa dữ liệu hình ảnh vector và siêu dữ liệu. Có nhiều thực thể khác nhau trong một tệp DWG. Phần sau đây mô tả cách mà chúng ta có thể nhập hình ảnh vào bên trong tệp DWG.

Hỗ trợ Thêm văn bản vào DWG

Aspose.CAD cho Java API có thể tải các bản vẽ AutoCAD ở định dạng DWG và hỗ trợ các thực thể khác nhau để làm việc. Một DWG là một tệp nhị phân chứa dữ liệu hình ảnh vector và siêu dữ liệu. Có nhiều thực thể khác nhau trong một tệp DWG. Phần sau đây mô tả cách mà chúng ta có thể thêm văn bản vào bên trong tệp 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);

Hỗ trợ Lưới trong DWG

Aspose.CAD cho Java API hiện có thể truy cập vào các thực thể hỗ trợ lưới bao gồm các loại CadPolyFaceMeshCadPolygonMesh. Ví dụ sau đây mô tả cách mà chúng ta có thể truy cập các loại lưới.

Chuyển đổi Bản Vẽ DWG sang DXF

Aspose.CAD cung cấp tính năng để tải tệp DWG của AutoCAD và xuất nó sang định dạng DXF. Cách tiếp cận chuyển đổi từ DWG sang DXF hoạt động như sau:

  1. Tải tệp bản vẽ DWG bằng cách sử dụng phương thức Image.load nhà máy.
  2. Xuất bản vẽ DWG sang DXF bằng cách sử dụng phương thức Image.save() .

Mẫu mã bên dưới cho thấy cách chuyển đổi một tệp DWG sang định dạng 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);

Chuyển đổi Bản Vẽ DWG sang SVG

API Aspose.CAD có thể tải các bản vẽ AutoCAD ở định dạng DWG và chuyển đổi chúng sang SVG. Chủ đề này giải thích cách sử dụng API Aspose.CAD để thực hiện việc chuyển đổi từ DWG sang định dạng SVG thông qua các bước đơn giản như đã định nghĩa bên dưới.

  1. Tải tệp DWG vào một phiên bản của Image.
  2. Tạo một đối tượng của lớp SvgOptions và thiết lập các thuộc tính cần thiết.
  3. Xuất bản vẽ DWG sang SVG bằng cách sử dụng phương thức Image.save() .

Mẫu mã bên dưới cho thấy cách chuyển đổi một tệp DWG sang định dạng 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");
}