StartTangent Property (ActiveX)

Specifies the start tangent for the spline.

Supported platforms: Windows only

Signature

VBA:

object.StartTangent
object

Type: Spline

The object this property applies to.

Property Value

Read-only: No

Type: Variant (three-element array of doubles)

A directional vector representing the start tangent of the spline.

Remarks

When a spline is elevated, it is converted from an interpolated (fit) spline to a control point spline. This means that after elevation, the spline no longer has fit tangents, and the StartTangent and EndTangent properties for the spline are no longer accessible. The only way to edit a control point spline is through the ControlPoints property, or the SetControlPoint or GetControlPoint methods.

Examples

VBA:

Sub Example_StartTangent()
    ' This example creates a spline. It then queries the current setting for
    ' the StartTangent, and then changes the StartTangent to a new 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
    Dim msg As String
    
    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)
    
    ThisDrawing.Regen True
    GoSub GETPOINTS
    MsgBox "The StartTangent for the spline is  " & msg, vbInformation, "StartTangent Example"

    Dim newTan(0 To 2) As Double
    newTan(0) = 1.5: newTan(1) = 0.707: newTan(2) = 2
    
    ' Change the start tangent of Spline to (1.5, 0.707, 2)
    splineObj.EndTangent = newTan
    
    ThisDrawing.Regen True
    GoSub GETPOINTS
    MsgBox "The StartTangent has been changed to " & msg, vbInformation, "StartTangent Example"

    Exit Sub

GETPOINTS:
    Dim count As Integer
    msg = ""
    ' Get the coordinates from the start tangent
    For count = 0 To 2
        msg = msg & Format(splineObj.StartTangent(count), "0.###") & ", "
    Next
    msg = VBA.Left(msg, Len(msg) - 2)
    Return
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_StartTangent()
    ;; This example creates a spline. It then queries the current setting for
    ;; the StartTangent, and then changes the StartTangent to a new 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
				                                )
    )
    
    ;; Create the spline
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq splineObj (vla-AddSpline modelSpace fitPoints startTan endTan))

    (vla-ZoomAll acadObj)

    (setq msg "")

    ;; Get the coordinates from the start tangent
    (setq startTangent (vlax-safearray->list (vlax-variant-value (vla-get-StartTangent splineObj))))
    (setq msg (strcat msg (rtos (nth 0 startTangent) 2 3) ","
		                        (rtos (nth 1 startTangent) 2 3) ","
		                        (rtos (nth 2 startTangent) 2 3)))

    (alert (strcat "The StartTangent for the spline is " msg))

    ;; Change the start tangent of Spline to (1.5,0.707,2)
    (setq newTan (vlax-3d-point 1.5 0.707 2))
    (vla-put-StartTangent splineObj newTan)

    (vla-Regen doc :vlax-true)

    (setq msg "")
    (setq startTangent (vlax-safearray->list (vlax-variant-value (vla-get-StartTangent splineObj))))
    (setq msg (strcat msg (rtos (nth 0 startTangent) 2 3) ","
		                        (rtos (nth 1 startTangent) 2 3) ","
		                        (rtos (nth 2 startTangent) 2 3)))

    (alert (strcat "The StartTangent has been changed to " msg))
)