赤い部分ではさまれた部分の秒数がログで表示される



'パラメータで指定した数だけヌルを作る

'-------------------------------------------------------
'crieit_dialog
'------------------------------------------------------
'シーンルートにパラメータを作る
SelectObj "Scene_Root"
AddProp "Custom_parameter_list", , , "CustomPSet",oparm
SIAddCustomParameter "CustomPSet", "Param", siInt4, 0, 0, 100, , 4, 0, 100


'oparmは開くパラメーターの名前。siModal にするとOKボタンが出る。On Error Resume Nextは無くてもいいぽい?
On Error Resume Next
InspectObj oparm,,"crieit_dialog", siModal


'OKを押すと0が返るみたい。OKを押すとパラメーターの値を取る
if Err.Number = 0 then

v_oparm = GetValue (oparm & ".Param")
logMessage v_oparm
else
logMessage "Cansel押したね"
end if


'パラメーターの削除
DeleteObj oparm



tStart = time

'ゲットしたパラメーターの数だけヌルを作る
For i = 0 to (v_oparm - 1)


GetPrim "Null"


Next


logmessage "かかった時間:"&datediff("s",tStart,time)&"秒"

---------------------------------------------------

'INFO : かかった時間:1秒

'--------------------------------------
'Pick a Souse
'--------------------------------------


'oDL,oDRにピックした名前が返る
PickElement "","Pick a skeleton", "", oDL, iSelBtn
PickElement "","Pick a skeleton", "", oDR, iSelBtn


'oDL,oDRを直に次に使えなかった為名前を置き換える

oAA = oDL
oBB = oDR


'-------------------------------------------------------
'crieit_dialog
'------------------------------------------------------
'シーンルートにパラメータを作る。テキストにはいる部分を変数にしている。oAA,oBB
SelectObj "Scene_Root"
AddProp "Custom_parameter_list", , , "CustomPSet",oparm
SIAddCustomParameter "Scene_Root", "souse", siString,oAA , 0, 1, , 4, 0, 1
SIAddCustomParameter "Scene_Root", "souse_2", siString,oBB , 0, 1, , 4, 0, 1


'oparmは開くパラメーターの名前。siModal にするとOKボタンが出る。On Error Resume Nextは無くてもいいぽい?
On Error Resume Next
InspectObj oparm,,"crieit_dialog", siModal





'OKを押すと0が返るみたい。OKを押すとパラメーターの値を取る
if Err.Number = 0 then


logMessage "OK押したね"


else
logMessage "Cansel押したね"
end if


'パラメーターの削除
DeleteObj oparm

パラメータを作りOKCanselボタンを出し処理を別ける。
OKボタンはパラメータにつけるのではなくInspectObjを使って開くときにつけるみたい



'-------------------------------------------------------
'crieit_dialog
'------------------------------------------------------
'シーンルートにパラメータを作る
SelectObj "Scene_Root"
AddProp "Custom_parameter_list", , , "CustomPSet",oparm
SIAddCustomParameter "CustomPSet", "Param", siInt4, 0, 0, 10, , 4, 0, 10



'oparmは開くパラメーターの名前。siModal にするとOKボタンが出る。On Error Resume Nextは無くてもいいぽい?
On Error Resume Next
InspectObj oparm,,"crieit_dialog", siModal


'OKを押すと0が返るみたい。OKを押すとパラメーターの値を取る
if Err.Number = 0 then

v_oparm = GetValue (oparm & ".Param")
logMessage v_oparm
else
logMessage "Cansel押したね"
end if

'パラメーターの削除
DeleteObj oparm

'ゲットしたパラメーターの数だけヌルを作る
For i = 0 to (v_oparm - 1)
GetPrim "Null"

Next

プルダウンの項目とOK、Canselボタンをだす




dim XSIDial, aItems
set XSIDial = CreateObject("XSIDial.XSIDialog" )


aItems = Array( "Item1", "Item2", "Item3" )
indx = XSIDial.ComboEx( "Window Title", aItems, 2 )


if ( indx = -1 ) then
logmessage "User cancelled"
else
logmessage "User selected: " & aItems( indx )
end if

dim oPSet,oPPGLayout, oItem


'Demoというパラメーターをセット
set oPSet=ActiveSceneRoot.AddProperty("CustomProperty",false,"Demo")


'パラメーターを作る。3.5より特殊
oPset.AddParameter3"A", siDouble, 0, 0, 5,true,false
oPset.AddParameter3"B", siDouble, 0, 0, 5,true,false
oPset.AddParameter3"C", siDouble, 0, 0, 5,true,false
oPset.AddParameter3"D", siDouble, 0, 0, 5,true,false
oPset.AddParameter3"E", siDouble, 0, 0, 5,true,false
oPset.AddParameter3"F", siDouble, 0, 0, 5,true,false
oPset.AddParameter3 "MyCombo", siString, "Yellow"

'これからレイアウトしますよーみたいなの
set oPPGLayout = oPSet.PPGLayout



'page1というタブを作る。タブ2を作らないと出ないから注意
oPPGLayout.AddTab "page1"


'文字を入れる
oPPGLayout.AddStaticText "あいうえお", 50, 20


'Rowを使うと横に整列する。たぶん
oPPGLayout.AddRow


'ここからしたをグループとしてまとめる
oPPGLayout.AddGroup "", true


'AddItemでグループの中にパラメーターを格納する
oPPGLayout.AddItem "A"
'テキストパラメータをいれる。Aパラメーターの値がでる
oPPGLayout.AddString "A", testes, True, 30


'カラーバーを表示。全部動かすと落ちる。
oPPGLayout.AddItem "C"
oPPGLayout.AddColor "C" , "Ambient", false


'Randomizeというボタンを作る
oPPGLayout.AddButton "Randomize"


'グループの終了
oPPGLayout.EndGroup


'Bのファンクションカーブを表示?200は大きさ
oPPGLayout.AddFCurve "B", 200


'Rowの終了
oPPGLayout.EndRow




'タブ2の設定
oPPGLayout.AddTab "page2"



'コンボボックスを表示。MyComboに項目を足す。Arrayで加えるかんじ
aComboItems = Array( "Orange", "Orange","Yellow", "Yellow","Apple", "Apple" )
oPPGLayout.AddEnumControl "MyCombo", aComboItems, "Things", siControlFolder
oPPGLayout.AddEnumControl "MyCombo", aComboItems, "Things", siControlListBox


oPPGLayout.AddItem "B"


'パラメーターを開く

InspectObj oPSet


ピックしたものが条件があう限り何回もピックしつづけるのも。

do~loopと組み合わせることでピックをループさせることができる。



------------------------------------------------------------

'エントリ
PickElmentLoop

sub PickElmentLoop()
'ピックされたオブジェクト、左ボタンで選択されたオブジェクト、中ボタンで選択されたオブジェクト、ボタンの値
Dim pkdObj, selObj1, selObj2, selBtn

'ループさせて間違えてピックした場合や、ピックしたオブジェクトを変更するのに対応する
do
'XSIコマンドのPickElementを利用してさまざまな種類のものをピック可能
PickElement "object","Pick a Object", "", pkdObj, selBtn

'押されたボタンにより処理を分ける
if selBtn = 1 then
'マウス左ボタンでピックされた場合
set selObj1 = pkdObj
LogMessage selObj1 & " is piked by Left Mouse Button"
elseif selBtn = 2 then
'マウス中ボタンでピックされた場合
set selObj2 = pkdObj
LogMessage selObj2 & " is piked by Middle Mouse Button"
elseif selBtn = 0 then
'マウス右ボタンでピックされた場合
LogMessage "Canceled"
exit do
else
LogMessage "ERROR"
exit do
end if

loop

end sub

'_______________________________________________________________________________________
'
'NAME: PickElmentLoop
'
'
'DESCRIPTION: PickElement usage Example
'Avid Japan 2000
'______________________________________________________________________________________

’変数宣言を強制
Option Explicit

'-------------------------------------------------

'エントリ
PickElmentLoop

sub PickElmentLoop()
'ピックされたオブジェクト、左ボタンで選択されたオブジェクト、中ボタンで選択されたオブジェクト、ボタンの値
Dim pkdObj, selObj1, selObj2, selBtn

'ループさせて間違えてピックした場合や、ピックしたオブジェクトを変更するのに対応する
do
'XSIコマンドのPickElementを利用してさまざまな種類のものをピック可能
PickElement "object","Pick a Object", "", pkdObj, selBtn

'押されたボタンにより処理を分ける
if selBtn = 1 then


'マウス左ボタンでピックされた場合
set selObj1 = pkdObj
LogMessage selObj1 & " is piked by Left Mouse Button"


elseif selBtn = 2 then
'マウス中ボタンでピックされた場合


set selObj2 = pkdObj
LogMessage selObj2 & " is piked by Middle Mouse Button"


elseif selBtn = 0 then
'マウス右ボタンでピックされた場合
LogMessage "Canceled"


exit do


else


LogMessage "ERROR"


exit do


end if

loop

end sub

'TYTYTYTYTYTYTYTYTYTYTYTYTYTYTYTTYTYTYTYTTYTYTYTYTYTTYTYTYYTYTTYTYTYYTYTTYTYTY
'
'Name: TY_Vertex_Tool
'Version: 1.0
'Last Modified: 2003/04/01
'
'Description:Add middle vertices/Remove vertices tool similar to SI3D.
'
'Author: Takeshi Yamada (Born Digital,inc.)
'Contact: takeshi-y@borndigital.co.jp
'
'(c) Copyright April 2003 Takeshi Yamada
'
'TYTYTYTYTYTYTYTYTYTYTYTYTYTYTYTTYTYTYTYTTYTYTYTYTYTTYTYTYYTYTTYTYTYYTYTTYTYTY
'
'USAGE:This script will make you Add Middle Vertices/Remove Vertices similar to SI3D [Model Module] > Polygon > Vertex command.
'
'(1) Select Polygon Objects.
'
'(2) Run this sctipt.
'
'(3) Choice Add Mode or Remove Mode by clicking Left Mouse Bottan or Middle Mouse Bottan respectively.
'
'(4) If you choiced Add Mode, then pick any edges which you want to split by Left or Middle Mouse Bottan.
'
'(5) If you choiced Remove Mode, then pick any vertices which you want to collapose by Left or Middle Mouse Bottan.
'
'(6) If you want to change carrnt mode, then click Right Mouse Bottan and return to (3)
'
'(7) If you want to abort the script, then double click Right Mouse Bottan or push Esc key.
'
'
'Note:Recommend to activate point visibility.
'
'

Option Explicit
TY_Vertex_Tool
'---------------------------------------------
' TY_Vertex_Tool
'---------------------------------------------

Sub TY_Vertex_Tool()

Dim PosX, PosY, PosZ
Dim iSelBtn, iSelBtn2, iSelBtn3
Dim oEdge, oPoint


do


PickPosition "Add Middle Vertex Tool","Remove Vertex Tool", PosX, PosY, PosZ, iSelBtn


if iSelBtn = 1 then
LogMessage "Add Vertex on the middle point of picked edge."
SelectFilter "Edge"


do

PickElement "Edge","Pick Edges to Add Middle Vertex", "Pick Edges to Add Middle Vertex", oEdge, iSelBtn2


if iSelBtn2 = 1 then
LogMessage "Add middle Vertex to" & oEdge
SplitEdge oEdge, 50, False, True, siPersistentOperation


elseif iSelBtn2 = 2 then
LogMessage "Add middle Vertex to" & oEdge
SplitEdge oEdge, 50, False, True, siPersistentOperation


elseif iSelBtn2 = 0 then
LogMessage "Cancel- Add Middle Verteis"


exit do


else
LogMessage "Error"


exit do


end if

loop

elseif iSelBtn = 2 then
LogMessage "Remove a picked Vertex."
SelectFilter "Point"

do

PickElement "Point","Pick Vertices to Remove", "Pick Vertices to Remove", oPoint, iSelBtn3


if iSelBtn3 = 1 then
LogMessage oPoint & " Remove Vertex"
ApplyTopoOp "Collapse", oPoint, siUnspecified, siPersistentOperation


elseif iSelBtn3 = 2 then
LogMessage oPoint & " Remove Vertex"
ApplyTopoOp "Collapse", oPoint, siUnspecified, siPersistentOperation


elseif iSelBtn3 = 0 then
LogMessage "Cancel- Remove Vertices"


exit do


else
LogMessage "Error"


exit do


end if

loop

elseif iSelBtn = 0 then
LogMessage "Cancel"


exit do


else
LogMessage "Error"


exit do


end if


loop


SelectFilter "object"


End Sub


'シーンルートにCustomPSetとうのをセットしてParamとうパラメーターを作る

SelectObj "Scene_Root"
AddProp "Custom_parameter_list", , , "CustomPSet"
SIAddCustomParameter "CustomPSet", "Param", siUByte, 1, 0, 10, , 4, 0, 10



'パラメータの数値を参照してその回数だけ繰り返す

oParm = GetValue("CustomPSet.Param")

For i = 0 to (oParm
- 1)


'CreateDirLight2をコマンド化しておくとこれだけで呼び出せる
CreateDirLight2

Next