DXF 도면

DXF 도면을 PDF로 내보내기

Aspose.CAD는 AutoCAD DXF 도면 엔티티를 로드하고 이를 전체 도면으로 PDF 형식으로 렌더링하는 기능을 제공합니다. DXF에서 PDF로 변환하는 방법은 다음과 같습니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 만들고 PageHeight 및 PageWidth 속성을 설정합니다.
  3. PdfOptions 클래스의 객체를 만들고 VectorRasterizationOptions 속성을 설정합니다.
  4. 두 번째 매개변수로 PdfOptions 객체를 전달하면서 Image.Save를 호출합니다.

아래의 코드 샘플은 기본 설정을 사용하여 파일을 변환하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(ExportDXFDrawingToPDF.class) + "DXFDrawings/";
String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setBackgroundColor(Color.getWhite());
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf", pdfOptions);

지원되는 형식

현재 우리는 AutoCAD DXF 2010 파일 형식을 완전히 지원합니다. 이전 DXF 버전은 100% 유효성을 보장하지 않습니다. 향후 Aspose.CAD 버전에서 더 많은 형식과 기능을 포함할 계획입니다.

지원되는 엔티티

현재 우리는 모든 널리 퍼진 2D 엔티티와 그 기본 기본 매개변수를 다음과 같이 지원합니다:

  1. 정렬 치수
  2. 각도 치수
  3. 속성
  4. 블록 참조
  5. 지름 치수
  6. 타원
  7. 해칭
  8. 다중선 텍스트
  9. 좌표 치수
  10. 다각선
  11. 반지름 치수
  12. 광선
  13. 회전 치수
  14. 테이블
  15. 텍스트
  16. X선

메모리 관리

속성 ExactReallocateOnly는 메모리 재할당을 제어하는 데 사용할 수 있습니다. 재할당은 미리 할당된 캐시에 대해 가장 많이 발생합니다. 시스템이 할당된 공간이 충분하지 않을 것이라고 판단할 때 발생할 수 있습니다.

  • ExactReallocateOnly가 기본값인 False로 설정된 경우, 공간은 동일한 매체로 재할당됩니다.
  • True로 설정된 경우, 재할당은 지정된 최대 공간을 초과할 수 없습니다. 이 경우, 기존의 메모리 캐시(재할당이 필요한)는 해제되고 디스크에 확장된 공간이 할당됩니다.

특정 DXF 도면의 레이어를 PDF로 내보내기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
  2. CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
  3. CadRasterizationOptions 객체에 레이어를 추가합니다.
  4. PdfOptions 의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save 메소드를 사용하여 도면을 PDF로 내보냅니다.

아래의 코드 샘플은 DXF의 특정 레이어를 PDF로 변환하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(ExportSpecificLayerOfDXFDrawingToPDF.class) + "DXFDrawings/";
String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Add desired layers
rasterizationOptions.getLayers().add("0");
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_layer_out_.pdf", pdfOptions);

특정 DXF 도면의 레이어를 이미지로 내보내기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
  2. CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
  3. CadRasterizationOptions 객체에 레이어를 추가합니다.
  4. JpegOptions 의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save 메소드를 사용하여 도면을 PDF로 내보냅니다.

아래의 코드 샘플은 DXF의 특정 레이어를 이미지로 변환하는 방법을 보여줍니다.

// The path to the resource directory.
String dataDir = Utils.getDataDir(ExportSpecificDXFLayoutToPDF.class) + "DXFDrawings\\";
String srcFile = dataDir + "for_layers_test.dwf";
DwfImage image =(DwfImage)Image.load(srcFile);
List<String> layersNames=image.getLayers().getLayersNames();
DwfWhipLayer layer = image.getLayers().getLayerByName("0");
for (DwfWhipLayer lr : image.getLayers())
{
//...
}
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
String[] stringArray = Arrays.copyOf(layersNames.toArray(), layersNames.toArray().length, String[].class);
List<String> stringList = Arrays.asList(stringArray);
// Add desired layers
rasterizationOptions.setLayers(stringList);
JpegOptions jpegOptions = new JpegOptions();
jpegOptions.setVectorRasterizationOptions(rasterizationOptions);
String output = dataDir+"for_layers_test.jpg";
// Export the DXF to Image
image.save(output, jpegOptions);

DXF 도면의 일부로 PDF 파일 렌더링하기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
  3. PageHeight 및 PageWidth 속성을 설정합니다.
  4. Image.save를 호출하여 파일을 저장합니다.

아래의 코드 샘플은 DXF 도면의 일부로 PDF 파일을 렌더링하는 방법을 보여줍니다.

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setBackgroundColor(Color.getWhite());
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf", pdfOptions);

DXF를 WMF로 내보내기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
  3. PageHeight 및 PageWidth 속성을 설정합니다.
  4. Image.save를 호출하여 파일을 저장합니다.

아래의 코드 샘플은 DXF를 WMF로 내보내는 방법을 보여줍니다.

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
IfcImage cadImage = (IfcImage)Image.load((dataDir +"example.ifc"));
try
{
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(100);
rasterizationOptions.setPageHeight(100);
WmfOptions wmfOptions = new WmfOptions();
cadImage.save(dataDir+" example.ifc.wmf", wmfOptions);
}
}
finally
{
cadImage.dispose();
}
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_out_.pdf");
}

DXF 파일 저장 지원

Aspose.CAD는 AutoCAD DXF 파일을 로드하고 이를 수정한 후 다시 DXF 파일로 저장하는 기능을 제공합니다. 아래의 코드 샘플은 지정된 요구 사항을 충족하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(SaveDXFFiles.class) + "CADConversion/";
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage = (CadImage)Image.load(srcFile);
cadImage.save(dataDir+"conic.dxf");

DXF 형식의 임베디드 DGN 언더레이 내보내기

Aspose.CAD는 AutoCAD DXF 파일을 로드하고 DXF 형식의 임베디드 DGN 언더레이를 내보내는 기능을 제공합니다.

아래의 코드 샘플은 지정된 요구 사항을 충족하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(ExportEmbeddedDGN.class) + "ExportingDGN/";
String fileName = dataDir + "BlockRefDgn.dwg";
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(fileName);
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setLayouts(new String[] {"Model"});
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
objImage.save(dataDir + "BlockRefDgn.pdf", pdfOptions);
}

특정 DXF 레이아웃을 PDF로 내보내기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
  2. CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
  3. 원하는 레이아웃 이름을 CadRasterizationOptions.Layouts 속성을 사용하여 지정합니다.
  4. PdfOptions의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
  5. Image.save 메소드를 사용하여 도면을 PDF로 내보냅니다.

아래의 코드 샘플은 DXF의 특정 레이아웃을 PDF로 변환하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(ExportSpecificDXFLayoutToPDF.class) + "DXFDrawings/";
String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Specify desired layout name
rasterizationOptions.setLayouts(new String[] {"Model"});
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the DXF to PDF
image.save(dataDir + "conic_pyramid_layout_out_.pdf", pdfOptions);

ATTRIB 및 MTEXT 개체 접근하기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
  2. CAD 파일 내의 엔티티에 접근합니다.
  3. CadEntityTypeName.MTEXT 및 CadEntityTypeName.INSERT 엔티티를 확인합니다.
  4. 추가 처리를 위해 임시 목록으로 추가합니다.
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage =(CadImage) Image.load(srcFile);
List<CadBaseEntity> mtextList = new ArrayList<CadBaseEntity>();
List<CadBaseEntity> attribList = new ArrayList<CadBaseEntity>();
try
{
for (CadBaseEntity entity : cadImage.getEntities())
{
if (entity.getTypeName() == CadEntityTypeName.MTEXT)
{
mtextList.add(entity);
}
if (entity.getTypeName() == CadEntityTypeName.INSERT)
{
for (CadBaseEntity childObject : entity.getChildObjects())
{
if (childObject.getTypeName() == CadEntityTypeName.ATTRIB)
{
attribList.add(childObject);
}
}
}
}
System.out.println("MText Size: "+ mtextList.size());
System.out.println("Attribute Size: "+ attribList.size());
}
finally
{
cadImage.dispose();
}

