8,330
edits
Paradox-01 (talk | contribs) m (hard error on PPG when minimum value is too low) |
Paradox-01 (talk | contribs) (Seems Event OnActivate will be the method of choice to let XSI ask OniSplit GUI whether there are new tasks or updated resources.) |
||
Line 128: | Line 128: | ||
[...] | [...] | ||
===Events=== | |||
====OnActivate==== | |||
function siOnActivateEventTest_OnEvent( in_ctxt ) | |||
Application.LogMessage "State: " + cstr(in_ctxt.GetAttribute("State")) | |||
' TODO: Put your code here. | |||
' Return value is ignored as this event can not be aborted. | |||
siOnActivateEventTest_OnEvent = true | |||
end function | |||
:State becomes "False" when XSI loses its focus. | |||
:State becomes "True" when XSI regains focus. | |||
Exchanging data between XSI and other programs is rather difficult. | |||
Instead, whenever "True" is detected XSI could look into an exchange folder or exchange file*. | |||
: *OniSplit GUI could save a vbs script to file and then it gets executed by XSI | |||
:: Application.ExecuteScript( FileName, [Language], [ProcName], [Params] ) | |||
Full example (FillFile would have to be done by the GUI) | |||
Dim fso, wText, bInteractive, TestFile | |||
TestFile="C:\Oni\AE\Tools\Simple_OniSplit_GUI\XSI_exchange\test.vbs" | |||
Main() | |||
'------------------------------------------------------------------------------ | |||
' NAME: FillFile | |||
' | |||
' INPUT: | |||
' | |||
' DESCRIPTION: Fill the test file | |||
'------------------------------------------------------------------------------ | |||
sub FillFile (in_file) | |||
wText.WriteLine "Main()" | |||
wText.WriteLine "" | |||
wText.WriteLine "sub log_some_messages(an_int, a_string)" | |||
wText.WriteLine "logmessage ""the int : "" & an_int" | |||
wText.WriteLine "logmessage ""the string : "" & a_string" | |||
wText.WriteLine "end sub" | |||
wText.WriteLine "" | |||
wText.WriteLine "sub main()" | |||
wText.WriteLine "CreatePrim ""Sphere"", ""NurbsSurface""" | |||
wText.WriteLine "end sub" | |||
wText.Close | |||
end sub | |||
sub main() | |||
Set fso = CreateObject("Scripting.FileSystemObject") | |||
Set wText = fso.CreateTextFile( TestFile, 1) | |||
FillFile TestFile | |||
ExecuteScript TestFile | |||
dim aParams | |||
aParams = Array(123456789, "toto") | |||
ExecuteScript TestFile,,"log_some_messages", aParams | |||
end sub | |||
Line 841: | Line 908: | ||
==Check selection mode== | |||
checkfilter | checkfilter | ||
'use sub to make use of the exit command | 'use sub to make use of the exit command | ||
Line 864: | Line 930: | ||
end sub | end sub | ||
==Property Page== | |||
===Detect a PPG=== | |||
' this check is used to decide to either build or open a PPG | ' this check is used to decide to either build or open a PPG | ||
set oRoot = ActiveProject.ActiveScene.Root | set oRoot = ActiveProject.ActiveScene.Root | ||
Line 875: | Line 941: | ||
===Disable PPG popups=== | |||
' let's say a big amount of objects will be created and each object will open a PPG | ' let's say a big amount of objects will be created and each object will open a PPG | ||
' in that case for user convenience those PPG popups should be disabled | ' in that case for user convenience those PPG popups should be disabled | ||
Line 889: | Line 955: | ||
===Build a PPG=== | |||
' general PPG setup | ' general PPG setup | ||
set oPSet = ActiveSceneRoot.AddProperty("CustomProperty", false, "my_PPG") | set oPSet = ActiveSceneRoot.AddProperty("CustomProperty", false, "my_PPG") | ||
Line 901: | Line 967: | ||
===PPG content=== | |||
====Text input==== | |||
oPSet.AddParameter3 "ParamName", siString | oPSet.AddParameter3 "ParamName", siString | ||
oPPGLayout.AddItem "ParamName", "Caption" | oPPGLayout.AddItem "ParamName", "Caption" | ||
====Integer input==== | |||
oPSet.AddParameter3 "ParamName", siInt2, , , , false, 0 | oPSet.AddParameter3 "ParamName", siInt2, , , , false, 0 | ||
oPPGLayout.AddItem "ParamName", "Caption" | oPPGLayout.AddItem "ParamName", "Caption" | ||
Line 919: | Line 985: | ||
====Droplist==== | |||
oPSet.AddParameter3 "Team", siString, 0 | oPSet.AddParameter3 "Team", siString, 0 | ||
aListTeams = Array( "Konoko", 0, _ | aListTeams = Array( "Konoko", 0, _ | ||
Line 932: | Line 998: | ||
====Radio options==== | |||
oPSet.AddParameter3 "Team", siString, 0 | oPSet.AddParameter3 "Team", siString, 0 | ||
aListTeams = Array( "Konoko", 0, _ | aListTeams = Array( "Konoko", 0, _ | ||
Line 945: | Line 1,011: | ||
====Checkbox==== | |||
' create checkbox and remove key symboles by setting parameter "Animatable" to false or 0 | ' create checkbox and remove key symboles by setting parameter "Animatable" to false or 0 | ||
' CustomProperty.AddParameter3( ScriptName, ValueType, [DefaultValue], [Min], [Max], [Animatable], [ReadOnly] ) | ' CustomProperty.AddParameter3( ScriptName, ValueType, [DefaultValue], [Min], [Max], [Animatable], [ReadOnly] ) | ||
Line 952: | Line 1,018: | ||
====Spacer==== | |||
' AddSpacer( [Width], [Height] ) | ' AddSpacer( [Width], [Height] ) | ||
oPPGLayout.AddSpacer 25 | oPPGLayout.AddSpacer 25 | ||
==Softimage ICE== | |||
===Show a simple value in the viewport=== | |||
CreatePrim "Cube", "MeshSurface" | CreatePrim "Cube", "MeshSurface" | ||
edits