UICT - Control Actions / PTC Creo Elements/Programmierung
StephanWörz 09. Sep. 2020, 10:42

Hallo,

ich Blicks mal wieder nicht!

Folgendes ist zu lesen:

Zitat:
Control Actions can always be specified in two ways:

As a quoted LISP form which gets executed as soon as the control action gets triggered or
As a string. If in this case the control action gets triggered, the specified string gets passed to Creo Elements/Direct Modeling's command buffer just like as if the value of the string is entered manually into the enter command line.
See sd-put-buffer for more information.


Ich habe mir ein Stück Beispielcode aus der UICT-Doku angeschaut und bei diesem Code

Code:
(sd-create-text-control "UICT-TEST-121-TX" "UICT-TEST-12-GA"
  :x 0
  :y 0
  :width 10
  :height 2
  :editable t
  :showModified nil
  :showFocus t
  :enterAction ":text_121_enter_pressed")

erwartet dass beim drücken von Enter in dem Textfeld die :enterAction ausgeführt, also der Text in die Kommandozeile geschrieben wird. Leider tut sich da gar nichts??

Kann jemand was dazu sagen??

clausb 09. Sep. 2020, 18:03

Meine Erwartung wäre, dass das Keyword abgeschickt wird (und dann vom aktuell laufenden Kommando ausgewertet/entgegengenommen wird), aber nicht, dass es dann in der Eingabezeile auftaucht.


StephanWörz 10. Sep. 2020, 07:47

Guten morgen,

da hab ich wohl falsche Erwartungen gehabt und immer auf die Eingabezeile gelinst!

Verhält sich wie von Claus erwartet. String wird übergeben und sofort ausgewertet...

So geht's (anderes Beispiel halt):

Code:
(sd-create-pushbutton-control "UICT-BUTTON-1-PB"  "UICT-ABB-TAB-GA"
      :title      "BUTTON 1"
      :x 0
      :y 0
      :width 18
      :height 3
      :alignment  :center
      :PushAction    "(display \"UICT-BUTTON-1-PB presssed\")"
);;sd-create-pushbutton-control

lix b 15. Sep. 2020, 14:51

Funktioniert auch mit

Code:
(sd-create-pushbutton-control "UICT-BUTTON-1-PB"  "UICT-ABB-TAB-GA"
      :title      "BUTTON 1"
      :x 0
      :y 0
      :width 18
      :height 3
      :alignment  :center
:PushAction '(display "UICT-BUTTON-1-PB presssed")
);;sd-create-pushbutton-control


der_Wolfgang 16. Sep. 2020, 19:52

Wenn ihr wollt das Eure Action recorderhähig ist, ist die Variante von Stephan die richtige. 

Weil: ein string geht via sd-put-buffer in die command line. Und was dort durchläuft, landet auch im Recorder file.

Ja, eine ge-quotete Lisp form ist als PushAction auch möglich. Siehe ==>> IKIT Dokumentation.