Visionneuse DXF
Si vous avez juste besoin de voir votre DXF, cliquez ici.
Ce package fournit un composant de la visionneuse DXF 2D écrite en JavaScript. Il rend les dessins à l'aide de WebGL (via la bibliothèque trois.js). Il a été soigneusement conçu avec les performances à l'esprit, destiné à dessiner d'énormes fichiers du monde réel sans problèmes de performances.
L'exemple d'utilisation est disponible ici: https://github.com/vagran/dxf-viewer-example-src
Demo déployé: https://vagran.github.io/dxf-iewer-example/
Installer
Caractéristiques
- La récupération, l'analyse et la préparation du rendu sont séparés de manière à ce qu'il puisse être facilement déchargé au travailleur Web en utilisant des aides fournies. Ainsi, la partie de traitement la plus lourde n'affecte pas la réactivité de l'interface utilisateur. L'exemple ci-dessus montre cette technique.
- Batching de géométrie - Le nombre minimal de lots de rendu est créé pendant le traitement des fichiers, minimisant ainsi le nombre total d'appels de tirage requis.
- Rendu instancié - Les fonctionnalités qui sont rendues plusieurs fois avec différentes transformations (par exemple, les instances de blocs DXF) sont rendues par un seul appel de dessin en utilisant la fonctionnalité WebGL de rendu instancié.
- Prise en charge des polices multiples. La liste des polices peut être spécifiée pour le rendu de texte. Les fichiers TTF bruts sont pris en charge. Les polices sont chargées de paresseux, une fois qu'un personnage a rencontré quel glyphe n'est pas encore disponible via des polices déjà chargées, la police suivante est récupérée et vérifiée pour le glyphe nécessaire.
- Couches - Les couches sont prises en compte lors de la création de lots de rendu afin qu'ils puissent être facilement cachés / affichés.
Fonctionnalités incomplètes
Il existe encore de nombreuses fonctionnalités incomplètes. J'essaierai de mettre en œuvre certains d'entre eux quand j'aurai du temps. La raison la plus importante de la mise en œuvre manquante est le manque d'échantillons de fichiers correspondants.
- Stream Analyse pour le fichier d'entrée. Actuellement, en s'appuyant principalement sur le package DXF-Parser qui n'est pas l'analyseur de flux et tamponne donc entier le fichier avant l'analyse. Cela empêche de prendre en charge le grand fichier DXF (au-dessus des gigaoctets) en raison de la limite de taille des chaînes dans le moteur JS (ce qui fait également des déchets de mémoire inutiles pour le tampon).
- Style de texte. Actuellement, le rendu de texte utilise uniquement les polices spécifiées dans l'ordre spécifié. Le style DXF et les attributs de police sont ignorés. Les glyphes de texte sont toujours rendus remplis.
- Prise en charge avancée de la mise en forme pour mText (polices, coloration, empilement).
- Modèles de ligne - Toutes les lignes sont rendues en style continu pour l'instant. Je vais utiliser la texture 1-D générée sur l'étape de préparation, les coordonnées de texture (qui devraient rendre compte de l'indicateur de continuité du modèle dans les attributs de sommets DXF) et un shader dédié pour implémenter cette fonctionnalité.
- Modèles de ligne avec des formes (par exemple avec des cercles).
- Lignes larges. Actuellement, toutes les lignes sont rendues sous forme de lignes minces. La largeur physique n'est pas mise en œuvre.
- Lignes de largeur variable (c'est-à-dire avec la largeur de démarrage et d'extrémité spécifiée).
- Polyline lissée (sommets en ajout de courbe / spline-ajustement).
- Certaines fonctionnalités de la mise en œuvre d'éclosion: style d'éclosion externe, remplissage solide / gradient, support de mpolygon, lignes doubles, limites définies par des entités externes.
- Bloquer l'instanciation dans une grille. Les attributs de la grille sont ignorés maintenant.
- Caractéristiques et styles spécifiques aux dimensions (divers blocs de pointe de flèche prédéfinis, réglage du positionnement du texte, limites et tolérances). Types de dimensions autres que les linéaires.
- Dirigeants
- Support de codage de fichiers non UTF-8. Actuellement, ces fichiers s'affichent incorrectement.
$DWGCODEPAGE
Le paramètre est ignoré. - Support complet OCS. Actuellement, il est supposé que la direction d'extrusion d'entité est soit + Z ou -Z (qui est couramment utilisée pour les caractéristiques reflétant en CAO). Les directions arbitraires ne sont pas correctement traitées.
- Espace papier, dispositions (feuilles), fenêtres.
- Beaucoup de fonctionnalités DXF moins couramment utilisées.

Contributif
Veuillez vous référer aux directives de contribution pour plus de détails sur la façon de faire des demandes de traction (PRS). Le projet nécessite également divers exemples de fichiers à des fins de test. Si vous rencontrez des problèmes avec le rendu de DXF, il serait grandement apprécié si vous pouviez fournir un exemple de fichier qui démontre le problème en l'attachant à un problème créé. La création d'exemples minimaux dans les logiciels CAO peut également être très utile. De plus, créer des exemples dans divers logiciels de CAO propriétaires auxquels je n'en ai pas accès serait très précieux. Étant donné que le niveau d'entrée pour commencer le codage dans ce projet est assez élevé, il est souvent plus utile de recevoir un rapport de problème détaillé avec des exemples de fichiers plutôt qu'une demande de traction.
Licence
Ce projet est concédé sous licence de la Licence publique de Mozilla 2.0.
Dons
Vous voulez dire grâce au responsable du projet? Voici le lien: