Visualizador DXF
Se você só precisar visualizar seu DXF, clique aqui.
Este pacote fornece componente DXF 2D Viewer escrito no JavaScript. Ele renderiza desenhos usando o WebGL (via biblioteca três.js). Foi cuidadosamente criado com o desempenho em mente, destinado a desenhar enormes arquivos do mundo real sem problemas de desempenho.
O exemplo de uso está disponível aqui: https://github.com/vagran/dxf-viewer-example-src
Demonstração implantada: https://vagran.github.io/dxf-viewer-example/
Instalar
Características
- A busca de arquivos, análise e preparação para a renderização é separada de tal maneira que possa ser facilmente carregada para o web-worker usando ajudantes fornecidos. Portanto, a parte de processamento mais pesada não afeta a capacidade de resposta da UI. O exemplo acima demonstra essa técnica.
- Batching de geometria - O número mínimo de lotes de renderização é criado durante o processamento de arquivos, minimizando assim o número total necessário de chamadas de desenho.
- Renderização instanciada - Recursos que são renderizados várias vezes com diferentes transformações (por exemplo, instâncias do bloco DXF) são renderizadas por uma única chamada de draw usando o recurso WebGL de renderização instanciada.
- Múltiplas fontes de suporte. A lista de fontes pode ser especificada para renderização de texto. Os arquivos TTF brutos são suportados. As fontes são carregadas preguiçosas, uma vez que um caractere encontrado que o glifo ainda não está disponível por meio de fontes já carregadas, a fonte da próxima é buscada e verificada quanto ao glifo necessário.
- Camadas - as camadas são levadas em consideração ao criar lotes de renderização para que possam ser facilmente ocultos/mostrados.
Recursos incompletos
Ainda existem muitos recursos incompletos. Vou tentar implementar alguns deles quando tiver algum tempo. O motivo mais significativo para a falta de implementação é a falta de arquivos de amostra correspondentes.
- Stream análise do arquivo de entrada. Atualmente, baseando-se principalmente no pacote DXF-Parser, que não é analisador de fluxo e, portanto, buffer inteiro o arquivo antes de analisar. Isso evita suportar o arquivo BIG DXF (acima do gigabyte) devido ao limite de tamanho da corda no mecanismo JS (também produzindo resíduos de memória desnecessários para o buffer).
- Estilo de texto. Atualmente, a renderização de texto está usando apenas as fontes especificadas na ordem especificada. Os atributos do estilo DXF e da fonte são ignorados. Os glifos de texto são sempre renderizados.
- Suporte avançado de formatação para Mtext (fontes, colorir, empilhamento).
- Padrões de linha - Todas as linhas são renderizadas em estilo contínuo por enquanto. Vou usar a textura 1-D gerada no estágio de preparação, coordenadas de textura (que devem explicar o sinalizador de continuidade do padrão nos atributos de vértices DXF) e um shader dedicado para implementar esse recurso.
- Padrões de linha com formas (por exemplo, com círculos).
- Linhas largas. Atualmente, todas as linhas são renderizadas como linhas finas. A largura física não é implementada.
- Linhas de largura variáveis (ou seja, com a largura de início e final especificada).
- Polyline suavizado (vértices de adição de ajuste de curva/spline).
- Alguns recursos na implementação de eclodir: estilo de eclosão externa, preenchimento sólido/gradiente, suporte a mpoligon, linhas duplas, limites definidos por entidades externas.
- Block Instancing em uma grade. Os atributos da grade são ignorados agora.
- Recursos e estilos específicos de dimensões (vários blocos de ponta de seta predefinidos, ajuste de posicionamento de texto, limites e tolerâncias). Tipos de dimensões que não sejam lineares.
- Líderes
- Suporte de codificação de arquivo não UTF-8. Atualmente, esses arquivos são exibidos incorretamente. O parâmetro
$DWGCODEPAGE
é ignorado. - Suporte completo do OCS. Atualmente, supõe -se que a direção da extrusão de entidades seja +Z ou -z (que é comumente usada para os recursos espelhados no CAD). As direções arbitrárias não são processadas adequadamente.
- Espaço de papel, layouts (folhas), viewports.
- Muitos recursos DXF menos comumente usados.

Contribuindo
Consulte as diretrizes de contribuição para obter detalhes sobre como fazer solicitações de puxar (PRs). O projeto também requer vários arquivos de exemplo para fins de teste. Se você encontrar algum problema com a renderização do DXF, seria muito apreciado se você pudesse fornecer um arquivo de exemplo que demonstre o problema anexando -o a um problema criado. Criar exemplos mínimos no software CAD também pode ser muito útil. Além disso, a criação de exemplos em vários softwares CAD proprietários aos quais não tenho acesso seria altamente valioso. Como o nível de entrada para começar a codificar neste projeto é bastante alto, geralmente é mais útil receber um relatório de problema detalhado com arquivos de amostra em vez de uma solicitação de tração.
Licença
Este projeto é licenciado nos termos da licença pública de Mozilla 2.0.
Doações
Quer agradecer ao mantenedor do projeto? Aqui está o link: