Im vorherigen Post iLogic: Logging wurde bereits die iLogic Log-Funktion vorgestellt, die Log Statements in einem eigenen Tab ausgeben kann. Mit der Progressbar steht eine weitere Möglichkeit zur Verfügung. Progressbars nutzen kein Dokumentenobjekt, sondern direkt Inventor und werden entweder unten Links im Hauptfenster angezeigt oder als eigenständiges Fenster ausgegeben.

Anatomie einer Progressbar

Progressbars müssen eingangs deklariert werden:

Dim oProgressBar As Inventor.ProgressBar = ThisApplication.CreateProgressBar(True, 10, "Titel",)

Es werden 3 Pflicht-Parameter erwartet. Zusätzlich stehen 2 weitere optionale Anweisungen zur Verfügung. Die optionalen angaben sind in der Tabelle mit einem * gekennzeichnet. In ihrer Reihenfolge in der Klammerangabe lauten diese:

Parameter Typ Erläuterung
1 Boolean Dieser Wert gibt an, ob die Ausgabe in der Statusbar (True) oder in einem eigenen dedizierten Fenster (False) erfolgen soll.
2 Integer Anzahl der Schritte, die durchlaufen werden sollen.
3 String Der Titel der Progressbar
4* Boolean Optionale Angabe, ob ein Cancel-Button dargestellt werden soll (True) oder ob dieser entfallen soll (True).
5* Integer Eine Referenz auf das Dialogfeld, die die Progressbar ausgelöst hat. Funktioniert nur, wenn Parameter 1 auf False gesetzt wird.

Progressbar als eigenes Fenster

Ein gutes Beispiel für eine Progressbar in dediziertem Fenster liefert Autodesk auf der eigenen Homepage. Das Beispiel von Autodesk nutzt Threading um eine Pause von einer Sekunde zwischen den einzelnen Fortschrittsschritten zu erzielen. Es werden 10 Schritte für einen vollen Fortschritt definiert und diese, beginnend beim Wert 1, durchiteriert:

Dim oStep As Integer
Dim oSteps As Integer = 10
Dim oProgressBar As Inventor.ProgressBar = ThisApplication.CreateProgressBar(False, oSteps, "Beispiel: Progressbar", True,)
'Here you can choose to specify a starting message
oProgressBar.Message = "Starting a process..."
For oStep = 1 To oSteps
	'do something
	'You can also update the Message shown within the Progress Bar with each loop.
	oProgressBar.Message = "Processing Step " & oStep & " Of " & oSteps
	System.Threading.Thread.Sleep(New TimeSpan(0,0,1))
	'Then each time you loop through some process use the following line to update the Progress Bar
	oProgressBar.UpdateProgress
Next
oProgressBar.Message = "Processing Finished"
'Then after the loop is done, you can close the Progress Bar like this
oProgressBar.Close

Das Ergebnis:

Progressbar in Statusleiste

Das gleiche Beispiel kann auch verwendet werden, um eine Progressbar unten am Inventor-Fenster anzuzeigen. Es muss lediglich die Code-Zeile angepasst werden, die die Progressbar initialisiert.

Dim oStep As Integer
Dim oSteps As Integer = 10
Dim oProgressBar As Inventor.ProgressBar = ThisApplication.CreateProgressBar(True, oSteps, "Beispiel: Progressbar", True,)
'Here you can choose to specify a starting message
oProgressBar.Message = "Starting a process..."
For oStep = 1 To oSteps
	'do something
	'You can also update the Message shown within the Progress Bar with each loop.
	oProgressBar.Message = "Processing Step " & oStep & " Of " & oSteps
	System.Threading.Thread.Sleep(New TimeSpan(0,0,1))
	'Then each time you loop through some process use the following line to update the Progress Bar
	oProgressBar.UpdateProgress
Next
oProgressBar.Message = "Processing Finished"
'Then after the loop is done, you can close the Progress Bar like this
oProgressBar.Close

Das Ergebnis:

Ressources