2017-09-02 42 views
-2

我试图将.dxf文件解析到JPanel上。基本上我需要一个关于JPanel.i上的dxf文件的图形化表示,我被告知Kabeja和Ycad,但他们都不是我所需要的。我该怎么办。在JPanel中显示dxf文件

+0

Kabeja库为.dxf是CAD图的描述。您正在问如何使用Java渲染该CAD图形,这涉及到解析DXF的复杂文件结构并模拟AutoCAD的功能。这是一项艰巨的任务,你已经拒绝了Kabeja和YCad。但是,所有这些都是没有意义的,因为无论如何,这个问题(要求提供图书馆推荐)都是无关紧要的。请访问[帮助]并阅读[问]。 –

+0

你应该忽略问题而不是投票。 – chrisgeeq

+0

您似乎误解了 StackOverflow的目的和最终目标,它将用作问题库和 答案,这些答案将在未来对许多人有用。一个遥远的 次要目标是回答你的具体问题并帮助你。当 的问题被编写成与SO的主要目标一致时, 可能会得到很多回应并吸引积极和回答。当 它不符合这些目标时,那么SO“方式”就是downvote,因此 它不会在未来的搜索中显示。 ...(续) –

回答

0

使用此方法,您可以从dxf文件保存图像。之后,您可以从文件中读取图像并将其显示在JPanel中。

代码使用来自http://kabeja.sourceforge.net/

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.HashMap; 
import org.kabeja.dxf.DXFDocument; 
import org.kabeja.parser.DXFParser; 
import org.kabeja.parser.Parser; 
import org.kabeja.parser.ParserBuilder; 
import org.kabeja.svg.SVGGenerator; 
import org.kabeja.xml.SAXSerializer; 
import org.xml.sax.SAXException; 

public void parseFile(String sourceFile, String destinationPath, int width, int height) throws FileNotFoundException, java.io.IOException, org.kabeja.parser.ParseException, SAXException { 
    lastWidth = width; 
    lastHeight = height; 

    FileOutputStream o = new FileOutputStream(destinationPath); 
    InputStream in = new FileInputStream(sourceFile);//your stream from upload or somewhere 
    Parser dxfParser = ParserBuilder.createDefaultParser(); 
    dxfParser.parse(in, DXFParser.DEFAULT_ENCODING); 
    DXFDocument doc = dxfParser.getDocument(); 
    SVGGenerator generator = new SVGGenerator(); 

    SAXSerializer out = new org.kabeja.batik.tools.SAXPNGSerializer(); 
    out.setOutput(o); 
    HashMap mHashMap = new HashMap(); 
    mHashMap.put("width", Integer.toString(width)); 
    mHashMap.put("height", Integer.toString(height)); 
    generator.generate(doc, out, mHashMap); 

    in.close(); 
    o.close(); 
}