日々適当

hibitekitou

昔作ったスクリプトがSIをたたき落とした

xsi |2016-01-04

昔作ったスクリプトがありまして、なにせ昔だからぱっと見ただけだとよく分からないのだけど、とりあえず実行したらPPGを開こうとしてSoftimageごとたたき落とされてる、というような感じになりました。 同じスクリプトを自宅環境で試したら落ちなかったので、環境依存の部分もあるのでしょうが、よくよく確認してみると構文的に正しくない書き方をしている事が原因だったようです。

チェックボックスのあるPPGを作りました。例えばこんなスクリプト。

from win32com.client import constants as c
app = Application

oProp = XSIFactory.CreateObject( "CustomProperty" )
oProp.name = "TEST PPG"

boolcheckbox = oProp.AddParameter2( "boolcheckbox", c.siBool, 1)

oLayout = oProp.PPGLayout

oLayout.AddEnumControl( "boolcheckbox", ["", 0] , "test", c.siControlBoolean )

Err = app.InspectObj(oProp, "", "", c.siModal, False)

if Err == False:
	LogMessage(  boolcheckbox.Value )
else:
	LogMessage("Cancel")
 

問題は、AddEnumControlの部分のリスト部分(["", 0] の所)の書き方にありました。

ここのリストは[ "String", Value, "String", Value ... ] というように文字列のラベルと値の組み合わせを羅列していかなければならないのですけど、これを [ 0, 0 ] って書いていたのですね。チェックボックスだとこのリスト部分ってあんまり意味が無いみたいなのですけど(だから [0,0] にも特に意味が無い?)、環境によってSoftimageごとたたき落とす原因となってしまったようです。

正しく書かないとダメですなぁってことで。

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。