SnapBasePoint Property (ActiveX)

Specifies the snap base point for the viewport.

Supported platforms: Windows only

Signature

VBA:

object.SnapBasePoint
object

Type: PViewport, Viewport

The objects this property applies to.

Property Value

Read-only: No

Type: Variant (two-element array of doubles)

A 2D WCS coordinate representing the snap base point for the viewport.

Remarks

You cannot change the snap base point for the active paper space viewport.

Changes to this property are not reflected in the display until a call to either the Update or Regen method is performed.

Note: The value of this property is stored in the SNAPBASE system variable.

Examples

VBA:

Sub Example_SnapBasePoint()
    ' This example changes the snap base point for a
    ' model space and paper space viewport.
    
    ' Create a new model space viewport
    Dim viewportObj As AcadViewport
    Set viewportObj = ThisDrawing.Viewports.Add("NewViewport")
    
    ' Find the current snap base point
    Dim currSnapPnt As Variant
    currSnapPnt = viewportObj.SnapBasePoint
    MsgBox "The current model space snap base point is " & viewportObj.SnapBasePoint(0) & ", " & viewportObj.SnapBasePoint(1), , "SnapBasePoint Example"
    
    ' Change the snap base point
    Dim newSnapPnt(0 To 1) As Double
    newSnapPnt(0) = 5#: newSnapPnt(1) = 5#
    viewportObj.SnapBasePoint = newSnapPnt
    MsgBox "The new model space snap base point is " & viewportObj.SnapBasePoint(0) & ", " & viewportObj.SnapBasePoint(1), , "SnapBasePoint Example"
    
    ' Create a new paper space viewport
    Dim pviewportObj As AcadPViewport
    Dim center(0 To 2) As Double
    Dim width As Double
    Dim height As Double
    
    center(0) = 3: center(1) = 3: center(2) = 0
    width = 40
    height = 40
    ThisDrawing.ActiveSpace = acPaperSpace
    Set pviewportObj = ThisDrawing.PaperSpace.AddPViewport(center, width, height)
    
    ' Find the current snap base point
    currSnapPnt = pviewportObj.SnapBasePoint
    MsgBox "The current paper space snap base point is " & pviewportObj.SnapBasePoint(0) & ", " & pviewportObj.SnapBasePoint(1), , "SnapBasePoint Example"
    
    ' Change the snap base point
    newSnapPnt(0) = 2#: newSnapPnt(1) = 2#
    pviewportObj.SnapBasePoint = newSnapPnt
    MsgBox "The new paper space snap base point is " & pviewportObj.SnapBasePoint(0) & ", " & pviewportObj.SnapBasePoint(1), , "SnapBasePoint Example"

End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_SnapBasePoint()
    ;; This example changes the snap base point for a
    ;; model space and paper space viewport.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; Create a new model space viewport
    (setq viewportObj (vla-Add (vla-get-Viewports doc) "NewViewport"))
    
    ;; Find the current snap base point
    (setq currSnapPnt (vlax-variant-value (vla-get-SnapBasePoint viewportObj)))
    (alert (strcat "The current model space snap base point is " (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                                                                 (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))

    ;; Change the snap base point
    (setq newSnapPnt (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill newSnapPnt '(5 5)) 
    (vla-put-SnapBasePoint viewportObj newSnapPnt)

    (alert (strcat "The new model space snap base point is " (rtos (vlax-safearray-get-element newSnapPnt 0) 2) ", "
                                                             (rtos (vlax-safearray-get-element newSnapPnt 1) 2)))

    ;; Create a new paper space viewport
    (setq center (vlax-3d-point 3 3 0)
          width 40
	         height 40)

    (vla-put-ActiveSpace doc acPaperSpace)
    (setq paperSpace (vla-get-PaperSpace doc))
    (setq pviewportObj (vla-AddPViewport paperSpace center width height))
    
    ;; Find the current snap base point
    (setq currSnapPnt (vlax-variant-value (vla-get-SnapBasePoint pviewportObj)))
    (alert (strcat "The current paper space snap base point is " (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                                                                 (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))
    
    ;; Change the snap base point
    (setq newSnapPnt (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill newSnapPnt '(2 2)) 
    (vla-put-SnapBasePoint pviewportObj newSnapPnt)

    (alert (strcat "The new paper space snap base point is " (rtos (vlax-safearray-get-element newSnapPnt 0) 2) ", "
                                                             (rtos (vlax-safearray-get-element newSnapPnt 1) 2)))
)