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 ) ; |