ApplyCns

カテゴリ

constraint

詳細

コンストレイント オブジェクトに基づいて、1 つまたは複数のオブジェクトに拘束を適用します。 たとえば、他のオブジェクトの位置を元に、あるオブジェクトの位置を拘束できます。 拘束を作成したら、被コンストレイント オブジェクトに影響のある値を変更することはできません。コンストレイント オブジェクトの値のみを変更できます。

たとえば、2 つのオブジェクト間に位置コンストレイントを適用した場合、XYZ 位置を変更できるのはコンストレイント オブジェクトのみです。 言い換えると、コンストレイント オブジェクトの値を変更すると、被コンストレイント オブジェクトの対応する値が自動的に変更されます。

スクリプト構文

oReturn = ApplyCns( PresetObj, [ConstrainedObj], [ConstrainingObj], [Compensation] );

戻り値

Constraint オブジェクトを含む XSICollection を戻します。

パラメータ

パラメータ タイプ 詳細
PresetObj 文字列 またはプリセット オブジェクト(「SIGetPreset」を参照) コンストレイントプリセット。

警告: Linux のプリセット名では、大文字と小文字が区別されます。
ConstrainedObj 文字列 拘束されるオブジェクトのリスト。 変数を渡すと、コマンドは拘束されるオブジェクトの XSICollection を戻します。

デフォルト値: 選択されたオブジェクト

ConstrainingObj 文字列 コンストレイント オブジェクトのリスト。 変数を渡すと、コマンドは拘束されるオブジェクトの XSICollection を戻します。

デフォルト値:ユーザが指定します。

Compensation ブール 補正をオンにする場合は True

デフォルト値: False

VBScript の例

'
' This example creates a little planetary scene and applies 2 constraints
' from the planet to the ring: a Position and a Scaling constraint. Then
' it removes only the Scaling constraint by using the RemoveCnsType command
' and verifies this by printing out a list of constraints on each object
' before and after removing the constraints.
'
' Create a planet that will serve as the constraining object 
set oPlanet = CreatePrim( "Sphere", "NurbsSurface", "Planet" )
' Create a moon to be constrained by the planet and scale it 
set oMoon = CreatePrim( "Sphere", "NurbsSurface", "Moon" )
Translate oMoon, -6, 4, -5, siRelative, siView, siObj, siXYZ
Scale oMoon, 0.15, 0.15, 0.15, siAbsolute, siParent, siObj, siXYZ
' Create a ring to be constrained by the planet and scale it
set oRing = CreatePrim( "Disc", "NurbsSurface", "Ring" )
Scale oRing, 2.3, 1, 2.3, siAbsolute, siParent, siObj, siXYZ
' Check to see if any constraints are currently set 
getCnsInfo oPlanet
getCnsInfo oMoon
getCnsInfo oRing
' Apply a Position constraint on the ring and the moon from the planet.
' (The small sphere and the disc depend on the position of the larger sphere.) 
' Notice that you have to pass the name of the object instead of its object 
' variable with this command because the command changes that variable to a 
' different type
ApplyCns "Position", oMoon.Name & "," & oRing.Name, "Planet", true
' Check to see which constraints are currently set 
getCnsInfo oPlanet
getCnsInfo oMoon
getCnsInfo oRing
' Display the constraint relationship in all the default views and
' the default camera view. This is the equivalent of turning on 
' "Relation" and "Relation Info" in the view visibility options.
SetValue "Views.*.*.camvis.*constraint*", True 
SetValue "Camera.camvis.*constraint*", True
' This function just saves us time and typing
function getCnsInfo( in_constrained_obj )
        set oFoundCns = in_constrained_obj.Kinematics.Constraints
        if oFoundCns.Count > 0 then
                LogMessage "Found the following constraints on the " & in_constrained_obj & ":"
                for each c in oFoundCns
                        LogMessage vbTab & c.Name
                next
        else
                LogMessage "No constraints found on " & in_constrained_obj
        end if
end function
' Output of the above script:
' 
' ...before applying the constraint:
'INFO : "No constraints found on Planet"
'INFO : "No constraints found on Moon"
'INFO : "No constraints found on Ring"
' 
' ...after applying the constraint:
'INFO : "No constraints found on Planet"
'INFO : "Found the following constraints on the Moon:"
'INFO : "       Position Cns"
'INFO : "Found the following constraints on the Ring:"
'INFO : "       Position Cns"

関連項目

RemoveAllCns RemoveCns SIApplyConstraint