CAD 삽입 개체 분해하기

이 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
  2. CAD 파일 내의 엔티티에 접근합니다.
  3. CadEntityTypeName.INSERT 엔티티를 확인합니다.
  4. CadBlockEntity 유형 목록을 확인합니다.
  5. 엔티티를 처리합니다.
String srcFile = dataDir + "conic_pyramid.dxf";
CadImage cadImage =(CadImage) Image.load(srcFile);
try
{
for (int i=0; i<cadImage.getEntities().length;i++)
{
if (cadImage.getEntities()[i].getTypeName() == CadEntityTypeName.INSERT)
{
CadBlockEntity block =
(CadBlockEntity)cadImage.getBlockEntities().get_Item(((CadInsertObject)cadImage.getEntities()[i]).getName());
for (CadBaseEntity blockChild : block.getEntities())
{
// process entities
}
}
}
}
finally
{
cadImage.dispose();
}

블록 클리핑 지원

Aspose.CAD는 블록 클리핑 기능을 제공합니다. 블록 클리핑 방법은 다음과 같이 작동합니다:

  1. Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
  2. CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
  3. CadRasterizationOptions 의 원하는 속성을 설정합니다.
  4. Image.save를 호출하면서 PdfOptions 객체를 두 번째 매개변수로 전달하여 파일을 저장합니다.

아래의 코드 샘플은 블록 클리핑의 작동 방식을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(RenderDXFAsPDF.class) + "DXFDrawings/";
String inputFile = dataDir + "SLS-CW-CD-CE001-R01_blockClip.dxf";
String outputFile = dataDir + "SLS-CW-CD-CE001-R01_blockClip.pdf";
CadImage cadImage = (CadImage)Image.load(inputFile);
Margins margins = new Margins();
margins.setTop(5);
margins.setRight(30);
margins.setBottom(5);
margins.setLeft(30);
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setBackgroundColor(Color.getWhite());
rasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setMargins(margins);
rasterizationOptions.setLayouts( new String[] { "Model" } );
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
cadImage.save(outputFile, pdfOptions);

이미지를 DXF로 내보내기

Aspose.CAD를 사용하여 이미지 를 DXF 형식으로 내보낼 수 있습니다. 이 방법을 사용하여 다음 작업을 수행할 수 있습니다:

  1. 새 글꼴 설정
  2. 엔티티 숨기기
  3. 텍스트 업데이트

다음 코드 스니펫은 나열된 작업을 수행하는 방법을 보여줍니다.

// The path to the resource directory.
String dataDir = Utils.getDataDir(RenderDXFAsPDF.class) + "DXFDrawings/";
File[] files = new File(dataDir).listFiles();
for (File file : files) {
String extension = GetFileExtension(file);
if(extension == ".dxf"){
// ****************************
// Set new font per document
// ****************************
CadImage cadImage = (CadImage)Image.load(file.getName());
for (Object style : cadImage.getStyles()) {
// Set font name
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName("Broadway");
}
cadImage.save(file.getName() + "_font.dxf");
// ****************************
// Hide all "straight" lines
// ****************************
CadImage cadImageEntity = (CadImage)Image.load(file.getName());
for (CadBaseEntity entity : cadImageEntity.getEntities()) {
// Make lines invisible
if ((entity.getTypeName() == CadEntityTypeName.LINE)) {
entity.setVisible((short)0);
}
}
cadImageEntity.save(file.getName() + "_lines.dxf");
// ****************************
// Manipulations with text
// ****************************
CadImage cadImageText = (CadImage)Image.load(file.getName());
for (CadBaseEntity entity : cadImageText.getEntities()) {
// Make lines invisible
if ((entity.getTypeName() == CadEntityTypeName.TEXT)) {
((CadText)entity).setDefaultValue("New text here!!! :)");
break;
}
}
cadImageText.save(file.getName() + "_text.dxf");
}//If extension = .dxf
}
private static String GetFileExtension(File file) {
String extension = "";
try {
if (file != null && file.exists()) {
String name = file.getName();
extension = name.substring(name.lastIndexOf("."));
}
} catch (Exception e) {
extension = "";
}
return extension;
}