我对编程还很陌生,因此我们将不胜感激。
我正在尝试解析 .dxf 文件,以便获取实体的坐标并将它们绘制到 JPanel 上。基本上我需要 dxf 文件的图形表示。
到目前为止,我只找到了一些有关如何使用 Ycad 或 Kabeja 库的示例,但我仍然不清楚如何获取实体,甚至不清楚库是如何工作的。这些库似乎也不完整,因为缺少一些类,而且几乎我使用的每个示例代码都存在一些缺少类的问题。
关于SO的老问题也没有给我很多答案。如果有人对上述库有任何经验或任何其他可以帮助我解决问题的方法,我将不胜感激。
最佳答案
使用kabeja库,它将 DXF 转换为 PDF/SVG/JPEG 工作示例:
private static void parseFile(String sourceFile, String index)
throws FileNotFoundException, ParseException, SAXException {
InputStream in = new FileInputStream("C:\\Users\\z003kebe\\Downloads\\DWGAndDxf\\dwg\\"+sourceFile);
// Parser dxfParser = DXFParserBuilder.createDefaultParser();
Parser dxfParser = ParserBuilder.createDefaultParser();
dxfParser.parse(new FileInputStream("C:\\Users\\z003kebe\\Downloads\\DWGAndDxf\\dwg\\"+sourceFile), "UTF-8");
DXFDocument doc = dxfParser.getDocument();
SAXGenerator generator = new SVGGenerator();
// generate into outputstream
// output the SVG
SAXSerializer out = new SAXPDFSerializer();
// or you can use also pdf
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXPDFSerializer();
// tiff
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXTIFFSerializer();
// png
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXPNGSerializer();
// jpg
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXJEPGSerializer();
OutputStream fileo = new FileOutputStream(outputFile+index+".PDF");
// out.setOutputStream(response.getOutputStream()) //write direct to
// ServletResponse
out.setOutput(fileo);
// generate
generator.generate(doc, out, new HashMap());
}
关于Java:使用 Ycad/Kabeja 或任何其他类似库解析 dxf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31810630/