myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | Memo : Python PPG onthefly

自分はPython詳しくないので、昨日(数時間前)スクリプトを書きながら学んだことをメモっておきます:

JScript で オンザフライのPPGを作る時に Logic に function + .toString() をつけるだけで済むから便利ですね。

これはPythonでは toString() みたいな方法はありません。

ちょっと面倒だけど、一応方法あります。

このリンク(英語)を見て、知りました。


一つは「'''」の間にファンクションを入れて、ストリングとしてLogicに入れることです。


sLogic = '''
def test_OnClicked():
#do something
'''

という感じです。

これは VBScript と比べて、さほど不便でもないな。

もうひとつは

TXT にファンクションを書いて、openとread でファイルを読み込んでロジックにする。


f = open("C:/My Documents/callbacks.txt")
s = f.read()
oLayout.Logic = s


そして、JScriptと同じく「\」を使うときに「\\」を書かなきゃいけない。

しかs、「\\」を「'''」の中に入れると、x2にしなきゃいけない!

普段書いてる「\\」を「\\\\」にすること。

つまり「\」を書きたいときに「\\\\」を書かなければなりませんということです。
合計x4ですね。


そうしないと、「EOL while scanning string literal」という良く分からんエラーが出てしまいます。

PPG OnTheFlyの例はこんな感じ:

from win32com.client import constants as c
xsi = Application
oProp = XSIFactory.Createobject( 'CustomProperty' )
oProp.name = "Test"

oLay = oProp.PPGLayout
oItem = oLay.AddButton("Run", "Run Test")
oItem.SetAttribute( c.siUICX, 315 )
oLay.Language = "Python"

sLogic = '''

def Run_OnClicked():
log = Application.LogMessage
log ("Python TEST")
log ("\\\\")
'''
oLay.Logic = sLogic
xsi.InspectObj( oProp )

# こうなるはず:
# INFO : Python TEST
# INFO : \

Comments

ウワー(´Д`)

>そして、JScriptと同じく「」を使うときに「」を書かなきゃいけない。
>しかs、「」を「'''」の中に入れると、x2にしなきゃいけない!

うわー、私も前これにハマって10日ぐらい無駄にしてましたよ(;´Д`)悪夢がよみがえりよる・・・。

私の場合、PPGとLogicを別々に書いてPPGを立ち上げた際、logicを呼び出すような形にしてます。
これだとLogicを文字列化しなくて良い&社内配布した際、PPGは各々のローカルに置いて、Logicの部分はサーバーに置き、そこを見に行くようにしておけば仕様が変わった時楽チンだったりしますです。

ホソボソとやってる私のBlogにソレの記事書いてるので見ていただければ・・・・。

ではでは(´ω`)ノシ

  • 2012/06/04(月) 14:00:38 |
  • URL |
  • タコ C:。ミ #px9q1hQA
  • [ Edit ]

Re: ウワー(´Д`)

>タコさん、コメントありがとうございます。

タコさんの記事は既に読んでいますよ。とても参考になりました。
自分もたまにPPGとロジックを別々で書いたりしますが、スクリプトのパスは取得が出来ないところがネックです。

社内用のスクリプトならフルパスでも問題ないし、プラグインやアドオンだったらそのプラグインのパスを取得すればいいだけですけど、ただのスクリプトを誰のPCでも動く様にするには1ファイルにまとめるしか方法がないからこういった問題が出たりします。

スクリプトのパスの取得方法はないのかな。

  • 2012/06/04(月) 14:14:58 |
  • URL |
  • myara #-
  • [ Edit ]

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/131-d98efa9f
Use trackback on this entry.

まとめtyaiました【SI | Memo : Python PPG onthefly】

自分はPython詳しくないので、昨日(数時間前)スクリプトを書きながら学んだことをメモっておきます:JScript で オンザフライのPPGを作る時に Logic に function .toString() をつけるだけで

  • 2012/06/02(土) 04:29:51 |
  • まとめwoネタ速neo