CAD文件解析(DWG to SVG)
生活随笔
收集整理的這篇文章主要介紹了
CAD文件解析(DWG to SVG)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前有過一個需求,需要將CAD的DWG文件轉成SVG,再對圖形做處理,簡單寫了dwg轉成svg的解析,后續補充對解析后對的svg圖形處理(如:圖形位置調整、圖形絕對坐標計算等),處理svg文件的計算需要對SVG的相關知識作了解,比如svg代碼里的一些屬性:
附上w3 school svg教程地址:SVG 教程
一、依賴包引入
<dependency><groupId>com.aspose</groupId><artifactId>aspose-cad</artifactId><version>21.8</version></dependency>
注意:如果下載不了aspose-cad包,需要加上這段
<!--解決下載不了aspose-cad包的問題--><repositories><repository><id>aspose-maven-repository</id><url>https://repository.aspose.com/repo</url><snapshots><enabled>false</enabled></snapshots></repository></repositories>
二、cad文件解析到svg文件
public static void main(String[] args) {String cadFilePath = "/Users/Desktop/cad.dwg";try{File file = new File(cadFilePath);InputStream inputStream = new FileInputStream(file);String pdfFilePath = "/Users/Desktop/cad.svg";CadImage cadImage = (CadImage) CadImage.load(inputStream);SvgOptions svgOptions = new SvgOptions();CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();rasterizationOptions.setAutomaticLayoutsScaling(true);rasterizationOptions.setContentAsBitmap(true);rasterizationOptions.setLayouts(new String[]{"Model"});rasterizationOptions.setDrawType(1);// SVG 全局背景色// rasterizationOptions.setBackgroundColor(Color.getRed());// rasterizationOptions.setDrawColor(Color.fromName("Lime"));rasterizationOptions.setExportAllLayoutContent(false);svgOptions.setVectorRasterizationOptions(rasterizationOptions);// 設置一個值,該值指示是否必須將文本轉換為形狀svgOptions.setTextAsShapes(true);// svgOptions.setMinimumLinewidth((float) 0.3);// svgOptions.setMinimumLinewidth(0.1f);// 是否應重新調整子像素線寬 。 false 不調整. 設svgOptions.setRescaleSubpixelLinewidths(false);// svgOptions.setUseAbsoluteRescaling(true);System.out.println("開始轉換為SVG");cadImage.save(pdfFilePath, svgOptions);System.out.println("轉換完成");}catch (Exception e){e.printStackTrace();}}
?注釋了一些用不到的屬性,具體屬性的說明aspose官網:CadImage - Aspose.CAD for Java - API Reference
?三、默認是以解析的圖形尺寸進行轉換,如果需要設置解析后的SVG尺寸
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();rasterizationOptions.setPageWidth(800);rasterizationOptions.setPageHeight(800);
留個問題:這段代碼更新到服務器上后,每次服務器重啟時,第一次解析總會失敗,后續則會正常,這個問題始終沒找到,望大佬指教!!!!
附上異常:com.aspose.cad.cadexceptions.ImageSaveException: Image export failed. Exception in SVG Exporter
總結
以上是生活随笔為你收集整理的CAD文件解析(DWG to SVG)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 湖南大学计算机学院软件专业杨磊,杨磊-湖
- 下一篇: PPPoE过程