Object Hierarchy | 関連する C++クラス:View
ビュー
v4.0
View オブジェクトは、Softimage におけるビューのインスタンスです。ほとんどのウィンドウが、View オブジェクトとしてのフリーフローティングウィンドウと同じように、現在の Layout に埋め込まれています。
Softimage には、Netview、Script Editor、Render Tree、Explorer などを含む多くのタイプのビルドインビューがあります。ツールバーとシェルフも、ビューのタイプです(Softimage の初期バージョンで作成されたツールバーは例外です)。また、Relational View は 1 つのビューウィンドウ内に他のビュータイプを組み合わせたビューです。
プロパティページウィンドウ(PPG オブジェクトを参照)は、View のタイプではありませんが、次の例に示すように"Property Panel"のビュータイプに埋め込むことができます。
また、View オブジェクトを使用すると、Layout.Views からビューマネージャのインスタンスを作成し、View Manager Attributes で View.SetAttributeValue を使用してカスタマイズすることで、4 つの Softimage ビューポートを操作できます。
ビューは Layout.Views メソッド(またはリレーショナルビューの場合は View.Views メソッド)からアクセスできます。フリーフローティングウィンドウ内で View オブジェクトをインスタンス化するには、Layout.CreateView を呼び出します。
ビュー オブジェクトでは以下の操作が可能です:
- 閉じた状態や最小化した状態などに、ビュー状態を変更します。
- ビューの位置とサイズを変更します。
- ビューを表示したり非表示にしたりします。
- Explorer のスコープや NetView の URL などの特定のビュー属性にアクセスできます。
- UI がちらつくのを避けるために、ビュー属性を一度に編集できます。
- リレーショナルビューのサブビューを全体にわたって繰り返します。
これらのタスクの中には、ビュー オブジェクト(View.Move、View.Resize、View.Visible など)に実装された方法を使用して実行可能なものがあります。ただし、changing the scope and selection in the Explorer や maximizing a single viewport window などの専門化したタスクは、View.SetAttributeValue と View.GetAttributeValue メソッドでのみ実現可能です。異なるビューに対して利用可能な属性の一覧については、「View Attributes Reference」を参照してください。
| BeginEdit | EndEdit | FindView | FindView2 |
| GetAttributeValue | IsClassOf | IsEqualTo | Move |
| Rearrange | Refresh | Resize | SetAttributeValue |
| Application | Categories | Floating | FullName |
| Help | MemoCameras | Name | NestedObjects |
| Origin | OriginPath | Parent | Rectangle |
| State | Type | Views | Visible |
/*
This example restores and cascades all floating views excepted
the script editor.
*/
// Create some sample views
var layout = Desktop.ActiveLayout;
layout.CreateView( "Explorer", "My Explorer" );
layout.CreateView( "Browser", "My Browser" );
layout.CreateView( "NetView", "My NetView" );
// Position for the first view to cascade
px = 50
py = 20
// Delta between each view
dx = 20
dy = 20
var views = layout.Views;
for( var i=0; i<views.Count; i++) {
var vw = views(i);
if( vw.Floating && vw.Name != "script_editor") {
vw.Move( px, py );
px += dx;
py += dy
vw.State = siNormal; // put view at the top so far
}
} |
# Set up a few basics
from win32com.client import constants as c
import os.path
app = Application
false = 0
true = 1
null = None
# Convenience function to create a simple synoptic page on disk
def MakeSynViewPages() :
mysynviewpath = XSIUtils.BuildPath(
app.InstallationPath(c.siFactoryPath),
"Data", "XSI_SAMPLES", "Synoptic"
)
file1 = XSIUtils.BuildPath(mysynviewpath, "SynViewStartWith.htm")
file2 = XSIUtils.BuildPath(mysynviewpath, "SynViewSwitchTo.htm")
f = open(file1, 'w')
f.write("<html>\n<body version=\"2\">\n<script language=\"VBScript\">\n\n")
f.write("sub hotspot(in_obj,in_mousebutton,in_keymodifier)\nset self = GetValue(i")
f.write("n_obj)\nApplication.LogMessage \"VB: Touched \" & self.FullName & \" at \" _")
f.write("\n\t& self.posx.Value & \",\" & self.posy.Value _\n\t& \",\" & self.posz")
f.write(".Value & \" (x,y,z)\"\nend sub\n</SCRIPT>\n\n<map name=\"SynopticMap\">\n")
f.write("<area shape=\"circle\" coords=\"260,251,129\" title=\"\" NOHREF onClick=")
f.write("\"hotspot\">\n</map>\n\n<img src=\"..\\pictures\\xsilogo.jpg\" usemap=\"#S")
f.write("ynopticMap\">\n\n</body>\n</html>")
f = open(file2, 'w')
f.write("<html>\n<body version=\"2\">\n<script language=\"JavaScript\">\n")
f.write("\nfunction hotspot(in_obj,in_mousebutton,in_keymodifier)\n{\nvar self = G")
f.write("etValue(in_obj);\nApplication.LogMessage( \"JS: Touched \" + self.FullName + ")
f.write("\" at \" \n\t+ self.posx.Value + \",\" + self.posy.Value \n\t+ \",\" + ")
f.write("self.posz.Value + \" (x,y,z)\" );\n}\n</SCRIPT>\n\n<map name=\"SynopticMap")
f.write("\">\n<area shape=\"circle\" coords=\"260,251,129\" title=\"\" NOHREF onCli")
f.write("ck=\"hotspot\">\n</map>\n\n<img src=\"..\\pictures\\xsilogo.jpg\" usemap=")
f.write("\"#SynopticMap\">\n\n</body>\n</html>")
return [file1, file2]
# Create a synoptic property and attach it to a torus
app.NewScene("", false)
torus = app.CreatePrim("Torus", "MeshSurface")
app.Rotate(torus, 90, 0, 0, c.siAbsolute, c.siPivot, c.siObj, c.siX)
app.Translate(torus, 4, 3, 2, c.siAbsolute, c.siPivot, c.siObj, c.siZ)
synfiles = MakeSynViewPages()
applied = torus.AddProperty("Synoptic Property")
applied.Parameters(1).Value = "SynViewAttrib"
applied.Parameters(2).Value = synfiles[0]
app.OpenAttachments()
# Open the Synoptic viewer
lay = app.Desktop.ActiveLayout
vw = lay.Views("Synoptic View")
vw.SetAttributeValue("path", synfiles[1]+","+torus.Name) |
/*
This example demonstrates how we can host a Custom Property
inside a View.
This has some advantages over the InspectObj command:
-we can specify the exact size and positioning of the window
-the view is exposed in the Layout.Views collection so we can
find out if the property page is already being "inspected".
However it does not support the "Modal" mode supported by
InspectObj.
*/
// Step 1: Create the custom property
var oPSet = ActiveSceneRoot.AddProperty( "CustomProperty", false, "MyProp" );
oPSet.AddParameter3( "textparam", siString ) ;
oPSet.AddFCurveParameter( "MyFCurve" ) ;
var oLayout = oPSet.PPGLayout ;
oLayout.Clear() ;
oLayout.AddItem( "textparam" );
oLayout.AddItem( "MyFCurve" );
oLayout.AddRow()
oLayout.AddButton( "MoveView", "Move View" ) ;
oLayout.AddButton( "Close" ) ;
oLayout.EndRow()
oLayout.Language = "JScript"
oLayout.Logic = MoveView_OnClicked.toString()
+ Close_OnClicked.toString() ;
// Step 2: Show the custom property in a view
var oActiveLayout = Application.Desktop.ActiveLayout;
var oNewView = oActiveLayout.CreateView( "Property Panel", "MyPropView" );
oNewView.BeginEdit();
oNewView.Move( 10, 10 );
oNewView.Resize( 340, 340 );
oNewView.SetAttributeValue( "targetcontent", oPSet.FullName );
oNewView.EndEdit();
// Logic code used by the buttons on the Custom Property
function MoveView_OnClicked()
{
// We can't get to the view directly from the PPG object,
// but we can find it indirectly by searching through
// the open views
var thisCustomProp = PPG.Inspected.Item(0).FullName
var oActiveLayout = Application.Desktop.ActiveLayout
for ( var i = 0 ; i < oActiveLayout.Views.Count ; i++ ) {
var oView = oActiveLayout.Views(i) ;
if ( oView.Type == "Property Panel" ) {
if ( oView.GetAttributeValue("targetcontent") == thisCustomProp ) {
// found it!
oView.Move( 250, 250 ) ;
return ;
}
}
}
}
function Close_OnClicked()
{
// Self destruction of the custom property
DeleteObj( PPG.Inspected.Item(0) ) ;
PPG.Close() ;
} |
// Open an Animation Editor and show the FCurves on
// a custom property
var oPSet = ActiveSceneRoot.AddProperty("CustomProperty",false,"Demo" ) ;
var oParam = oPSet.AddParameter3( "Value", siDouble, 0, 0, 100 ) ;
var oParam2 = oPSet.AddParameter3( "Value", siDouble, 0, 0, 100 ) ;
oParam.AddFCurve2(
new Array( 1, 0,
25, 50,
50, 25,
100, 100
)
) ;
oParam2.AddFCurve2(
new Array( 1, 100,
25, 25,
50, 50,
100, 100
)
) ;
var oLayout = Desktop.ActiveLayout;
var oView = oLayout.CreateView( "Animation Editor", "MyFCurves" );
oView.SetAttributeValue( "TargetContent", oPSet.FullName ) ; |