Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

18.04.2017

Inventor automatisieren: Programmieren für Konstrukteure (Teil 15)

Teil 14 verpasst? Dann erstmal hier weiter!

Alle Beiträge der Serie

In Teil 14 habe wir uns eine Dialogbox gebaut über die man verschiedene Bauteilfeature unterdrücken konnte. Heute schauen wir uns den "Makrorekorder" im Inventor an, die sog. Transcript Funktion. Wobei es nicht direkt ein Makrorekoder wie z.B. in Word ist, der VBA-Code ausgibt, sondern was bei der Transcript-Funktion rauskommt ist, ein Code, der nur ähnlich VBA ist. Zudem wird die Funktion, die wir besprechen, seit Inventor 5 offizielle nicht mehr unterstützt.

image

Script aufzeichnen

Damit überhaupt ein Script über die Transcript-Funktion aufzeichnen können, müssen wir die Funktion in der Registry einschalten. Es geht dabei um den Registrykey

HKEY_CURRENT_USER\SOFTWARE\Autodesk\Inventor\RegistryVersion21.0\System\Preferences\Transcript

wobei sich die rote Zahl je nach Inventorversion unterscheidet. 21 steht für den Inventor 2017, 20 für 2016 usw. In diesem Registryzweig gibt es drei Einträge, die für uns relevant sind:

  1. TranscriptingOn
  2. AllowReplay
  3. C:\Program Files\Autodesk\Inventor 2017\Bin\Inventor.exe:TransDir

Die beiden ersten Einträge aktivieren die Aufzeichnungsfunktion (TranscriptingOn) bzw. erlauben das anschließende abspielen (AllowReplay). Diese beiden Einträge müssen jeweils auf 1 gesetzt werden, nachdem der Inventor beendet wurde.

Der dritte Eintrag gibt an, wo die Scriptdatei gespeichert werden soll. Standardmäßig ist es das Tempverzeichnis das unter der Systemvariable %TEMP% definiert ist.

image

Also, den Inventor beenden, Registryeditor starten (Start > regedit), zum Zweig HKEY_CURRENT_USER\SOFTWARE\Autodesk\Inventor\RegistryVersion21.0\System\Preferences\Transcript gehen und dort die oben angegebenen Werte auf 1 setzen. Jetzt den Inventor wieder starten verschiedene Aktionen ausführen, wie etwa Datei öffnen usw. Alles, was im Inventor gemacht wird, wird in einer Datei im Verzeichnis das unter ..Inventor.exe:TransDir angegeben ist mit der Endung TF gespeichert.

image

Die Aufzeichnung wird beendet, in dem man den Inventor schließt.

Script abspielen

Um ein Script abzuspielen, muss die Aufzeichnung in die entsprechende Datei beendet sein, d.h. die aktuelle Inventorsitzung darf nicht mehr in die Datei aufzeichnen. Wir müssen also die Aufzeichnung beenden, indem wir den Inventor schließen. Da wir nicht andauernd alle Aktionen in ein Script aufzeichnen wollen, deaktivieren wir das Transcripting wieder in der Registry, indem wir den Schlüssel TranscriptingOn auf 0 setzen.

image

Jetzt starten wir den Inventor wieder und müssen dem Inventor nach dem Start sagen, dass wir eine Scriptdatei ausführen wollen. Das ging früher eines Menüeintrags oder indem man die TF-Datei mittels Drag/Drop in das Inventorfenster zieht. Beides klappt bei mir nicht. Was aber geht, ist der Aufruf mittels VBA. Um den Dateidialog zum Öffnen einer TF-Datei zu öffnen nutzen wir folgenden Programm:

Sub Script_laden()
 ThisApplication.SilentOperation = True
 Debug.Print "START:" & Format(Now, "dd.mm.yyyy hh:mm:ss")
 ThisApplication.CommandManager.ControlDefinitions.Item("AppReplayTranscriptCmd").Execute
 Debug.Print "ENDE:" & Format(Now, "dd.mm.yyyy hh:mm:ss")
 ThisApplication.SilentOperation = False
End Sub

Damit das Programm funktioniert, darf im Inventor keine Datei geöffnet sein! Ist eine Datei geöffnet, passiert schlicht nichts.

Die Zeilen mit der SilentOperation und dem Debug.print sind klar. Die eigentliche Funktion zum Öffnen der TF-Datei ist der Aufruf des Commands AppReplayTranscriptCmd über den CommandManager.

Wird das Programm ausgeführt, kommt ein Dialog zur Auswahl einer TF-Datei die dann ausgeführt, d.h. abgearbeitet wird.

image

Wie sieht der TF-Code aus?

Hier ein Ausschnitt aus dem Transcript-Code der eine neue Skizze erstellt und einen Kreis erzeugt.

ActiveDocument.Execute("Document1","Create Sketch On Workplane","Part=Document1.PmDCSegment.2;Workplane=Document1.PmDCSegment.11;AllowRetry=0;AllowIgnore=0;")
ActiveDocument.Execute("Document1","Begin Sketch Mode","Part=Document1.PmDCSegment.2;Sketch=Ref.2.1;AllowRetry=0;AllowIgnore=0;")
ActiveDocument.Execute("Document1","Create Sketch","AllowRetry=0;AllowIgnore=0;")
' -- Transaction End Tue Apr 18 09:47:40 2017 (ReqId=2)

' -- Transaction Begin Tue Apr 18 09:47:45 2017
ActiveDocument.Execute("Document1","CircleByCenter","Sketch=Ref.2.1;LayerStyle=;Pt1=[0,0];Infer1=[0,];Geom1=[Ref.3.1,];Geom1_SketchOccPath0=[];NoOfSilhouettes1=0;Pt2=[0.72485412603651,0.59577051842919];CurveFlag=1;SketchOnlyVisibleFlag=0;AllowRetry=0;AllowIgnore=0;")
' -- Transaction End Tue Apr 18 09:47:45 2017 (ReqId=5)

 

Und was bringt mir das jetzt?

Über das Transcripting können wiederkehrende Aufgaben ausgeführt werden oder auch standardisierte Tests, wie etwa der Benchmark Test denn ich mal für Inventor 2015 und 2017 gemacht habe.

WICHTIG: Falls noch nicht geschehen, das Transcripting vor dem normalen Arbeiten unbedingt wieder abschalten. Dazu den Inventor beenden und dann in der Registry Schlüssel TranscriptingOn auf 0 setzen.

Weiter zu Teil 16

Link zum Thema

http://adndevblog.typepad.com/manufacturing/2012/06/transcript-feature-in-inventor.html

Kommentare:

  1. Hallo zusammen, bei mir hört die Aufnahme leider nicht auf, trotz Änderung der Registry Eimträge sowie schließen des INventors. Was könnte hier falsch (gemacht) sein.
    Danke

    AntwortenLöschen
    Antworten
    1. Inventor beenden (keine inventor.exe mehr im Taskmanager) dann die Registryschlüssel zurück setzten.

      Löschen

War der Beitrag hilfreich oder hast du eine Ergänzung dazu?
Ist noch eine Frage offen?
Ich freue mich auf deine Rückmeldung!

Related Posts Plugin for WordPress, Blogger...
Inventor FAQ Newsletter. Emailadresse: