一、代码如下:
try {
init();
// 加载CAD文件
String inputPath = "D:\\IdeaProjects\\cplinkerp\\NT-DP06X.DWG";
LoadOptions opts = new LoadOptions();
opts.setSpecifiedEncoding(CodePages.SimpChinese);
CadImage cadImage = (CadImage) Image.load(inputPath, opts);
RasterizationQuality rasterizationQuality = new RasterizationQuality();
rasterizationQuality.setArc(RasterizationQualityValue.High);
rasterizationQuality.setHatch(RasterizationQualityValue.High);
rasterizationQuality.setText(RasterizationQualityValue.High);
rasterizationQuality.setOle(RasterizationQualityValue.High);
rasterizationQuality.setObjectsPrecision(RasterizationQualityValue.High);
rasterizationQuality.setTextThicknessNormalization(true);
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
cadRasterizationOptions.setBackgroundColor(Color.getBlack());
cadRasterizationOptions.setUnitType(cadImage.getUnitType());
// 设置布局
cadRasterizationOptions.setLayouts(new String[]{"Model"});
cadRasterizationOptions.setAutomaticLayoutsScaling(false); // 禁用自动缩放
cadRasterizationOptions.setScaleMethod(ScaleType.None); // 不进行缩放
// 获取实际图形范围并设置
Rectangle bounds = cadImage.getBounds();
double width = bounds.getWidth();
double height = bounds.getHeight();
System.out.println("图形宽度:" + width + ", 高度:" + height);
// 计算合适的尺寸
int targetWidth = 1000; // 设置一个目标宽度
double scale = targetWidth / width;
int targetHeight = (int)(height * scale);
// 设置页面尺寸
cadRasterizationOptions.setPageWidth(targetWidth);
cadRasterizationOptions.setPageHeight(targetHeight);
cadRasterizationOptions.setQuality(rasterizationQuality);
cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
cadRasterizationOptions.setExportAllLayoutContent(true);
cadRasterizationOptions.setVisibilityMode(VisibilityMode.AsScreen);
final SvgOptions SvgOptions = new SvgOptions();
SvgOptions.setVectorRasterizationOptions(cadRasterizationOptions);
/* final PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
final TiffOptions TiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
TiffOptions.setVectorRasterizationOptions(cadRasterizationOptions);*/
// svgOptions.setTextAsShapes(false);
// svgOptions.setVectorRasterizationOptions(cadRasterizationOptions);
// 保存为SVG文件
String outFile = "D:\\IdeaProjects\\cplinkerp\\output4.svg";
cadImage.save(outFile, SvgOptions);
} catch (Exception ex) {
System.out.println("Error occurred: " + ex.getMessage());
ex.printStackTrace();
}
}
DWG测试文件
image.png (46.5 KB)
上面代码进行DWG文件转换成SVG时缺失部分内容。
当把代码改成这样之后,转换的图像完整,但是空白的部分很多
try {
init();
// 加载CAD文件
String inputPath = "D:\\IdeaProjects\\cplinkerp\\NT-DP06X.DWG";
LoadOptions opts = new LoadOptions();
opts.setSpecifiedEncoding(CodePages.SimpChinese);
CadImage cadImage = (CadImage) Image.load(inputPath, opts);
RasterizationQuality rasterizationQuality = new RasterizationQuality();
rasterizationQuality.setArc(RasterizationQualityValue.High);
rasterizationQuality.setHatch(RasterizationQualityValue.High);
rasterizationQuality.setText(RasterizationQualityValue.High);
rasterizationQuality.setOle(RasterizationQualityValue.High);
rasterizationQuality.setObjectsPrecision(RasterizationQualityValue.High);
rasterizationQuality.setTextThicknessNormalization(true);
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
cadRasterizationOptions.setBackgroundColor(Color.getBlack());
cadRasterizationOptions.setUnitType(cadImage.getUnitType());
cadRasterizationOptions.setAutomaticLayoutsScaling(true); // 禁用自动缩放
// 获取实际图形范围并设置
Rectangle bounds = cadImage.getBounds();
double width = bounds.getWidth();
double height = bounds.getHeight();
System.out.println("图形宽度:" + width + ", 高度:" + height);
cadRasterizationOptions.setQuality(rasterizationQuality);
cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
cadRasterizationOptions.setExportAllLayoutContent(true);
cadRasterizationOptions.setVisibilityMode(VisibilityMode.AsScreen);
final SvgOptions SvgOptions = new SvgOptions();
SvgOptions.setVectorRasterizationOptions(cadRasterizationOptions);
/* final PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
*/
final TiffOptions TiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
TiffOptions.setVectorRasterizationOptions(cadRasterizationOptions);
// svgOptions.setTextAsShapes(false);
// svgOptions.setVectorRasterizationOptions(cadRasterizationOptions);
// 保存为SVG文件
String outFile = "D:\\IdeaProjects\\cplinkerp\\output4.svg";
cadImage.save(outFile, SvgOptions);
} catch (Exception ex) {
System.out.println("Error occurred: " + ex.getMessage());
ex.printStackTrace();
}