## CurveDirectManip

### Introduced

v5.0

### Description

Manipulates a point of a curve (isopoint) to control its position or one of its tangents.

### Scripting Syntax

    oReturn = CurveDirectManip( [SubComp], [ImmediateMode], [Mode], [X], [Y], [Z] );

### Return Value

An XSICollection of Operator objects.

### Parameters

Parameter | Type | Description
--- | --- | ---
SubComp | String | A curve isopoint as Components. Default Value: Current selection
ImmediateMode | siOperationMode | Specifies whether or not the operator should be immediately frozen. Default Value: siPersistentOperation
Mode | siCurveIsopointManipMode | Mode of manipulation Default Value: siCurveIsopointPositionManipMode
X | Double | Displacement along the X axis of the object frame. For a position modification the new isopoint position will be: posX = posX + X For a tangent modification the new tangent will be: tangentX = tangentX + X Default Value: 0.000000
Y | Double | Displacement along the Y axis of the object frame. For a position modification the new isopoint position will be: posY = posY + Y For a tangent modification the new tangent will be: tangentY = tangentY + Y Default Value: 0.000000
Z | Double | Displacement along the Z axis of the object frame. For a position modification the new isopoint position will be: posZ = posZ + Z For a tangent modification the new tangent will be: tangentZ = tangentZ + Z Default Value: 0.000000

### Examples

#### 1. VBScript Example

    '
    '       This example creates a m-shape cubic curve, converts the middle knot to Bezier, then controls
    '       its position, its forward tangent and finally its backward tangent so the end result is
    '       a nice m shape consisting of two adjacent identical arcs.
    '
    SICreateCurve "crvlist", 3, 0
    SIAddPointOnCurveAtEnd "crvlist", -4.00195694716243, -2.00677710843373, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", -4.00195694716243, -9.78915662650515E-03, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", -2.00587084148728, 1.98719879518072, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", -9.78473581213335E-03, -2.00677710843373, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", 1.98630136986301, 1.98719879518072, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", 3.98238747553816, -9.78915662650581E-03, 0, False, 0
    SIAddPointOnCurveAtEnd "crvlist", 3.98238747553816, -2.00677710843373, 0, False, 0
    SetCurveKnotMultiplicity "crvlist.knot[2]", 3, siPersistentOperation
    CurveDirectManip "crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointPositionAndTangentsManipMode, 1.66533453693773E-16, -1.33132530120482
    CurveDirectManip "crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointFwdTangentManipMode, -1.99608610567515, 5.99096385542169
    CurveDirectManip "crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointBwdTangentManipMode, 1.99608610567515, 5.99096385542169

#### 2. JScript Example

    /*
            This example creates a m-shape cubic curve, converts the middle knot to Bezier, then controls
            its position, its forward tangent and finally its backward tangent so the end result is
            a nice m shape consisting of two adjacent identical arcs.
    */
    SICreateCurve("crvlist", 3, 0);
    SIAddPointOnCurveAtEnd("crvlist", -4.00195694716243, -2.00677710843373, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", -4.00195694716243, -9.78915662650515E-03, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", -2.00587084148728, 1.98719879518072, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", -9.78473581213335E-03, -2.00677710843373, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", 1.98630136986301, 1.98719879518072, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", 3.98238747553816, -9.78915662650581E-03, 0, false, 0, null);
    SIAddPointOnCurveAtEnd("crvlist", 3.98238747553816, -2.00677710843373, 0, false, 0, null);
    SetCurveKnotMultiplicity("crvlist.knot[2]", 3, siPersistentOperation);
    CurveDirectManip("crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointPositionAndTangentsManipMode, 1.66533453693773E-16, -1.33132530120482, null);
    CurveDirectManip("crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointFwdTangentManipMode, -1.99608610567515, 5.99096385542169, null);
    CurveDirectManip("crvlist.isopnt[(0,0.500)]", siPersistentOperation, siCurveIsopointBwdTangentManipMode, 1.99608610567515, 5.99096385542169, null);