DXF Viewer
Wenn Sie nur Ihr DXF anzeigen müssen, klicken Sie hier.
Dieses Paket enthält DXF 2D Viewer -Komponente, die in JavaScript geschrieben wurden. Es rendert die Zeichnungen mit WebGL (über die Three.js -Bibliothek). Es wurde sorgfältig mit der Leistung gefertigt, die zum Zeichnen großer realer Dateien ohne Leistungsprobleme vorgesehen war.
Das Nutzungsbeispiel ist hier verfügbar: https://github.com/vagran/dxf-viewer-example-src
Bereitete Demo: https://vagran.github.io/dxf-viewer-example/
Installieren
Merkmale
- Das Abholen, Parsen und Vorbereitung auf das Rendern von Dateien wird so getrennt, dass sie mit bereitgestellten Helfern leicht an Web-Arbeiter geladen werden können. Daher wirkt sich der schwerste Verarbeitungsteil nicht auf die Reaktionsfähigkeit der Benutzeroberfläche aus. Das obige Beispiel zeigt diese Technik.
- Geometrie -Batching - Während der Dateiverarbeitung wird eine minimale Anzahl von Rendering -Stapeln erstellt, wodurch die erforderliche Anzahl von Ziehensanrufen minimiert wird.
- Instanzes Rendering - Funktionen, die mehrmals mit unterschiedlichen Transformationen (z. B. DXF -Blockinstanzen) gerendert werden, werden durch einen einzelnen Zeichnungsaufruf mit einer instanzialen Rendering -WebGL -Funktion gerendert.
- Mehrere Schriftarten unterstützen. Die Liste der Schriftarten kann für die Textrevision angegeben werden. RAW TTF -Dateien werden unterstützt. Schriftarten sind faul beladen, sobald ein Zeichen aufgetaucht ist, an dem Glyphe noch nicht über bereits geladene Schriftarten erhältlich ist, wird die nächste Schriftart abgerufen und auf den erforderlichen Glyphen geprüft.
- Ebenen - Schichten werden beim Erstellen von Rendering -Stapeln berücksichtigt, damit sie leicht versteckt/gezeigt werden können.
Unvollständige Merkmale
Es gibt immer noch viele unvollständige Funktionen. Ich werde versuchen, einige von ihnen zu implementieren, wenn ich etwas Zeit habe. Der wichtigste Grund für die fehlende Implementierung ist das Fehlen entsprechender Beispieldateien.
- Stream Parsing für die Eingabedatei. Derzeit stützt sich hauptsächlich auf das DXF-Parser-Paket, das nicht mit Parser stream ist, und puffert somit vor der Parsen die gesamte Datei. Dies verhindert, dass die Big DXF -Datei (über Gigabyte) aufgrund der Saitengrößengrenze in JS Engine (auch unnötige Speicherabfälle für den Puffer) unterstützt wird.
- Textstyling. Derzeit verwendet das Textrendern nur die angegebenen Schriftarten in der angegebenen Reihenfolge. DXF -Stil und Schriftattribute werden ignoriert. Textglyphen werden immer erfüllt.
- Erweiterte Formatierungsunterstützung für mText (Schriftarten, Färben, Stapeln).
- Zeilenmuster - Alle Linien werden vorerst im kontinuierlichen Stil gerendert. Ich werde eine 1-D-Textur verwenden, die in der Vorbereitungsstufe erzeugt wird, Texturkoordinaten (das das Muster-Kontinuitäts-Flag in DXF-Scheitelpunkten berücksichtigen sollte) und ein dedizierter Shader, um diese Funktion zu implementieren.
- Linienmuster mit Formen (z. B. mit Kreisen).
- Breite Linien. Derzeit werden alle Linien als dünne Linien gerendert. Die physische Breite wird nicht implementiert.
- Variable Breite (dh mit angegebener Start- und Endbreite).
- Geglättete Polylinie (Curve-Fit/Spline-Fit-Additionsscheitelpunkte).
- Einige Merkmale bei der Implementierung von Schlucken: Äußerer Schlupfstil, fester/Gradientenfill, mpolygon -Unterstützung, Doppellinien, Grenzen, die von externen Entitäten definiert sind.
- Blockinstanz in einem Raster. Netzattribute werden jetzt ignoriert.
- Dimensionsspezifische Merkmale und Stile (verschiedene vordefinierte Pfeilspitzenblöcke, Textpositionierungsabstimmung, Grenzen und Toleranzen). Dimensionstypen andere als lineare.
- Führer
- Nicht-UTF-8-Dateicodierungsunterstützung. Derzeit werden solche Dateien falsch angezeigt.
$DWGCODEPAGE
-Parameter wird ignoriert. - Vollständige OCS -Unterstützung. Derzeit wird angenommen, dass die Entität -Extrusions -Richtung entweder +z oder -z ist (was üblicherweise für Merkmale verwendet wird, die in CAD spiegeln). Willkürliche Anweisungen werden nicht ordnungsgemäß verarbeitet.
- Papierraum, Layouts (Blätter), Ansichtsfenster.
- Viele weniger häufig verwendete DXF -Funktionen.

Beitragen
In den Beitragsrichtlinien finden Sie Informationen zur Erstellung von Pull -Anfragen (PRS). Das Projekt erfordert auch verschiedene Beispieldateien zu Testzwecken. Wenn Sie auf Probleme mit dem DXF -Rendering stoßen, wäre dies sehr geschätzt, wenn Sie eine Beispieldatei bereitstellen könnten, die das Problem demonstriert, indem Sie es an ein erstellter Problem anhängen. Das Erstellen minimaler Beispiele in CAD -Software kann ebenfalls sehr hilfreich sein. Darüber hinaus wäre das Erstellen von Beispielen in verschiedenen proprietären CAD -Software, auf die ich keinen Zugriff habe, sehr wertvoll. Da die Eingangsniveau für die Codierung in diesem Projekt ziemlich hoch ist, ist es oft nützlicher, einen detaillierten Ausgabebericht mit Beispieldateien als mit einer Pull -Anfrage zu erhalten.
Lizenz
Dieses Projekt ist gemäß den Bestimmungen der Mozilla Public Lizenz 2.0 lizenziert.
Spenden
Möchten Sie sich dem Projektbetrieb bedanken? Hier ist der Link: