net版本:4.6.1
aspose.cad 版本:22.1.0.0
demo代码:
using (CadImage cadImage = (CadImage)Image.Load(dwgFile))
{
List<string> layers = cadImage.Layers.GetLayersNames();
// 遍历所有布局
foreach (var item in cadImage.Layouts.Keys)
{
try
{
string layoutName = item.ToString();
Console.WriteLine($"Rendering layout: {layoutName} in file: {Path.GetFileName(dwgFile)}");
// 设置渲染选项
JpegOptions options = new JpegOptions
{
VectorRasterizationOptions = new CadRasterizationOptions
{
PageWidth = cadImage.Width, // 输出图片宽度
PageHeight = cadImage.Height, // 输出图片高度
BackgroundColor = Color.White, // 背景颜色
DrawType = CadDrawTypeMode.UseObjectColor, // 使用对象颜色
Layouts = new[] { layoutName }, // 渲染当前布局
AutomaticLayoutsScaling = true, // 启用自动缩放
NoScaling = false, // 启用缩放
UnitType = UnitType.Millimeter // 单位类型
//Layers = layers.ToArray() // 加载所有图层
}
};
// 生成输出文件名
string outputFileName = $"{Path.GetFileNameWithoutExtension(dwgFile)}_{layoutName}.jpg";
string outputPath = Path.Combine(outputFolder, outputFileName);
// 保存为 JPEG 文件
cadImage.Save(outputPath, options);
Console.WriteLine("Saved: " + outputPath);
}
catch (CadException ex)
{
Console.WriteLine($"不支持的实体类型: {ex.Message}");
// 记录日志或忽略特定实体
}
}
}
通过代码转换后,有失败率,大约30%,生成的jpg图片有的是空白的 有的一条横线,其余成功,还有的原图像素很大的情况下 例如width和height10w以上,直接报错失败,请帮我分析原因,或者有没有完整的代码示例(兼容各种情况(处理了多布局、视图等等))预先格式化的文本