Dwg转svg 转出来的文件是空的

项目引入aspose-cad-23.8.jar 做dwg转svg,转出来的svg是空的。
微信图片_20240125144034.png (127.8 KB)

@yuyifang,
你好。
您能否提供初始 DWG 文件以便我们测试此问题?

DWG 文件如下:
链接:百度网盘 请输入提取码
提取码:t0p6
–来自百度网盘超级会员V5的分享

@yuyifang,
恐怕我无法从该服务下载。 您可以考虑在此处上传文件(压缩)或将其发送到我的电子邮件吗?

可以
D01地块总图【公示图】_t3郝佳构造.zip (1.5 MB)

@yuyifang,
这是我的结果。 可以附上你的结果吗? 您可以尝试调用 cadImage.updateSize(); 导出前。 有什么区别吗?
results.zip (2.5 KB)

D01地块总图【公示图】_t3郝佳构造-SVG.zip (1.6 KB)

附件是我转出来的结果。
转换代码如下:
package com.cbim.xland.tianshan.gisconfig.util;

import com.aspose.cad.Color;
import com.aspose.cad.fileformats.cad.CadDrawTypeMode;
import com.aspose.cad.fileformats.cad.CadImage;
import com.aspose.cad.imageoptions.CadRasterizationOptions;
import com.aspose.cad.imageoptions.SvgOptions;
import com.aspose.cad.imageoptions.UnitType;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class AutoCADUtils {

/*
 * CAD转SVG格式工具
 * */
public static boolean dwgToSvg1(String  fromUrl,String  toUrl) {
    // 验证License 若不验证则转化出的数据会有水印产生

// if (!getLicense()) {
// return false;
// }
// String cadFilePath = “/Users/Desktop/cad.dwg”;
String cadFilePath = fromUrl;
try{
File file = new File(cadFilePath);
InputStream inputStream = new FileInputStream(file);
String svgFilePath = toUrl.replaceAll(“dwg”, “svg”);
System.out.println(“svgFilePath替换后为:”+svgFilePath);
CadImage cadImage = (CadImage) CadImage.load(inputStream);
SvgOptions svgOptions = new SvgOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageHeight(1500);
rasterizationOptions.setPageWidth(1500);
rasterizationOptions.setNoScaling(false);
rasterizationOptions.setAutomaticLayoutsScaling(true);
//rasterizationOptions.setContentAsBitmap(true);
rasterizationOptions.setLayouts(new String[]{“Model”});
// rasterizationOptions.setDrawType(1);
rasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
// rasterizationOptions.setBackgroundColor(Color.getBlue()); // SVG 全局背景色
rasterizationOptions.setUnitType(UnitType.Unitless);
rasterizationOptions.setDrawColor(Color.fromName(“Lime”));
//svgOptions
svgOptions.setVectorRasterizationOptions(rasterizationOptions);
// 设置一个值,该值指示是否必须将文本转换为形状
svgOptions.setTextAsShapes(false);
// 是否应重新调整子像素线宽 false不调整
svgOptions.setRescaleSubpixelLinewidths(true);
// svgOptions.setUseAbsoluteRescaling(true);
System.out.println(“开始转换为SVG,初始地址为:”+cadFilePath);
cadImage.save(svgFilePath, svgOptions);
System.out.println(“转换完成,存储地址为:”+svgFilePath);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}

public static void main(String[] args)
{
    dwgToSvg1("D:\\data\\D01地块总图【公示图】_t3郝佳构造(1)\\D01地块总图【公示图】_t3郝佳构造.dwg","D:\\data\\D01地块总图【公示图】_t3郝佳构造(1)\\D01地块总图【公示图】_t3郝佳构造.svg");
}

}

@yuyifang,
所以,你的结果和我的一样。 它不是空的,但在左上角包含空白区域,并且曲线位于更靠近下面绘图的中心的位置。 最初的 DWG 绘图也有这个可用空间。

您可以通过添加来稍微改善结果

CadImage cadImage = (CadImage) CadImage.load(inputStream);
cadImage.updateSize();

ok,thank you very much! :+1:

1 Like

@yuyifang,
we were happy to help, don’t hesitate contacting us in case of issues.