admin管理员组文章数量:1574085
之前有过一个需求,需要将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/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) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727766481a1128520.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论