v5.0
オブジェクトがsiClassIDによって特定されるクラスを実装する場合は True を戻します。このメソッドはオブジェクトが実装できるクラスをテストし、オブジェクトのドキュメントに説明されているかいそうに反映することができます。たとえば、ProxyParameterクラスはそれ固有のプロパティとメソッドをサポートしますが、ParameterクラスおよびSIObjectのプロパティとメソッドもサポートします。このことは、siProxyParameterID、siParameterID、および SiObjectID の SClassOfが true になることを意味します。一方、プロキシパラメータはX3DObjectではないため、X3DObjectID の IsClassOf は false になります。
このメソッドはApplication.ClassNameメソッドとよく似ていますが、文字列ではなくsiClassID を取得するのですべてのクラス実装をクラスごとにテストできる点が異なります。
注:VBScript TypeName()関数およびJScript Typeof()関数は、文字列型や整数型などの簡単なデータ型の名前をレポートすることもできます。オブジェクトでは、TypeName()関数とApplication.ClassNameメソッドの結果が同じになりますが、Typeof()関数は'object'だけを戻し、Typeof()関数も変数が'null'に設定されている'object'を戻します。
C++ API ではこのメソッドと同等のSIObject::IsAおよびSIObject::IsAメソッドが用意されており、まったく同じsiClassID定数値を取ります。
Boolean SIObject.IsClassOf( siClassID ); |
oBoolean = SIObject.IsClassOf( ClassID ); |
パラメータ | タイプ | 説明 |
---|---|---|
ClassID | siClassID | 比較対象のクラシックID |
// // Demonstrates how to test an object for its implementation classes // var oModel = ActiveSceneRoot.AddModel(); Application.LogMessage( "Is object a model: " + oModel.IsClassOf(siModelID) ); Application.LogMessage( "Is object an x3dobject: " + oModel.IsClassOf(siX3DObjectID) ); Application.LogMessage( "Is object a scene item: " + oModel.IsClassOf(siSceneItemID) ); Application.LogMessage( "Is object a project item: " + oModel.IsClassOf(siProjectItemID) ); Application.LogMessage( "Is object an siobject: " + oModel.IsClassOf(siSIObjectID) ); Application.LogMessage( "Is object a null: " + oModel.IsClassOf(siNullID) ); // Expected result: //INFO : "Is object a model: True" //INFO : "Is object an x3dobject: True" //INFO : "Is object a scene item: True" //INFO : "Is object a project item: True" //INFO : "Is object an siobject: True" //INFO : "Is object a null: False" |
/* The SIObject.IsClassOf() method can be very useful in determining whether the selection contains a 3DObject. */ newscene(null, false); CreateModel(null, null, null, null); Application.LogMessage( "Is the selected "+selection(0).name+" object a 3dobject? " + selection(0).IsClassOf(siX3DObjectID) ); CreatePrim("Sphere", "MeshSurface", null, null); var obj = selection(0); Application.LogMessage( "Is the selected "+selection(0).name+" object a 3dobject? " + selection(0).IsClassOf(siX3DObjectID) ); SelectGeometryComponents("sphere.pnt[1,6-8,14,15,22,29,35,36,40-43,47-50,54-LAST]"); CreateCluster(null); Application.LogMessage( "Is the selected "+selection(0).name+" object a 3dobject? " + selection(0).IsClassOf(siX3DObjectID) ); // Expected result: //INFO : Is the selected Model object a 3dobject? true //INFO : Is the selected sphere object a 3dobject? true //INFO : Is the selected Point object a 3dobject? false |