val loadOptions = LoadOptions().also{
it.specifiedEncoding=CodePages.SimpChineseOtherGb2312
}
val cadImage = (Image.load(dwgPath,loadOptions) as CadImage).apply {
fileEncoding = CodePages.SimpChineseOtherGb2312
styles.forEach { style ->
val realStyle = style as CadStyleTableObject
val font = realStyle.primaryFontName
if ("txt".equals(font, ignoreCase = true)) {
return@forEach
}
realStyle.primaryFontName = "simsun"
}
}
return dwgPath.replace(".dwg",".dxf").also {dxfPath->
cadImage.save(dxfPath)
cadImage.close()
}
我对DWG文件进行转换并且设置了编码。在加载后使用了for循环对primaryFontName进行了指定为simsun 但是最后转换出来的dxf中的中文依然是乱码的 我想请问下这个是什么清空,是否是我转换错误了
@setruth,
你好。
请提供初始 DWG,以便我们可以看到问题。 能否请您指出截图中乱码具体在哪里?
丁家渠.7z (125.8 KB)
这是我的文件 后续我进行dxf的转换后发现直接打不开dxf文件了 报错文件有误 我使用的是官方的例子进行转换的,转换后里面的所有中文都乱码,并不是某几个地方
我使用的是com.aspose:aspose-cad:23.10 23.10的版本
@setruth,
请帮助我们更好地理解问题,以了解原因和后果
- 您的目标只是将 DWG 转换为 DXF 吗? 或者您的目标是通过字体替换进行转换?
- 您最初是想用 simsun 替换字体还是因为您注意到 DXF 存在一些问题而这样做?
- 能否给我们看一下中文乱码的截图? 你这是什么意思?
4.能否请您看一下附件中的结果dxf,是否正常?
result_recovered.zip (65.1 KB)
@setruth,
好的,我明白了,非常感谢!
这个附件怎么样?
result_recovered2.zip (55.3 KB)
很不幸这个文件也和之前的结果一样是无法打开的
cad的dwg图在什么情况下会变成这样呢,这是个很奇怪的情况,我之前尝试过dwg转svg 但是这个文件转出来的svg内容是空的 但是svg是有代码内容的不知道什么情况,别的文件又是可以正常转换的
@setruth,
我可以确认 DWG 到 DXF 转换后结果无法打开,我们应该解决这个问题。 ODA 查看器提供了恢复文件的选项,即 result_recovered.dxf,可以使用 ODA 和 AutoCAD 成功打开该文件。 我直接用AutoCAD又保存了一次,即result_recovered2.dxf,同样可以在ODA和AutoCAD中打开。
您能否提供您用于查看的软件的直接参考?
CAD快速看图官方网站 - 愿天下没有看不了的图纸 (glodon.com)
这是我使用的查图软件,使用ODA和AutoCAD可以打开吗?还是说使用ODA进行恢复才能打开呢?我发送到我的手机上我试了许多查看的软件都无法正常查看
如果cad图是受保护的那么是不是无法转换为dxf?但是按照正常逻辑来说如果是受保护的那么应该无法转换才对,但是我之前用20.1的版本的依赖可以转换为dxf 不过转换为dxf后转换为别的任何文件都会出现错误
@setruth,
我们经常将 AutoCAD 称为与 DWG/DXF 一起使用的“标准具”软件。 但对于 DXF,我们应该考虑到它并不是很严格 - 有些观众可能对他们不知道的某些事情很敏感,有些人可以跳过它。
我们创建了 CADJAVA-11519 来调查并修复至少在 AutoCAD/ODA 中无法打开的 DXF 问题,我们还将关注广联达。 我向您发送文件只是为了检查是否有关于字体的要求,但我们将首先关注开放问题。
因为我需要解析成dxf来读取dwg的文件内容,然后使用框架读取为svg或者解析为geojson 所以我认为转换到dxf是必然的,因为我需要在web端进行渲染dwg图
@setruth,
但是您会用眼睛处理 DXF 文件吗? 或者使用一些编程来读取它?
是的 我打算使用编程的手段处理我的dxf文件读取里面的数据,获取直接发送给web端使用web的开源框架渲染dxf文件
如果我可以直接把dwg转为json或者web端可读取的手段也不是不可以,但是目前我所知的方案里面就是转到dxf再转换
@setruth,
只是问一下,因为广联达可能无法直观地打开 DXF 文件,但您仍然可以使用编程软件处理该文件 无论如何,我们都会看看结果 DXF 的加载问题。
image.png (134.1 KB)
我们有bimface的平台账号 我尝试了下发现默认的model层确实是没数据的,但是dwg查看软件上面显示model层是有内容的,转换后就连广联达的平台都转不出来model的内容,所以aspose直接对dwg文件进行转换比如到svg上回出现结果为空应该就是因为默认是model层所以没内容,我想请问下aspose对多个图层的dwg文件是否有选择转换的支持呢,可以让开发者自行选择转换哪个图层
@setruth,
您可以设置一些选项,如下所示:
Image cadImage = Image.load(srcFile);
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setLayouts(...);
rasterizationOptions.setlayers(...);
DxfOptions dxfOptions = new DxfOptions();
dxfOptions.setVectorRasterizationOptions(rasterizationOptions);
cadImage.save("结果.dxf", dxfOptions);
但在这种情况下获得的DXF是扁平化的,包含单层和实体作为线。
好的,aspose对dwg赚svg的转换是否有大小上限呢请问下,我发现赚png回出现堆溢出的清空,如果dwg文件大点的话。比如9M的dwg文件就会堆溢出了