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:

  1. Carregue o arquivo de desenho DXF usando o método de fabrica Image.load.
  2. Crie um objeto da classe CadRasterizationOptions e defina as propriedades PageHeight e PageWidth.
  3. Crie um objeto da classe PdfOptions e defina a propriedade VectorRasterizationOptions.
  4. 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:

  1. Dimensão Alinhada
  2. Dimensão Angular
  3. Arco
  4. Atributo
  5. Referência de Bloco
  6. Círculo
  7. Dimensão de Diâmetro
  8. Elipse
  9. Hachura
  10. Linha
  11. Texto Multilinha
  12. Dimensão Ordinada
  13. Ponto
  14. Polilinha
  15. Dimensão Radial
  16. Raio
  17. Dimensão Rotacionada
  18. Tabela
  19. Texto
  20. 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:

  1. Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
  3. Adicione camadas ao objeto de CadRasterizationOptions.
  4. Crie uma instância de PdfOptions e defina sua propriedade VectorRasterizationOptions.
  5. 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:

  1. Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
  3. Adicione camadas ao objeto de CadRasterizationOptions.
  4. Crie uma instância de JpegOptions e defina sua propriedade VectorRasterizationOptions.
  5. 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:

  1. Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
  3. defina as propriedades PageHeight e PageWidth.
  4. 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:

  1. Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
  3. defina as propriedades PageHeight e PageWidth.
  4. 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:

  1. Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie uma instância da classe CadRasterizationOptions e especifique as propriedades PageWidth e PageHeight.
  3. Especifique o(s) nome(s) do layout desejado usando a propriedade CadRasterizationOptions.Layouts.
  4. Crie uma instância da classe PdfOptions e defina sua propriedade VectorRasterizationOptions.
  5. 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:

  1. Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Acesse as entidades dentro do arquivo CAD.
  3. Verifique as entidades CadEntityTypeName.MTEXT e CadEntityTypeName.INSERT.
  4. 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:

  1. Abra um arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Acesse as entidades dentro do arquivo CAD.
  3. Verifique as entidades CadEntityTypeName.INSERT.
  4. verifique a lista de tipos de CadBlockEntity.
  5. 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:

  1. Carregue o arquivo de desenho DXF usando o método de fábrica Image.load.
  2. Crie um objeto da classe CadRasterizationOptions e carregue arquivos PDF.
  3. Defina as propriedades desejadas de CadRasterizationOptions.
  4. 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:

  1. Definir nova fonte.
  2. Ocultar entidades.
  3. 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;
}