SetWindowToPlot Method (ActiveX)

Sets the coordinates that define the portion of the layout to plot.

Supported platforms: Windows only

Signature

VBA:

object.SetWindowToPlot LowerLeft, UpperRight
object

Type: Layout, PlotConfiguration

The objects this method applies to.

LowerLeft

Access: Input-only

Type: Variant (two-element array of doubles)

The X and Y values for the lower-left window.

UpperRight

Access: Input-only

Type: Variant (two-element array of doubles)

The X and Y values for the upper-right window.

Return Value (RetVal)

No return value.

Remarks

The window coordinates are taken from the origin.

The units for these values are specified by the PaperUnits property.

The PlotType property must be set to acWindow for these coordinates to be used for the plot.

Examples

VBA:

Sub Example_SetWindowToPlot()
    ' This example allows the user to define an area in the current layout
    ' and displays a plot preview of the defined area.
    '
    ' * Note: You have to exit the
    ' plot preview before the VBA example will stop and control will be returned

    AppActivate ThisDrawing.Application.Caption

    Dim point1 As Variant, point2 As Variant
    
    ' Get first point in window
    point1 = ThisDrawing.Utility.GetPoint(, "Click the lower-left of the window to plot.")
    ReDim Preserve point1(0 To 1)   ' Change this to a 2D array by removing the Z position
    
    ' Get second point in window
    point2 = ThisDrawing.Utility.GetPoint(, "Click the upper-right of the window to plot.")
    ReDim Preserve point2(0 To 1)   ' Change this to a 2D array by removing the Z position
    
    ' Send information about window to current layout
    ThisDrawing.ActiveLayout.SetWindowToPlot point1, point2
    
    ' Read back window information
    ThisDrawing.ActiveLayout.GetWindowToPlot point1, point2
    
    MsgBox "Press any key to plot the following window:" & vbCrLf & vbCrLf & _
           "Lower Left: " & point1(0) & ", " & point1(1) & vbCrLf & _
           "Upper Right: " & point2(0) & ", " & point2(1)
    
    ' Be sure to plot a view, not some other plot style
    ThisDrawing.ActiveLayout.PlotType = acWindow
    
    ' Send Plot To Window
    ThisDrawing.ActiveLayout.ConfigName = "DWG to PDF.pc3"
    ThisDrawing.Plot.DisplayPlotPreview acFullPreview
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_SetWindowToPlot()
    ;; This example allows the user to define an area in the current layout to plot
    ;; and displays a plot preview of the defined area.
    ;;
    ;; * Note: You will have to exit the plot preview
    ;;  before the VBA example will stop and control will be returned
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; Get first point in window
    (setq point1 (vlax-variant-value (vla-GetPoint (vla-get-Utility doc) nil "Click the lower-left of the window to plot.")))

    ;; Change this to a 2D array by removing the Z position
    (setq pointTemp1 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-put-element pointTemp1 0 (vlax-safearray-get-element point1 0))
    (vlax-safearray-put-element pointTemp1 1 (vlax-safearray-get-element point1 1))
    
    ;; Get second point in window
    (setq point2 (vlax-variant-value (vla-GetCorner (vla-get-Utility doc) point1 "Click the upper-right of the window to plot.")))

    ;; Change this to a 2D array by removing the Z position
    (setq pointTemp2 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-put-element pointTemp2 0 (vlax-safearray-get-element point2 0))
    (vlax-safearray-put-element pointTemp2 1 (vlax-safearray-get-element point2 1))
    
    ;; Send information about window to current layout
    (vla-SetWindowToPlot (vla-get-ActiveLayout doc) pointTemp1 pointTemp2)
    
    ;; Read back window information
    (vla-GetWindowToPlot (vla-get-ActiveLayout doc) 'point1 'point2)

    (setq point1 (vlax-safearray->list point1)
	         point2 (vlax-safearray->list point2))
  
    (alert (strcat "Press any key to plot the following window:"
                   "\nLower Left: " (rtos (nth 0 point1) 2) ", " (rtos (nth 1 point1) 2)
                   "\nUpper Right: " (rtos (nth 0 point2) 2) ", " (rtos (nth 1 point2) 2)))
    
    ;; Make sure the instruction is to plot a view, not some other plot style
    (vla-put-PlotType (vla-get-ActiveLayout doc) acWindow)
    
    ;; Send Plot To Window - A plot device must be set before a preview can be created
    (vla-put-ConfigName (vla-get-ActiveLayout doc) "DWG to PDF.pc3")
    (vla-DisplayPlotPreview (vla-get-Plot doc) acFullPreview)
)