Desenhos DXF
Exportando Desenhos DXF para PDF
Aspose.CAD oferece o recurso de carregar entidades de desenhos DXF do AutoCAD e renderizá-las como um desenho completo no formato PDF. O método de conversão de DXF para PDF funciona da seguinte maneira:
- Carregue o arquivo de desenho DXF usando o método de fabrica Image.load.
- Crie um objeto da classe CadRasterizationOptions e defina as propriedades PageHeight e PageWidth.
- Crie um objeto da classe PdfOptions e defina a propriedade VectorRasterizationOptions.
- Chame Image.Save passando um objeto de PdfOptions como segundo parâmetro.
O exemplo de código abaixo mostra como converter um arquivo usando configurações padrão.
// 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); |
Formatos Suportados
No momento, suportamos totalmente os formatos de arquivo DXF 2010 do AutoCAD. As versões DXF anteriores não são garantidas para serem 100% válidas. Estamos planejando incluir mais formatos e recursos nas futuras versões do Aspose.CAD.
Entidades Suportadas
No momento, suportamos todas as entidades 2D amplamente utilizadas e seus parâmetros básicos padrão, conforme segue:
- Dimensão Alinhada
- Dimensão Angular
- Arco
- Atributo
- Referência de Bloco
- Círculo
- Dimensão de Diâmetro
- Elipse
- Hachura
- Linha
- Texto Multilinha
- Dimensão Ordinada
- Ponto
- Polilinha
- Dimensão Radial
- Raio
- Dimensão Rotacionada
- Tabela
- Texto
- Xline
Gerenciamento de Memória
A propriedade ExactReallocateOnly pode ser usada para controlar a realocação de memória. A realocação é mais provável de ocorrer para caches pré-alocados. Isso pode acontecer quando o sistema descobre que o espaço alocado não será suficiente.
- Se ExactReallocateOnly estiver definido como o valor padrão, False, o espaço é realocado para o mesmo meio.
- Quando definido como True, a realocação não pode exceder o espaço máximo especificado. Nesse caso, o cache existente alocado na memória (que requer realocação) é liberado e um espaço estendido é alocado no disco.
Exportando Camada Específica de Desenhos DXF para PDF
Este método funciona da seguinte maneira:
- Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
- Adicione camadas ao objeto de CadRasterizationOptions.
- Crie uma instância de PdfOptions e defina sua propriedade VectorRasterizationOptions.
- Exporte o desenho para PDF usando o método Image.save.
O exemplo de código abaixo mostra como converter uma camada específica de DXF para 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); |
Exportando Camada Específica de Desenhos DXF para Imagem
Este método funciona da seguinte maneira:
- Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
- Adicione camadas ao objeto de CadRasterizationOptions.
- Crie uma instância de JpegOptions e defina sua propriedade VectorRasterizationOptions.
- Exporte o desenho para PDF usando o método Image.save.
O exemplo de código abaixo mostra como converter uma camada específica de DXF para Imagem.
// 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); | |
Renderizar arquivos PDF como parte de desenhos DXF
Este método funciona da seguinte maneira:
- Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
- defina as propriedades PageHeight e PageWidth.
- Chame Image.save e salve o arquivo.
O exemplo de código abaixo mostra como renderizar arquivos PDF como parte de desenhos DXF.
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); |
Exportar DXF para WMF
Este método funciona da seguinte maneira:
- Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
- defina as propriedades PageHeight e PageWidth.
- Chame Image.save e salve o arquivo.
O exemplo de código abaixo mostra como exportar DXF para 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"); | |
} |
Suporte para Salvar Arquivos DXF
Aspose.CAD oferece o recurso de carregar arquivos DXF do AutoCAD, fazer alterações e salvá-los novamente como um arquivo DXF. O exemplo de código abaixo mostra como atender a requisitos especificados.
String dataDir = Utils.getDataDir(SaveDXFFiles.class) + "CADConversion/"; | |
String srcFile = dataDir + "conic_pyramid.dxf"; | |
CadImage cadImage = (CadImage)Image.load(srcFile); | |
cadImage.save(dataDir+"conic.dxf"); | |
Exportar DGN incorporado como sub-rede para o formato DXF
Aspose.CAD fornece o recurso de carregar arquivos DXF do AutoCAD e exportar DGN incorporado como sub-rede para o formato DXF.
O exemplo de código abaixo mostra como atender a requisitos especificados.
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); | |
} |
Exportando Layout DXF Específico para PDF
Este método funciona da seguinte maneira:
- Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
- Especifique o(s) nome(s) do layout desejado usando a propriedade CadRasterizationOptions.Layouts.
- Crie uma instância da classe PdfOptions e defina sua propriedade VectorRasterizationOptions.
- Exporte o desenho para PDF usando o método Image.save.
O exemplo de código abaixo mostra como converter um layout específico de DXF para 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); |
Acessar objetos ATTRIB e MTEXT
Este método funciona da seguinte maneira:
- Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
- Acesse as entidades dentro do arquivo CAD.
- Verifique as entidades CadEntityTypeName.MTEXT e CadEntityTypeName.INSERT.
- Adicione a uma lista temporária para processamento posterior.
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(); | |
} | |
Decompor Objetos de Inserção CAD
Este método funciona da seguinte maneira:
- Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
- Acesse as entidades dentro do arquivo CAD.
- Verifique as entidades CadEntityTypeName.INSERT.
- verifique a lista de tipos de CadBlockEntity.
- Processar as entidades.
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(); | |
} |
Suporte ao Recorte de Blocos
Aspose.CAD fornece o recurso de Recorte de Blocos. O método de Recorte de Blocos funciona da seguinte maneira:
- Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
- Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
- Defina as propriedades desejadas de CadRasterizationOptions.
- Chame Image.save passando um objeto de PdfOptions como segundo parâmetro e salve o arquivo.
O exemplo de código abaixo mostra como funciona o Recorte de Blocos.
// 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); | |
Exportar Imagens para DXF
Usando Aspose.CAD, você pode exportar imagens para o formato DXF. Usando este método, você pode realizar as seguintes ações:
- Definir nova fonte.
- Ocultar entidades.
- Atualizar texto.
O seguinte trecho de código mostra como realizar as ações listadas acima.
// 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; | |
} |