Hi,
ich habe ein Programm, welches in ein techn. Zeichenprogramm (ProEngineer) über einen Button im Menü integriert ist. Mein Programm macht dort verschiedene Sachen (u.a. pdf´s erzeugen) mit einer geöffneten Baugruppe. Soweit geht auch alles wunderbar...
Wenn ich mein Programm zum ersten mal starte (über den Menübutton) läuft alles prima. Nur wenn ich direkt im Anschluß nach der ersten Ausführung nochmals mein Programm starten will, passiert gar nichts!!! Ich muss erst wieder das techn. Zeichenprogramm schließen und neu öffnen und dann gehts wieder für eine Ausführung bzw. ich lade eine völlig neue Baugruppe und lasse darauf mein Programm los - aber 2 mal hintereinander auf die gleich Baugruppe... das geht nicht!
Ich frage mich nur warum??? Ist sowas vielleicht ein Speicherproblem - das da noch irgendwelche Variablen mit Werten im Speicher gehalten werden???
Meine Einstiegsfunktion, die auf den Buttonklick die Abarbeitung startet, ruft eigentl. nur andere Funktionen auf, die dann etwas machen. Am Schluß setze ich meine ArrayListen, die benötigt wurden, alle wieder auf null - somit sind die doch schonmal leer?!
An was könnte das liegen, wenn ich nicht mehrmals hintereinander mein Programm auf die gleiche Baugruppe ausführen kann???
(Ich möchte keine Codefragmente etc. - mein Code soll nur als Veranschaulichung meiner Startfunktion dienen)
Ich wäre über allgemeine Tips dankbar, denen ich dann nachgehen kann.
Danke.
ich habe ein Programm, welches in ein techn. Zeichenprogramm (ProEngineer) über einen Button im Menü integriert ist. Mein Programm macht dort verschiedene Sachen (u.a. pdf´s erzeugen) mit einer geöffneten Baugruppe. Soweit geht auch alles wunderbar...
Wenn ich mein Programm zum ersten mal starte (über den Menübutton) läuft alles prima. Nur wenn ich direkt im Anschluß nach der ersten Ausführung nochmals mein Programm starten will, passiert gar nichts!!! Ich muss erst wieder das techn. Zeichenprogramm schließen und neu öffnen und dann gehts wieder für eine Ausführung bzw. ich lade eine völlig neue Baugruppe und lasse darauf mein Programm los - aber 2 mal hintereinander auf die gleich Baugruppe... das geht nicht!
Ich frage mich nur warum??? Ist sowas vielleicht ein Speicherproblem - das da noch irgendwelche Variablen mit Werten im Speicher gehalten werden???
Meine Einstiegsfunktion, die auf den Buttonklick die Abarbeitung startet, ruft eigentl. nur andere Funktionen auf, die dann etwas machen. Am Schluß setze ich meine ArrayListen, die benötigt wurden, alle wieder auf null - somit sind die doch schonmal leer?!
Code:
public class TestCommand extends DefaultUICommandActionListener {
static String dateinamePDF = null;
static String dateinameDXF = null;
static ArrayList checkname = new ArrayList();
static ArrayList matches = new ArrayList();
static ArrayList matchesPS = new ArrayList();
static ArrayList matchesPDF = new ArrayList();
//=======================enthält alle Funktionalitäten hinter dem MenueButton====================
public void OnCommand() {
try {
Session curSession = pfcGlobal.GetProESession();
Model model = curSession.GetCurrentModel();
//speichert drw-Namen vom akt.Arbeitsverzeichnis
matches = listDir(curSession);
//pdf-Name für großes pdf = Sachnummer von geöffneten Modell; an summaryPDF() übergeben
String pdfname_gesamt = setFilename_PDF_gesamt(model);
//alle *.ps, *.pdf, *.dxf und dxf_filenames.txt aus akt. Arbeitsverzeichnis löschen
deletePS(curSession);
deletePDF(curSession);
delete_DXF(curSession);
delete_dxf_filenames(curSession);
//Realisiert komplette Abarbeitung - anhand geöffneter Baugruppe oder Bauteil
if(getModelType(curSession, model) == "PART"){
//pdf´s und ggf. dxf für prt erzeugen
part(curSession, model);
}
else if(getModelType(curSession, model) == "ASSEMBLY"){
//pdf´s für geöffnete Baugruppe erzeugen
asm(curSession, model);
//Assemblystruktur abarbeiten
searchTree(curSession, model);
}
//pdf-Erstellung aller ps-Dateien im akt. Arbeitsverzeichnis
//nach Abarbeitung der Baugruppe bzw. Bauteil
convertPS(curSession);
//erzeugt Gesamt-pdf aus allen einzelnen pdf´s
summaryPDF(curSession, pdfname_gesamt);
//löscht alle entstandenen ps-files nach Beendigung
deletePS(curSession);
//löscht alle pdf´s nach Beendigung, ausser das "Gesamt-pdf"
deletePDF_small(curSession, pdfname_gesamt);
//ArrayListen nullen
checkname = null;
matches = null;
matchesPS = null;
matchesPDF = null;
}catch(jxthrowable err) {
System.out.println(err);
}
}
...
}
(Ich möchte keine Codefragmente etc. - mein Code soll nur als Veranschaulichung meiner Startfunktion dienen)
Ich wäre über allgemeine Tips dankbar, denen ich dann nachgehen kann.
Danke.