DWG 도면

DWG 도면을 PDF로 내보내기

Aspose.CAD for Java API는 DWG 형식의 AutoCAD 도면을 로드하고 PDF로 변환할 수 있습니다. 이 주제에서는 DWG를 PDF 형식으로 변환하는 간단한 단계를 정의하여 Aspose.CAD API의 사용법을 설명합니다.

DWG 파일 형식

DWG는 벡터 이미지 데이터와 메타데이터를 포함하는 바이너리 파일입니다. 벡터 이미지 데이터는 CAD 응용 프로그램에 DWG를 표시하는 방법에 대한 지침을 제공하며, 메타데이터에는 위치별 데이터 및 클라이언트 데이터와 같은 다양한 정보가 포함될 수 있습니다. DWG 파일 형식에 대한 개방 사양은 이 PDF에서 확인할 수 있습니다.

DWG 파일을 PDF로 변환하기

DWG를 PDF로 변환하기 위해 다음과 같은 간단한 단계가 필요합니다.

  1. Image의 인스턴스에 DWG 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 생성하고 PageHeightPageWidth 속성을 설정합니다.
  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 for Java를 사용하면 DWG 파일을 다양한 레이아웃 크기로 단일 PDF로 변환할 수 있습니다. 이 접근 방식은 다음과 같이 작동합니다:

  1. Aspose.CAD.Image.load 팩토리 메서드를 사용하여 DWG 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 인스턴스를 생성하고 결과 페이지 높이와 너비를 설정합니다.
  3. CadRasterizationOptions 객체를 위한 필수 LayoutPageSizes를 추가합니다.
  4. PdfOptions 클래스의 인스턴스를 생성하고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save 메서드를 사용하여 이미지를 PDF로 내보냅니다.

아래의 코드 샘플은 서로 다른 레이아웃을 가진 단일 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. Image의 인스턴스에 DWG 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 생성하고 PageHeightPageWidth 속성을 설정합니다.
  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. Image.load 팩토리 메서드를 사용하여 DWG 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 인스턴스를 생성하고 결과 페이지 높이와 너비를 설정합니다.
  3. CadRasterizationOptions 객체에 대한 Layouts 속성을 설정합니다.
  4. PdfOptions 클래스의 인스턴스를 생성하고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save() 메서드를 사용하여 이미지를 PDF로 내보냅니다.

아래의 코드 샘플은 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를 래스터 또는 PDF로 내보내기

Aspose.CAD for Java API는 DWG 형식의 AutoCAD 도면을 로드하고 고정 크기를 사용하여 PDF 또는 래스터로 변환할 수 있습니다.

아래의 코드 샘플은 이 기능을 구현하는 방법을 보여줍니다.

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. Aspose.CAD.Image.load 팩토리 메서드를 사용하여 DWG 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 인스턴스를 생성합니다.
  3. 결과 페이지 높이와 너비를 설정하기 위해 CadRasterizationOptions 클래스의 또 다른 인스턴스를 생성합니다.
  4. PdfOptions 클래스의 인스턴스를 생성하고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save() 메서드를 사용하여 이미지를 PDF로 내보냅니다.

아래의 코드 샘플은 이 기능을 구현하는 방법을 보여줍니다.

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

내보낸 PDF에서 DWG 이미지의 인쇄 영역 설정 지원

Aspose.CAD for Java API는 DWG 형식의 AutoCAD 도면을 로드하고 PDF로 변환할 수 있습니다. 이 주제에서는 내보낸 PDF에서 DWG 이미지의 인쇄 영역 설정 지원을 달성하기 위한 Aspose.CAD API의 사용법을 설명합니다.

아래의 코드 샘플은 이 기능을 구현하는 방법을 보여줍니다.

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

DWG 파일에 대한 XREF 메타데이터 읽기 지원

  1. Aspose.CAD.Image.load 팩토리 메서드를 사용하여 DWG 파일을 로드합니다.
  2. 모든 이미지 엔티티를 탐색합니다.
  3. 엔티티가 CadUnderlay인 경우 XREF 엔티티와 메타데이터를 연결합니다.

아래의 코드 샘플은 이 기능을 달성하는 방법을 보여줍니다.

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 for 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 for 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 for Java API는 DWG AutoCAD 파일에서 텍스트를 검색하는 기능을 제공합니다. Aspose.CAD API는 DWG AutoCAD 파일에서 텍스트 엔티티를 나타내는 CadText 클래스를 노출합니다. 클래스 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 for 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 for Java API는 DWG 형식의 AutoCAD 도면을 로드할 수 있으며, 다양한 엔티티와 함께 작업할 수 있도록 지원합니다.

MLeader 엔티티 지원

DWG는 벡터 이미지 데이터와 메타데이터를 포함하는 바이너리 파일입니다. DWG 파일에는 다양한 엔티티가 있습니다. 다음 섹션에서는 DWG 파일 내에서 MLeader 엔티티를 사용하는 예제를 설명합니다.

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 for Java API는 DWG 형식의 AutoCAD 도면을 로드하고 다양한 엔티티와 함께 작업할 수 있도록 지원합니다. DWG는 벡터 이미지 데이터와 메타데이터를 포함하는 바이너리 파일입니다. DWG 파일에는 다양한 엔티티가 있습니다. 다음 섹션에서는 DWG 파일 내에 이미지를 가져오는 방법을 설명합니다.

DWG에 텍스트 추가 지원

Aspose.CAD for Java API는 DWG 형식의 AutoCAD 도면을 로드하고 다양한 엔티티와 함께 작업할 수 있도록 지원합니다. 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);

DWG에서 메쉬 지원

Aspose.CAD for Java API는 이제 CadPolyFaceMeshCadPolygonMesh 유형을 포함하여 메쉬를 지원하는 엔티티에 접근할 수 있습니다. 다음 예제에서는 메쉬 유형에 접근하는 방법을 설명합니다.

DWG 도면을 DXF로 변환하기

Aspose.CAD는 AutoCAD DWG 파일을 로드하고 DXF 형식으로 내보내는 기능을 제공합니다. DWG에서 DXF로의 변환 접근 방식은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메서드를 사용하여 DWG 도면 파일을 로드합니다.
  2. Image.save() 메서드를 사용하여 DWG 도면을 DXF로 내보냅니다.

아래의 코드 샘플은 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는 DWG 형식의 AutoCAD 도면을 로드하고 SVG로 변환할 수 있습니다. 이 주제에서는 DWG를 SVG 형식으로 변환하는 방법을 설명합니다.

  1. Image의 인스턴스에 DWG 파일을 로드합니다.
  2. SvgOptions 클래스의 객체를 생성하고 필요한 속성을 설정합니다.
  3. Image.save() 메서드를 사용하여 DWG 도면을 SVG로 내보냅니다.

아래의 코드 샘플은 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");
}