PDF Publisher – Teil 1

Guten Abend Zusammen,

Ich habe mir überlegt, das wir zusammen eine kleine Software entwickeln die PDF-Dateien für Idws/Dwgs nach dem Freigabeprozess erzeugt.

Ich würde mich freuen, wenn ihr euch durch Kommentare, Ideen am Projekt beteiligt. Das Projekt kann Live auf Github verfolgt werden.

Programm-Ablauf

Meine persönliche Meinung ist, das es besser wäre, wenn der PDF-Erstellungsprozess nicht direkt über den Autodesk Jobserver läuft, sondern in einer separaten Anwendung abgearbeitet wird. Dies hätte z.B. den Vorteil, das wir den Autodesk JobServer nicht durch den PDF-Erstellungsprozess blockieren und keine langwierigen Wartezeiten für die Konstrukteure generieren.

Der praktische Ablauf sollte dann wie folgt aussehen:

  • Änderung des Zeichnungsstatus auf Freigegeben
  • Job-Addin (Autodesk Jobserver) schreibt einen Eintrag in unsere Datenbank
  • Unser Job-Server sieht Intervall bezogen nach, ob neue Jobs vorhanden sind
  • Abarbeitung unserer Jobs (PDF-Generierung)

Folgende Jobs werden wir erstmal schreiben:

  • PDF-Generierung für Autodesk Inventor
  • Hinterlegen, der PDF-Dateien als Anhang der jeweiligen Datei in Vault
  • Ablage der PDF-Datei in einem Vault-Spiegelverzeichnis

Mal sehen, was uns da noch so alles im Laufe der Entwicklung einfällt 🙂

Architektur

Vorerst, dachte ich an folgende Technologien.

  • WPF/PRISM/MVVM für die Jobserver Applikation
  • SQL-Compact DB für den Job-Table und Einstellungen
  • EntityFramework für den Zugriff auf die Datenbank
  • Die Jobs als separate Module, die von PRISM geladen werden
  • Eventuell Job-Sheduler  z.B. „Quartz.NET“ [noch offen]

Vielleicht ist eine 3-Schichtige Backend Architektur auch übertrieben für unseren Anwendungsfall, aber das gibt uns Spielraum für eventuelle spätere Erweiterungen, z.B. könnte dies ein Service sein, damit Konstrukteure selber bestimmte Jobs auslösen können.

architektur
Architektur

Was das Projekt noch so alles mit sich bringt, werden wir dann ja sehen. Ich würde mich sehr über Kommentare freuen, was ihr davon haltet.

Gruß Ralph

VolumeCalculator

Hallo Zusammen,

für den heutigen Post, habe ich das Projekt aus dem letzten Post um eine Schleifenberechnung ergänzt. Diese Schleife längt den Quader solange, bis das gewünschte Zielvolumen erreicht ist.

Bei einem so einfachen Modell wie diesem Quader könnte man natürlich die Länge sehr viel einfacher errechnen, aber stellen wir uns einfach vor, es handelt sich hier um ein hoch kompliziertes Volumen Modell.

Wie immer, könnt ihr das Projekt von Github laden.

Calculation Klasse

Für die Berechnung habe ich das Projekt um eine Klasse namens Calculation ergänzt. Diese Klasse enthält einen BackgroundWorker, der nach dem Start, das aktuelle Volumen mithilfe der InventorService Methode GetiPropertyVolume ausliest und die Länge der Extrusion solange um 1 erhöht, bis das Zielvolumen größer gleich dem aktuellen Volumen ist.

 

backgroundworker
Berechnungslogik

 

Gruß Ralph

Cube-Builder

Hallo Zusammen

Heute zeige ich euch, wie man mithilfe der Autodesk Inventor-API automatisiert ein Bauteil erstellen kann. Ich demonstriere euch dies anhand eines simplen Quaders. In der Beispielsoftware wird Länge, Breite und Tiefe eingegeben. Beim Klick auf Erstellen wird dann im aktuell geöffneten Inventor Bauteil (*.ipt) ein Quader erstellt. Nach Erstellung wird das Volumen des Bauteils ausgelesen und im Beispielprogramm angezeigt.

Das Beispiel kann unter Github geladen werden.

cubebuilder

Erklärung

Kommen wir zur  Beschreibung der wichtigsten Bestandteile. Die Anwendung ist mit dem MVVM Pattern entwickelt. Sie besteht aus zwei Projekten. Zum ersten aus der WPF-Anwendung und zum zweiten aus einer Klassenbibliothek in der sich der InventorService befindet.

Damit die Inventor API verwendet werden kann, muss unsere Anwendung auf die Inventor.dll referenzieren. Dies ist zum Beispiel möglich durch einbinden der Autodesk.Inventor.Interop.dll. Sie ist im  Inventor Installationsverzeichnis zu finden.

  • C:\Program Files\Autodesk\Inventor 2017\Bin\Public Assemblies

Der InventorService umfasst im Großen und Ganzen 3 Methoden.

CreateRectangle

Die erste Funktion erstellt eine Skizze mit einem Rechteck im aktuell geöffneten Inventor Bauteil und gibt ein Skizzen Objekt zurück.

createrectangle

ExtrudeSketch

Die zweite Methode extrudiert eine übergebenes Skizze Objekt.

extrude

GetIPropertyVolume

Last but not Least, lesen wir dann das Volumen des Inventor Bauteils aus.

iproperty

Gruß Ralph