Frage

Ich habe auf Visual C ++ geschrieben, um ein Problem der Speichernutzung einer CAD-Anwendung zu lösen angefordert, der auftritt, wenn sie versuchen, die Zeichnung zu PDF3D zu exportieren.

Exportieren-Funktion verhält sich gut für einfache Modelle oder nur Teile eines komplexen Modells, aber nicht für ein ganzes Komplex-Modell.

Wir sind mit dem U3D Source Projekt für das U3D Objekt zu schaffen; nachdem wir sie in das PDF eingefügt werden. Es ist die Aufgabe der Erstellung Teil, die problematisch ist.

Das U3D Source Projekt eine Bibliothek in C ++ für die Verwendung in C ++ zu gebaut ist, die seit 2007 tot ist, hat eine schlechte Dokumentation und seine Proben der Sammlung ist noch lange nicht genug! In der ToDo-Liste des Projektes wird auch festgestellt, dass es Speicherprobleme hat!

Also ich bin gebeten worden, um das Problem von zwei Seiten angreifen:

  1. Do Wartung des U3D-Code.

  2. ändern Sie die Art und Weise der Anwendung interagiert mit der U3D Bibliothek.

Sie sagten auch, die Seite 2. preferrable, wie es unter unserer Kontrolle.

Beim Versuch, das Problem zu lösen, habe ich zwei Schlussfolgerungen:

  1. Ich bin Verdacht stark, dass die U3D Methode Encodex für Speicher Missbrauch verantwortlich ist.

  2. habe ich versucht, eine Menge Veränderungen der kleinen Dinge für die Art, wie die apllication wirkt mit der lib (Kompressionsparameter zu ändern, Fahnen, etc.) und jedes Mal war das Ergebnis Speicher Überallokation.

Die Frage ist also: Lohnt es sich mit dieser Bibliothek fortsetzen? Der Code ist es nicht eine Freude zu lesen ... Oder vielleicht könnte es eine gute Idee, um einige der anderen Libs für den gleichen Zweck sein? Ich habe sie nicht entdecken, aber ich denke ernsthaft darüber VCGlib Schalten oder Libharu ... bitte etwas anderes vorschlagen, wenn Sie wissen, was gut ist.

Die anderen Alternativen wären: Verwenden Sie den Visual Technologies PDF3D Exporteur, die eine inakzeptable Kosten hat, oder meine eigene Implementierung eines U3D Exporteur zu entwickeln, die die Nachteile bei der als eine sehr begrenzte Menge des U3D funcionality haben würde und auch es could'nt für die erwartete Frist bereit. Also diese Optionen nehmen als verboten.

ich wirklich Hilfe brauchen, um zu entscheiden, was das Beste.

Vielen Dank im Voraus, Sérgio

War es hilfreich?

Lösung 2

Nach einigen Verzweiflung und schlecht schlafen Nächte und versucht, Entdeckung Speicherlecks oder einigen anderen Speicher Probleme schlossen wir für die praktischste Lösung:

Extrahieren nur der Code Teil benötigt, um eine Datei zu laden und es als U3D auf ein kleines Programm zu exportieren und den Haupt-CAD-Anwendung Anruf machen. Auch wenn es nicht die eleganteste Lösung ist, es wirklich funktioniert gut -. Keine der Prozesse erreichen Speichernutzung auch nahe an die 2-GB-Grenze

Ich wünschte, ich hätte genehmigt worden Dinge auf diese Weise früher zu lösen. Ich schlug vor, ein paar andere Dinge wie:

  • auf 64 Bit Migration

  • eine Option verwenden, die moderne Windows-Versionen für die Erweiterung der Speichergrenze jeden Prozess unterstützen, um mehr als 2 GB

Keine dieser beiden Lösungen waren akzeptabel, weil es erforderlich wäre, einige Kunden zu zwingen, bereits laufende Hardware oder Software neu zu installieren.

Andere Tipps

Einige Kommentare: VCGlib - ohne Beziehung setzt MeshLab auf VCGlib für Kernfunktionen, sondern auch für U3D Export Kommandozeilen-Tool zum Konvertieren von Textformat U3D verwendet wird, und dass das Werkzeug aus dem lib sf U3D. Libharu - Dose einbetten 3D-Modelle in die PDF-Ausgabe, erzeugen Sie die Modelle (U3D oder PRC-Dateien)

.

Ein andere Möglichkeit ist es, das andere Adobe 3D PDF-Format, VR China outoput. Acrobat SDK hat Formatbeschreibung in Form von Pseudo-Code. Auf der Grundlage dieser PRC Ausgabe wurde in Asymptote Tool implementiert. Finden Sie es auf Sourceforge und fragen Frage an Asymptote Forum, wenn Sie interessiert sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top