Penampil DXF
Jika Anda hanya perlu melihat DXF Anda, klik di sini.
Paket ini menyediakan komponen pemandangan DXF 2D yang ditulis dalam JavaScript. Ini membuat gambar menggunakan WebGL (via Three.js Library). Itu dibuat dengan cermat dengan kinerja dalam pikiran, dimaksudkan untuk menggambar file dunia nyata yang besar tanpa masalah kinerja.
Contoh penggunaan tersedia di sini: https://github.com/vagran/dxf-viewer-example-src
Demo yang Dinyatakan: https://vagran.github.io/dxf-viewer-example/
Memasang
Fitur
- File fetching, parsing dan persiapan untuk rendering dipisahkan sedemikian rupa sehingga dapat dengan mudah dilepas ke pekerja web menggunakan pembantu yang disediakan. Jadi bagian pemrosesan berat yang paling berat tidak mempengaruhi responsif UI. Contoh di atas menunjukkan teknik ini.
- Batching Geometri - Jumlah minimal rendering batch dibuat selama pemrosesan file, sehingga meminimalkan total jumlah panggilan draw yang diperlukan.
- Instanced Rendering - Fitur yang diberikan beberapa kali dengan transformasi yang berbeda (misalnya instance blok DXF) diberikan oleh satu panggilan draw tunggal menggunakan fitur WebGL rendering instance.
- Beberapa dukungan font. Daftar font dapat ditentukan untuk rendering teks. File TTF mentah didukung. Font dimuat dengan malas, begitu karakter yang ditemui mesin terbang belum tersedia melalui font yang sudah dimuat, font berikutnya diambil dan diperiksa untuk mesin terbang yang diperlukan.
- Lapisan - Lapisan diperhitungkan saat membuat batch rendering sehingga mereka dapat dengan mudah disembunyikan/ditampilkan.
Fitur yang tidak lengkap
Masih ada banyak fitur yang tidak lengkap. Saya akan mencoba menerapkan beberapa dari mereka ketika saya punya waktu. Alasan paling signifikan untuk implementasi yang hilang adalah kurangnya file sampel yang sesuai.
- Stream Parsing untuk File Input. Saat ini, sebagian besar mengandalkan paket DXF-Parser yang tidak mengalir parser dan dengan demikian buffer seluruh file sebelum parsing. Ini mencegah dari mendukung file DXF besar (di atas gigabyte) karena batas ukuran string di mesin JS (juga membuat limbah memori yang tidak perlu untuk buffer).
- Gaya teks. Saat ini, rendering teks hanya menggunakan font yang ditentukan dalam urutan yang ditentukan. Atribut gaya dan font DXF diabaikan. Teks mesin terbang selalu terfilled.
- Dukungan pemformatan lanjutan untuk mText (font, pewarnaan, penumpukan).
- Pola Garis - Semua garis diterjemahkan dalam gaya kontinu untuk saat ini. Saya akan menggunakan tekstur 1-D yang dihasilkan pada tahap persiapan, koordinat tekstur (yang harus memperhitungkan flag kontinuitas pola dalam atribut simpul DXF), dan shader khusus untuk mengimplementasikan fitur ini.
- Pola garis dengan bentuk (misalnya dengan lingkaran).
- Garis lebar. Saat ini, semua garis dianggap sebagai garis tipis. Lebar fisik tidak diimplementasikan.
- Garis lebar variabel (yaitu dengan lebar start dan end ditentukan).
- Polyline yang dihaluskan (simpul penambahan kurva-fit/spline-fit).
- Beberapa fitur dalam implementasi penetasan: gaya penetasan luar, pengisi padat/gradien, dukungan mpolygon, garis ganda, batas yang ditentukan oleh entitas eksternal.
- Blokir Instance di jaringan. Atribut kisi diabaikan sekarang.
- Fitur dan gaya khusus dimensi (berbagai blok panah yang telah ditentukan sebelumnya, penyetelan penentuan posisi teks, batas dan toleransi). Jenis dimensi selain yang linier.
- Pemimpin
- Dukungan pengkodean file non-UTF-8. Saat ini, file tersebut ditampilkan secara tidak benar. Parameter
$DWGCODEPAGE
diabaikan. - Dukungan OCS penuh. Saat ini, diasumsikan bahwa arah ekstrusi entitas adalah +z atau -z (yang biasanya digunakan untuk fitur mirroring dalam CAD). Arah sewenang -wenang tidak diproses dengan benar.
- Ruang kertas, tata letak (lembar), viewports.
- Banyak fitur DXF yang kurang umum digunakan.

Berkontribusi
Silakan merujuk ke Pedoman Kontribusi untuk perincian tentang cara membuat permintaan tarik (PR). Proyek ini juga membutuhkan berbagai contoh file untuk tujuan pengujian. Jika Anda menghadapi masalah apa pun dengan rendering DXF, itu akan sangat dihargai jika Anda dapat memberikan contoh file yang menunjukkan masalah dengan melampirkannya ke masalah yang dibuat. Membuat contoh minimal dalam perangkat lunak CAD juga bisa sangat membantu. Selain itu, membuat contoh dalam berbagai perangkat lunak CAD milik yang saya tidak memiliki akses akan sangat berharga. Karena tingkat masuk untuk memulai pengkodean dalam proyek ini cukup tinggi, seringkali lebih berguna untuk menerima laporan masalah terperinci dengan file sampel daripada permintaan tarik.
Lisensi
Proyek ini dilisensikan berdasarkan ketentuan Lisensi Publik Mozilla 2.0.
Sumbangan
Ingin mengucapkan terima kasih kepada pemelihara proyek? Ini tautannya: