วิธีแยกภาพวาด CAD เป็นแผ่นย่อยด้วย GroupDocs Viewer
หากคุณกำลังสงสัย วิธีแยก CAD เป็นไฟล์ย่อยที่เล็กลงและจัดการได้ง่ายขึ้น คุณมาถูกที่แล้ว ในบทแนะนำนี้เราจะอธิบายขั้นตอนที่จำเป็นในการแยกภาพวาด CAD ขนาดใหญ่เป็นแผ่นย่อยโดยใช้ GroupDocs Viewer for Java เมื่อเสร็จคุณจะได้โซลูชันพร้อมใช้งานที่ช่วยเพิ่มความเร็วในการเรนเดอร์ ลดการใช้หน่วยความจำ และทำให้การแสดงภาพวาดในเว็บหรือแอปพลิเคชันมือถือเป็นเรื่องง่ายขึ้น.

คำตอบสั้น
- การแยก CAD ทำให้ได้อะไร? มันจะแบ่งภาพวาดขนาดใหญ่เป็นภาพย่อย (tiles) ที่โหลดเร็วขึ้นและใช้หน่วยความจำน้อยลง.
- รูปแบบใดที่ใช้สำหรับแผ่นย่อย? ไฟล์ PNG จะถูกสร้างโดยค่าเริ่มต้น แต่รูปแบบอื่น ๆ ก็รองรับผ่านตัวเลือกของ Viewer.
- ฉันต้องการไลเซนส์หรือไม่? การทดลองใช้งานฟรีทำงานได้สำหรับการพัฒนา; จำเป็นต้องมีไลเซนส์แบบชำระเงินสำหรับการใช้งานจริง.
- ฉันสามารถเปลี่ยนขนาดแผ่นย่อยได้หรือไม่? ใช่ – ปรับการคำนวณ
tileWidthและtileHeightให้เหมาะกับความต้องการของคุณ. - วิธีนี้ปลอดภัยต่อการทำงานหลายเธรดหรือไม่? การเรนเดอร์แต่ละแผ่นย่อยในอินสแตนซ์
Viewerของตนเองโดยใช้ try‑with‑resources ปลอดภัยสำหรับการทำงานพร้อมกัน.
“การแยก CAD” คืออะไร?
การแยก CAD หมายถึงการแบ่งภาพวาด CAD เดียวที่มักมีขนาดใหญ่เป็นหลายส่วนสี่เหลี่ยมผืนผ้า (tiles) แต่ละแผ่นย่อยจะถูกเรนเดอร์แยกกัน ทำให้คุณสามารถโหลดเฉพาะส่วนที่ผู้ใช้ต้องการเท่านั้น—เหมาะสำหรับแผนที่เว็บ, พอร์ทัลเอกสาร, และผู้ชมบนมือถือ.
ทำไมต้องใช้ GroupDocs Viewer for Java?
GroupDocs Viewer มีการสนับสนุนไฟล์กว่า 100 รูปแบบพร้อมใช้งานทันที รวมถึง DWG, DXF, และ DWF API แผ่นย่อยของมันให้คุณระบุพิกัดที่ต้องการได้อย่างแม่นยำ เพื่อให้คุณสามารถเรนเดอร์เฉพาะพื้นที่ที่ต้องการโดยไม่ต้องประมวลผลไฟล์ทั้งหมดก่อน สิ่งนี้ช่วยประหยัดการใช้ CPU, ลดแบนด์วิดท์, และมอบประสบการณ์ผู้ใช้ที่ราบรื่นยิ่งขึ้น.
ข้อกำหนดเบื้องต้น
- Libraries: GroupDocs.Viewer for Java ≥ 25.2.
- JDK: Java Development Kit เวอร์ชันล่าสุด (Java 8+).
- IDE: IntelliJ IDEA, Eclipse หรือ IDE ที่รองรับ Java อื่น ๆ.
- Build Tool: Maven (เครื่องมือสร้างอื่น ๆ จะทำงานได้ตราบใดที่เพิ่ม dependency).
การตั้งค่า GroupDocs.Viewer สำหรับ Java
เพิ่มรีโพซิทอรีของ GroupDocs และ dependency ลงในไฟล์ pom.xml ของคุณ:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/viewer/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
การรับไลเซนส์
GroupDocs.Viewer offers a free trial license for evaluation:
- Free Trial: เยี่ยมชม GroupDocs Free Trial เพื่อดาวน์โหลดไลบรารี.
- Temporary License: สมัครที่ Temporary License Page.
- Full License: ซื้อไลเซนส์สำหรับการใช้งานจริงที่ Purchase Page.
การเริ่มต้นพื้นฐาน
Create a simple Viewer instance to verify that the library loads correctly:
import com.groupdocs.viewer.Viewer;
public class ViewerSetup {
public static void main(String[] args) {
try (Viewer viewer = new Viewer("path/to/your/drawing.dwg")) {
// Your rendering code goes here.
}
}
}
คู่มือขั้นตอนการแยกภาพวาด CAD เป็นแผ่นย่อย
ขั้นตอนที่ 1: กำหนดไดเรกทอรีเอาต์พุต
เราจะเก็บแต่ละแผ่นย่อยเป็นไฟล์ PNG แยกกัน การใช้เมธอดยูทิลิตี้ช่วยให้ตรรกะของเส้นทางเป็นระเบียบและนำกลับมาใช้ใหม่ได้.
import java.nio.file.Path;
Path outputDirectory = Utils.getOutputDirectoryPath("SplitDrawingIntoTiles");
Path pageFilePathFormat = outputDirectory.resolve("page_{0}.png");
ขั้นตอนที่ 2: กำหนดตัวเลือกการแสดงผล
ตั้งค่ารูปแบบการเรนเดอร์เป็น PNG และบอก Viewer ไม่ให้โหลดล่วงหน้าทุกหน้า (ช่วยประหยัดหน่วยความจำ).
import com.groupdocs.viewer.options.PngViewOptions;
import com.groupdocs.viewer.options.ViewInfoOptions;
PngViewOptions viewOptions = new PngViewOptions(pageFilePathFormat);
ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(false);
ขั้นตอนที่ 3: คำนวณขนาดแผ่นย่อย
แรกเราจะรับความกว้างและความสูงต้นฉบับของภาพวาด แล้วแบ่งเป็นสี่ส่วนเท่า ๆ กัน.
import com.groupdocs.viewer.results.ViewInfo;
import com.groupdocs.viewer.options.Tile;
ViewInfo viewInfo = new Viewer("path/to/your/drawing.dwg").getViewer().getViewInfo(viewInfoOptions);
int width = viewInfo.getPages().get(0).getWidth();
int height = viewInfo.getPages().get(0).getHeight();
// Each tile is a quarter of the total size.
int tileWidth = width / 2;
int tileHeight = height / 2;
Tile[] tiles = {
new Tile(0, 0, tileWidth, tileHeight),
new Tile(tileWidth, 0, tileWidth, tileHeight),
new Tile(0, tileHeight, tileWidth, tileHeight),
new Tile(tileWidth, tileHeight, tileWidth, tileHeight)
};
ขั้นตอนที่ 4: เรนเดอร์และบันทึกแผ่นย่อย
เพิ่มแผ่นย่อยที่คำนวณได้ลงในตัวเลือกการเรนเดอร์และให้ Viewer สร้างไฟล์ PNG.
viewOptions.getCadOptions().getTiles().addAll(java.util.Arrays.asList(tiles));
try (Viewer viewer = new Viewer("path/to/your/drawing.dwg")) {
viewer.view(viewOptions);
}
เคล็ดลับการแก้ไขปัญหา
- Build path – ตรวจสอบให้แน่ใจว่าไฟล์ JAR ของ GroupDocs อยู่ใน classpath.
- Permissions – โฟลเดอร์เอาต์พุตต้องสามารถเขียนได้โดยกระบวนการ Java.
- Exceptions – หากพบ
ViewerExceptionให้ตรวจสอบว่าไฟล์ DWG ไม่เสียหายและไลเซนส์ที่ใช้ถูกต้อง.
กรณีการใช้งานทั่วไปสำหรับการแยกแผ่นย่อย CAD
- Web Mapping – โหลดเฉพาะส่วนที่มองเห็นของแผนผังชั้นเมื่อผู้ใช้เลื่อน/ซูม.
- Document Management – เก็บแต่ละแผ่นย่อยแยกกันเพื่อการสร้างตัวอย่างที่เร็วขึ้น.
- Mobile Viewing – ลดแบนด์วิดท์โดยดาวน์โหลดเฉพาะแผ่นย่อยที่จำเป็นสำหรับหน้าจอปัจจุบัน.
ข้อควรพิจารณาด้านประสิทธิภาพ
- Tile Size – แผ่นย่อยขนาดใหญ่กว่าจะมีไฟล์น้อยลงแต่การเรนเดอร์ช้ากว่า; ค้นหาจุดสมดุลตามความต้องการของ UI ของคุณ.
- Memory Monitoring – ใช้เครื่องมือโปรไฟล์ของ Java (เช่น VisualVM) เพื่อตรวจสอบการใช้ heap เมื่อประมวลผลภาพวาดขนาดใหญ่มาก.
- Resource Cleanup – รูปแบบ try‑with‑resources ที่แสดงข้างต้นจะปล่อยทรัพยากรเนทีฟโดยอัตโนมัติ.
คำถามที่พบบ่อย
Q: ฉันสามารถแยกไฟล์ประเภทอื่น (PDF, รูปภาพ) เป็นแผ่นย่อยโดยใช้วิธีเดียวกันได้หรือไม่?
A: ได้. GroupDocs Viewer รองรับหลายรูปแบบ; คุณเพียงใช้คลาสตัวเลือกที่สอดคล้อง (เช่น PdfViewOptions).
Q: ฉันจะเปลี่ยนคุณภาพภาพเอาต์พุตได้อย่างไร?
A: ปรับ viewOptions.setResolution(int dpi) หรือกำหนดการตั้งค่าการบีบอัดบนอ็อบเจ็กต์ PngOptions.
Q: แอปพลิเคชันของฉันใช้หน่วยความจำหมดเมื่อประมวลผลไฟล์ DWG ขนาดใหญ่มาก—ฉันทำอย่างไรได้บ้าง?
A: ลดขนาดแผ่นย่อย, เพิ่มขนาด heap ของ JVM (-Xmx), หรือเรนเดอร์แผ่นย่อยแบบต่อเนื่องใน Viewer แยกกัน.
Q: สามารถเรนเดอร์แผ่นย่อยแบบอะซิงโครนัสได้หรือไม่?
A: แน่นอน. ห่อการเรียกเรนเดอร์แต่ละแผ่นย่อยใน CompletableFuture หรือใช้ executor service เพื่อทำงานแบบขนาน.
Q: ฉันต้องการไลเซนส์แยกสำหรับแต่ละแผ่นย่อยหรือไม่?
A: ไม่. ไลเซนส์ GroupDocs Viewer ที่ถูกต้องหนึ่งใบครอบคลุมการเรนเดอร์ทั้งหมดในแอปพลิเคชันของคุณ.
แหล่งข้อมูล
อัปเดตล่าสุด: 2026-04-01
ทดสอบกับ: GroupDocs.Viewer 25.2 for Java
ผู้เขียน: GroupDocs