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:
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: