2

我对编程很陌生,所以任何帮助都将不胜感激。

我正在尝试解析 .dxf 文件以获取实体的坐标并将它们绘制到 JPanel。基本上我需要 dxf 文件的图形表示。

到目前为止,我只找到了一些关于如何使用 Ycad 或 Kabeja 库的示例,但我仍然不清楚如何获取实体甚至库如何工作。库似乎也不完整,因为缺少某些类,并且实际上我使用的每个示例代码都存在缺少类的问题。

SO上的老问题也没有给我很多答案。如果有人对上述库或任何其他可以帮助我解决问题的方法有任何经验,将不胜感激。

4

1 回答 1

0

使用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());

}
于 2015-10-09T05:50:01.703 回答