| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Probleme bei mehrfachen Plotten einer Datei (1153 mal gelesen)
|
Ex-Mitglied
|
erstellt am: 29. Feb. 2012 12:24 <-- editieren / zitieren -->
Hallo! Ich bin neu hier und hoffe das ich hier eine Lösung für mein Problem finden kann. Ich habe ein Plugin für AutoCAD 2012 geschrieben das auf .NET/C# basiert. Eine Funktion des Plugins ist, in einem Batchprozess (in einer Transaktion) mehrfach Elemente zu ändern und dann auf mehrere Plotter zu plotten. Ablaufbeispiel: - Transaktion starten - Elemente ändern - Plotten als PDF, PNG, JPG ... - Elemente ändern - Plotten als PDF, PNG, JPG ... - ... - Transaktion verwerfen (Dokument soll nicht geändert werden) Mein erster Ansatz war, die PlotEngine zu Beginn über die PlotFactory zu erzeugen und den Plot zu starten,
Code: var plotEngine = PlotFactory.CreatePublishEngine(); plotEngine.BeginPlot(null, null);
dann die Elemente mehrfach anzupassen und dann pro Ausgabeformat das Dokument hinzuzufügen (a x b Dokumente also),
Code: plotEngine.BeginDocument(plotInfo, ...); plotEngine.BeginPage(new PlotPageInfo(), plotInfo, true, null); plotEngine.BeginGenerateGraphics(null); plotEngine.EndGenerateGraphics(null); plotEngine.EndPage(null); plotEngine.EndDocument(null);
und am Ende, nachdem alle Änderungen an den Elementen durchgeführt und diese jeweils pro Ausgabeformat als Dokument hinzugefügt wurden, den Plot abzuschließen.
Code: plotEngine.EndPlot(null); plotEngine.Destroy();
Jedoch wurde dann immer nur das letzte hinzugefügte Dokument geplottet. Daher bin ich davon ausgegangen, dass das alles nicht in einem Auftrag geplottet werden kann. Darauf hin habe ich den Code so abgeändert, dass pro Änderung und Ausgabeformat immer die PlotEngine neu erzeugt, das Dokument geplottet und gewartet wird, bis der ProcessPlotState auf NotPlotting steht und dann mit der der nächsten Änderung/Format fortgefahren wird.
Code: // create plot engine var plotEngine = PlotFactory.CreatePublishEngine(); plotEngine.BeginPlot(null, null);// begin document plotEngine.BeginDocument(plotInfo, ...); // plot the first sheet/layout plotEngine.BeginPage(new PlotPageInfo(), plotInfo, true, null); // generate graphics plotEngine.BeginGenerateGraphics(null); plotEngine.EndGenerateGraphics(null); // finish the sheet/layout plotEngine.EndPage(null); // finish the document and plot plotEngine.EndDocument(null); plotEngine.EndPlot(null); plotEngine.Destroy(); // wait for plotter new Thread(delegate() { while (PlotFactory.ProcessPlotState != ProcessPlotState.NotPlotting) Thread.Sleep(10); ExportCompleted(null, EventArgs.Empty); }).Start();
Das Problem hierbei.. es dauert einfach viel zu lange um z.B. 7 PDF-Dateien zu erzeugen. Ich habe beobachtet, dass eine PDF recht schnell erzeugt wird, aber dann noch einige Zeit vergeht bis der PlotState auf NotPlotting springt. Hier jetzt meine konkreten Fragen:
- Ist mein erster Ansatz doch machbar? Vielleicht mit ein paar Tricks? War vielleicht nur etwas an meinen Plot- oder PageInfos falsch?
- Wenn der erste Ansatz nicht funktioniert, kann man den zweiten Ansatz dann irgendwie beschleunigen?
Leider komme ich hier nicht mehr selber weiter. und wäre euch daher sehr dankbar wenn ihr mir helfen könntet. Vielen Dank! Kurki |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |