DXF Viewer
หากคุณต้องการดู DXF ของคุณคลิกที่นี่
แพ็คเกจนี้มีส่วนประกอบดู DXF 2D Viewer ที่เขียนใน JavaScript มันแสดงผลภาพวาดโดยใช้ WebGL (ผ่านสามไลบรารี JS) มันถูกสร้างขึ้นอย่างรอบคอบโดยคำนึงถึงประสิทธิภาพในใจโดยมีวัตถุประสงค์เพื่อวาดไฟล์ในโลกแห่งความจริงขนาดใหญ่โดยไม่มีปัญหาด้านประสิทธิภาพ
ตัวอย่างการใช้งานมีอยู่ที่นี่: https://github.com/vagran/dxf-viewer-example-src
การสาธิตที่ปรับใช้: https://vagran.github.io/dxf-viewer-example/
ติดตั้ง
คุณสมบัติ
- การดึงไฟล์การแยกวิเคราะห์และการเตรียมการสำหรับการเรนเดอร์จะถูกแยกออกจากกันในลักษณะที่สามารถปิดการโหลดไปยังเว็บ-คนงานได้อย่างง่ายดายโดยใช้ผู้ช่วยที่ให้ไว้ ดังนั้นส่วนการประมวลผลที่มีน้ำหนักมากที่สุดจะไม่ส่งผลกระทบต่อการตอบสนองของ UI ตัวอย่างข้างต้นแสดงให้เห็นถึงเทคนิคนี้
- การแบตช์เรขาคณิต - จำนวนน้อยที่สุดของแบทช์การเรนเดอร์ถูกสร้างขึ้นระหว่างการประมวลผลไฟล์ซึ่งจะช่วยลดจำนวนการเรียกใช้การดึงที่ต้องการทั้งหมด
- การเรนเดอร์แบบ Instanced - คุณสมบัติที่แสดงผลหลายครั้งด้วยการแปลงที่แตกต่างกัน (เช่นอินสแตนซ์บล็อก DXF) จะแสดงผลโดยการเรียกใช้การดึงครั้งเดียวโดยใช้คุณสมบัติการเรนเดอร์ WebGL
- การสนับสนุนแบบอักษรหลายแบบ สามารถระบุรายการแบบอักษรสำหรับการแสดงข้อความ รองรับไฟล์ TTF ดิบ แบบอักษรนั้นขี้เกียจเมื่อพบตัวละครซึ่งยังไม่สามารถใช้ Glyph ได้ผ่านฟอนต์ที่โหลดแล้วฟอนต์ถัดไปจะถูกดึงและตรวจสอบสำหรับ Glyph ที่จำเป็น
- เลเยอร์ - เลเยอร์ถูกนำมาพิจารณาเมื่อสร้างแบทช์เรนเดอร์เพื่อให้สามารถซ่อน/แสดงได้อย่างง่ายดาย
คุณสมบัติที่ไม่สมบูรณ์
ยังมีคุณสมบัติที่ไม่สมบูรณ์มากมาย ฉันจะพยายามใช้บางส่วนเมื่อฉันมีเวลา เหตุผลที่สำคัญที่สุดสำหรับการใช้งานที่ขาดหายไปคือการขาดไฟล์ตัวอย่างที่เกี่ยวข้อง
- สตรีมการแยกวิเคราะห์สำหรับไฟล์อินพุต ปัจจุบันส่วนใหญ่อาศัยแพ็คเกจ DXF-Parser ซึ่งไม่ได้เป็นตัวแยกวิเคราะห์และทำให้บัฟเฟอร์ไฟล์ทั้งหมดก่อนที่จะแยกวิเคราะห์ สิ่งนี้ป้องกันไม่ให้รองรับไฟล์ DXF ขนาดใหญ่ (เหนือกิกะไบต์) เนื่องจากขีด จำกัด ขนาดสตริงในเครื่องยนต์ JS (ยังทำให้หน่วยความจำที่ไม่จำเป็นสำหรับบัฟเฟอร์)
- สไตล์ข้อความ ปัจจุบันการแสดงข้อความใช้เพียงแค่แบบอักษรที่ระบุในลำดับที่ระบุ คุณลักษณะสไตล์ DXF และตัวอักษรจะถูกละเว้น ร่ายมนตร์ข้อความมักจะทำให้เกิดการแทรกซึมอยู่เสมอ
- การสนับสนุนการจัดรูปแบบขั้นสูงสำหรับ mtext (ฟอนต์, การระบายสี, สแต็ค)
- รูปแบบบรรทัด - ทุกบรรทัดมีการแสดงผลอย่างต่อเนื่องในตอนนี้ ฉันจะใช้พื้นผิวแบบ 1 มิติที่สร้างขึ้นบนขั้นตอนการเตรียมการพิกัดพื้นผิว (ซึ่งควรบัญชีรูปแบบการตั้งค่าสถานะความต่อเนื่องในแอตทริบิวต์จุดยอด DXF) และ shader เฉพาะเพื่อใช้คุณสมบัตินี้
- รูปแบบเส้นที่มีรูปร่าง (เช่นกับวงกลม)
- เส้นกว้าง ปัจจุบันบรรทัดทั้งหมดจะแสดงเป็นเส้นบาง ๆ ความกว้างทางกายภาพไม่ได้ถูกนำมาใช้
- เส้นความกว้างของตัวแปร (เช่นที่ระบุความกว้างเริ่มต้นและสิ้นสุด)
- Polyline ที่เรียบ (จุดเชื่อมต่อส่วนโค้ง/เส้นโค้ง/spline-fit)
- คุณสมบัติบางอย่างในการใช้งานการฟักไข่: รูปแบบการฟักออกนอก, infill ที่เป็นของแข็ง/ไล่ระดับสี, การสนับสนุน mpolygon, เส้นคู่, ขอบเขตที่กำหนดโดยเอนทิตีภายนอก
- บล็อกการติดตั้งในกริด แอตทริบิวต์กริดจะถูกละเว้นในขณะนี้
- คุณสมบัติและรูปแบบเฉพาะขนาด (บล็อกหัวลูกศรที่กำหนดไว้ล่วงหน้าต่างๆการปรับตำแหน่งการวางตำแหน่งข้อความขีด จำกัด และความคลาดเคลื่อน) มิติประเภทอื่นนอกเหนือจากเส้นตรง
- ผู้นำ
- การสนับสนุนการเข้ารหัสไฟล์ที่ไม่ใช่ UTF-8 ปัจจุบันไฟล์ดังกล่าวจะปรากฏขึ้นอย่างไม่ถูกต้อง พารามิเตอร์
$DWGCODEPAGE จะถูกละเว้น - การสนับสนุน OCS เต็มรูปแบบ ปัจจุบันสันนิษฐานว่าทิศทางการอัดขึ้นรูปเอนทิตีเป็น +z หรือ -z (ซึ่งใช้กันทั่วไปสำหรับคุณสมบัติการมิเรอร์ใน CAD) ทิศทางโดยพลการไม่ได้ประมวลผลอย่างเหมาะสม
- พื้นที่กระดาษ, เลย์เอาต์ (แผ่น), วิวพอร์ต
- คุณสมบัติ DXF ที่ใช้กันทั่วไปน้อยกว่า

การบริจาค
โปรดดูแนวทางการบริจาคสำหรับรายละเอียดเกี่ยวกับวิธีการทำคำขอดึง (PRS) โครงการยังต้องการไฟล์ตัวอย่างต่าง ๆ เพื่อการทดสอบ หากคุณพบปัญหาใด ๆ เกี่ยวกับการเรนเดอร์ DXF มันจะได้รับการชื่นชมอย่างมากหากคุณสามารถให้ไฟล์ตัวอย่างที่แสดงให้เห็นถึงปัญหาโดยการแนบกับปัญหาที่สร้างขึ้น การสร้างตัวอย่างน้อยที่สุดในซอฟต์แวร์ CAD ก็มีประโยชน์มาก นอกจากนี้การสร้างตัวอย่างในซอฟต์แวร์ CAD ที่เป็นกรรมสิทธิ์ต่าง ๆ ซึ่งฉันไม่สามารถเข้าถึงได้จะมีค่าสูง เนื่องจากระดับทางเข้าเพื่อเริ่มการเข้ารหัสในโครงการนี้ค่อนข้างสูงจึงมักจะมีประโยชน์มากกว่าในการรับรายงานปัญหาโดยละเอียดพร้อมไฟล์ตัวอย่างมากกว่าคำขอดึง
ใบอนุญาต
โครงการนี้ได้รับใบอนุญาตภายใต้เงื่อนไขของใบอนุญาตสาธารณะ Mozilla 2.0
เงินบริจาค
ต้องการพูดขอบคุณผู้ดูแลโครงการหรือไม่? นี่คือลิงค์: