Java dxf Writer

Tausendsassa

Aktives Mitglied
Hallo Leute,
Ich brauche wieder mal Hilfe ich habe ein Programm mit dem ich über einen Reader (kabeja Library) eine dxf Datei einlese und dann die höhe und länge der beinhalteten Formen bekomme(2D). Mein Problem ist
1.) dass bei einem Text die Höhe und Breite falsch eingelesen wird und dadurch nichts so ist wie es sein soll
2.) ich brauche nun einen Writer oder eine Erklärung wie man mit kabeja schreiben kann um die neuen Daten in eine dxf Datei einzufügen.
Hier nun mein Code (ich hab gehört ohne geht nichts) das ist halt meine Main der Reader ist nur kopiert also uninteressant denke ich:
Java:
public class MainClass
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        String sourceFile = "C://Users/developer/Desktop/DXFResizer/dxfTestdaten/Hallo Text.dxf";
        //String sourceFile = args[0];
          
        //Object erzeugen um aus der Main Methoden aufzurufen
        MainClass obj = new MainClass();
      
        //Einlesen und parsen der Datei
        DxfReader reader = new DxfReader();
        DXFDocument doc = reader.parseFile(sourceFile);
      
        //Höhe der DXF Grafik abholen, runden und ausgeben
        double heightGraphic = doc.getBounds().getHeight();
        System.out.println("Höhe der Grafik: " + heightGraphic);
      
        //Breite der DXF Grafik abholen, runden und ausgeben
        double widthGraphic = doc.getBounds().getWidth();
        System.out.println("Breite der Grafik: " + widthGraphic);
          
        //Einlesen der Daten der gewünschten Größe bzw. ausgeben
        System.out.println("Bitte geben Sie die Höhe der Form an: ");
        int heightForm = scan.nextInt();
        System.out.println("Bitte geben Sie die Breite der Form an: ");
        int widthForm = scan.nextInt();
        System.out.println("Höhe der gefragten Form: " + heightForm);
        System.out.println("Breite der gefragten Form: " + widthForm);

        //Überprüfen ob Höhe oder Breite der resize Faktor wird
        if(heightGraphic > widthGraphic)
        {
            //ResizeFactor berechnungs Methode aufrufen
            double resizeFactor = obj.calcResizeFactor(heightForm, heightGraphic);
            //Neue Größe ausrechnen lassen und ausgeben lassen
            obj.clacNewSize(heightGraphic, widthGraphic, resizeFactor);
        }
        else
        {
            //ResizeFactor berechnungs Methode aufrufen
            double resizeFactor = obj.calcResizeFactor(widthForm, widthGraphic);
            //Neue Größe ausrechnen lassen und ausgeben lassen
            obj.clacNewSize(heightGraphic, widthGraphic, resizeFactor);
        }
    }
  
    public double calcResizeFactor(int form, double graphic)
    {
        double resizeFactor;
        //wenn graphic 0 zu 1 machen damit nicht div by 0
        if(graphic == 0)
        {
            //faktor berechnen mit neuer wert durch alter wert
            resizeFactor = (double) form / (double) (graphic + 1);
        }
        else
        {
            //faktor berechnen mit neuer Wert durch alter Wert
            resizeFactor = (double) form / (double) graphic;
        }
        return resizeFactor;
    }
  
    public void clacNewSize(double height, double width, double resizeFactor)
    {
        //neue werte mit hilfe des Faktors berechnen
        double newHeightGraphic = height * resizeFactor;
        double newWidthGraphic = width * resizeFactor;
        System.out.println("Neue Höhe der Grafik: " + newHeightGraphic);
        System.out.println("Neue Breite der Grafik: " + newWidthGraphic);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
1.) dass bei einem Text die Höhe und Breite falsch eingelesen wird und dadurch nichts so ist wie es sein soll
Du holst dir die Bounds vom DXFDocument, ich nehme aber an du willst die Bounds von einem bestimmten Objekt haben oder?

2.) ich brauche nun einen Writer oder eine Erklärung wie man mit kabeja schreiben kann um die neuen Daten in eine dxf Datei einzufügen.
Wie schon im anderen Thread erwähnt: Bei "kabeja" beinhaltet keinen Writer für DXF Dateien, daher wird das nicht klappen.
Kabeja is a library for parsing DXF files and transforming to SVG (dxf2svg)
Also entweder schreibst du selber einen DXF Writer oder suchst eine andere Library die lesen UND schreiben kann.

https://www.google.at/?client=firefox-b-ab#q=java+dxf+writer&gfe_rd=cr
2.Link dürfte zu einer Lib führen die beides kann ....
 
ad 1.)
nunja die dxf's werden nur worte(namen) beinhalten wodurch ich nur die Bounds des REchtecks um diesen namen brauche
ad 2.)
danke schön hab das bis jetzt nicht ganz realisiert und ich schätze dass man auch nicht für den writer einfach eine ander lib nehmen kann da die nicht ganz kooperieren
 
nunja die dxf's werden nur worte(namen) beinhalten wodurch ich nur die Bounds des REchtecks um diesen namen brauche
Dann hol dir den richtigen DXFBlock aus dem Dokument und von diesem dann die Bounds
... ich schätze dass man auch nicht für den writer einfach eine ander lib nehmen kann da die nicht ganz kooperieren
Hat ja auch keiner gesagt das du die eine zum Lesen und die andere zum Schreiben verwenden sollst. Die anderen die ich dir gerade gezeigt habe beinhaltet einen Reader UND einen Writer.
Also wäre es vielleicht sinnvoll auf Kabeja zu verzichten und stattdessen auf die andere zu setzen.
 
Hat ja auch keiner gesagt das du die eine zum Lesen und die andere zum Schreiben verwenden sollst. Die anderen die ich dir gerade gezeigt habe beinhaltet einen Reader UND einen Writer.Also wäre es vielleicht sinnvoll auf Kabeja zu verzichten und stattdessen auf die andere zu setzen.
Ja ich suche gerade Beispiele mit dieser lib und versuche mich ein zu lesen.

Und bezüglich des Blocks: Solange Ycad das kann werde ich das sicherlich machen

Vielen Danke für deine Hilfe ^^
 

Neue Themen


Zurück
Oben