DXF 도면
DXF 도면을 PDF로 내보내기
Aspose.CAD는 AutoCAD DXF 도면 엔티티를 로드하고 이를 전체 도면으로 PDF 형식으로 렌더링하는 기능을 제공합니다. DXF에서 PDF로 변환하는 방법은 다음과 같습니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
- CadRasterizationOptions 클래스의 객체를 만들고 PageHeight 및 PageWidth 속성을 설정합니다.
- PdfOptions 클래스의 객체를 만들고 VectorRasterizationOptions 속성을 설정합니다.
- 두 번째 매개변수로 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 엔티티와 그 기본 기본 매개변수를 다음과 같이 지원합니다:
- 정렬 치수
- 각도 치수
- 호
- 속성
- 블록 참조
- 원
- 지름 치수
- 타원
- 해칭
- 선
- 다중선 텍스트
- 좌표 치수
- 점
- 다각선
- 반지름 치수
- 광선
- 회전 치수
- 테이블
- 텍스트
- X선
메모리 관리
속성 ExactReallocateOnly는 메모리 재할당을 제어하는 데 사용할 수 있습니다. 재할당은 미리 할당된 캐시에 대해 가장 많이 발생합니다. 시스템이 할당된 공간이 충분하지 않을 것이라고 판단할 때 발생할 수 있습니다.
- ExactReallocateOnly가 기본값인 False로 설정된 경우, 공간은 동일한 매체로 재할당됩니다.
- True로 설정된 경우, 재할당은 지정된 최대 공간을 초과할 수 없습니다. 이 경우, 기존의 메모리 캐시(재할당이 필요한)는 해제되고 디스크에 확장된 공간이 할당됩니다.
특정 DXF 도면의 레이어를 PDF로 내보내기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
- CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
- CadRasterizationOptions 객체에 레이어를 추가합니다.
- PdfOptions 의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
- 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 도면의 레이어를 이미지로 내보내기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
- CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
- CadRasterizationOptions 객체에 레이어를 추가합니다.
- JpegOptions 의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
- 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 파일 렌더링하기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
- CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
- PageHeight 및 PageWidth 속성을 설정합니다.
- 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로 내보내기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
- CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
- PageHeight 및 PageWidth 속성을 설정합니다.
- 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로 내보내기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
- CadRasterizationOptions 의 인스턴스를 만들고 PageWidth 및 PageHeight 속성을 지정합니다.
- 원하는 레이아웃 이름을 CadRasterizationOptions.Layouts 속성을 사용하여 지정합니다.
- PdfOptions의 인스턴스를 만들고 그 VectorRasterizationOptions 속성을 설정합니다.
- 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 개체 접근하기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
- CAD 파일 내의 엔티티에 접근합니다.
- CadEntityTypeName.MTEXT 및 CadEntityTypeName.INSERT 엔티티를 확인합니다.
- 추가 처리를 위해 임시 목록으로 추가합니다.
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 삽입 개체 분해하기
이 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 엽니다.
- CAD 파일 내의 엔티티에 접근합니다.
- CadEntityTypeName.INSERT 엔티티를 확인합니다.
- CadBlockEntity 유형 목록을 확인합니다.
- 엔티티를 처리합니다.
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는 블록 클리핑 기능을 제공합니다. 블록 클리핑 방법은 다음과 같이 작동합니다:
- Image.load 팩토리 메소드를 사용하여 DXF 도면 파일을 로드합니다.
- CadRasterizationOptions 클래스의 객체를 만들고 PDF 파일을 로드합니다.
- CadRasterizationOptions 의 원하는 속성을 설정합니다.
- 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 형식으로 내보낼 수 있습니다. 이 방법을 사용하여 다음 작업을 수행할 수 있습니다:
- 새 글꼴 설정
- 엔티티 숨기기
- 텍스트 업데이트
다음 코드 스니펫은 나열된 작업을 수행하는 방법을 보여줍니다.
// 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; | |
} |