SetControlPoint Method (ActiveX)

Sets the control point of the spline at a given index.

Supported platforms: Windows only

Signature

VBA:

object.SetControlPoint Index, Value
object

Type: Spline

The object this method applies to.

Index

Access: Input-only

Type: Long

The index location of the control point you wish to set. The first control point is index 0.

Value

Access: Input-only

Type: Variant (three-element array of doubles)

The 3D WCS coordinates specifying the control point for the spline at the given index location.

Return Value (RetVal)

No return value.

Remarks

No additional remarks.

Examples

VBA:

Sub Example_SetControlPoint()
    ' This example creates a spline object in model space.
    ' It then finds the coordinates of the first control point
    ' and changes that value.

    ' Create the spline
    Dim splineObj As AcadSpline
    Dim startTan(0 To 2) As Double
    Dim endTan(0 To 2) As Double
    Dim fitPoints(0 To 8) As Double
    
    startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0
    endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0
    fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0
    fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0
    fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0
    Set splineObj = ThisDrawing.ModelSpace.AddSpline(fitPoints, startTan, endTan)
    ZoomAll
    
    ' Display the coordinates of the first control point
    Dim controlPoint As Variant
    controlPoint = splineObj.GetControlPoint(0)
    MsgBox "Control point 1 is at " & controlPoint(0) & ", " & controlPoint(1) & ", " & controlPoint(2), , "SetControlPoint Example"
    
    ' Change the coordinates of the first fit point
    controlPoint(0) = 0: controlPoint(1) = 3: controlPoint(2) = 0
    splineObj.SetControlPoint 0, controlPoint
    splineObj.Update
    MsgBox "Control point 1 is now at " & controlPoint(0) & ", " & controlPoint(1) & ", " & controlPoint(2), , "SetControlPoint Example"
    
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_SetControlPoint()
    ;; This example creates a spline object in model space.
    ;; It then finds the coordinates of the first control point
    ;; and changes that value.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; Create the spline
    (setq startTan (vlax-3d-point 0.5 0.5 0)
          endTan (vlax-3d-point 0.5 0.5 0)
          fitPoints (vlax-make-safearray vlax-vbDouble '(0 . 8)))
    (vlax-safearray-fill fitPoints '(1 1 0
                                     5 5 0
                                     10 0 0
                                    )
    )

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq splineObj (vla-AddSpline modelSpace fitPoints startTan endTan))
    (vla-ZoomAll acadObj)
    
    ;; Display the coordinates of the first control point
    (setq controlPoint (vlax-safearray->list (vlax-variant-value (vla-GetControlPoint splineObj 0))))
    (alert (strcat "Control point 1 is at " (rtos (nth 0 controlPoint) 2) ", " (rtos (nth 1 controlPoint) 2) ", " (rtos (nth 2 controlPoint) 2)))
    
    ;; Change the coordinate of the first fit point
    (setq controlPoint (vlax-3d-point 0 3 0))
    (vla-SetControlPoint splineObj 0 controlPoint)
    (vla-Update splineObj)
    (setq controlPoint (vlax-safearray->list (vlax-variant-value (vla-GetControlPoint splineObj 0))))
    (alert (strcat "Control point 1 is now at " (rtos (nth 0 controlPoint) 2) ", " (rtos (nth 1 controlPoint) 2) ", " (rtos (nth 2 controlPoint) 2)))
)