2017-09-02 50 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(); 
}