現在のビューポート内で点を入力したり、オブジェクトを選択できます。ビューポートを現在のビューポートにするには、ActiveViewport プロパティを使用します。
既存のビューポートの中から、1 つビューポートを選択することができます。それにはまず、Name プロパティを使って、希望のビューポートがある環境設定の名前を確認します。さらに、ビューポート環境設定が分割されている場合、その設定上の各ビューポートは LowerLeftCorner プロパティと UpperRightCorner プロパティで識別できます。
LowerLeftCorner プロパティと UpperRightCorner プロパティは、画面上でビューポートのグラフィックスの位置を示します。これらのプロパティを、次のように定義します(例として 4 分割を示します)。
この例では
この例では、ビューポートを 4 つのウィンドウに分割します。次に図面内のすべてのビューポートで繰り返しビューポート名と各ビューポートの左下と右上のコーナーを表示します。
(vl-load-com) (defun c:Ch3_IteratingViewportWindows() (setq acadObj (vlax-get-acad-object) doc (vla-get-ActiveDocument acadObj)) ;; Create a new viewport and make it active (setq viewportsCollection (vla-get-Viewports doc) vportObj (vla-Add viewportsCollection "TEST_VIEWPORT")) (vla-put-ActiveViewport doc vportObj) ;; Split vport into 4 windows (vla-Split vportObj acViewport4) ;; Iterate through the viewports, ;; highlighting each viewport and displaying ;; the upper right and lower left corners ;; for each. (vlax-for vport viewportsCollection (vla-put-ActiveViewport doc vport) (setq LLCorner (vlax-safearray->list (vlax-variant-value (vla-get-LowerLeftCorner vport))) URCorner (vlax-safearray->list (vlax-variant-value (vla-get-UpperRightCorner vport)))) (alert (strcat "Viewport: " (vla-get-Name vport) " is now active." "\nLower left corner: " (rtos (nth 0 LLCorner) 2) ", " (rtos (nth 1 LLCorner) 2) "\nUpper right corner: " (rtos (nth 0 URCorner) 2) ", " (rtos (nth 1 URCorner) 2))) ) )
Sub Ch3_IteratingViewportWindows() ' Create a new viewport and make it active Dim vportObj As AcadViewport Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT") ThisDrawing.ActiveViewport = vportObj ' Split vport into 4 windows vportObj.Split acViewport4 ' Iterate through the viewports, ' highlighting each viewport and displaying ' the upper right and lower left corners ' for each. Dim vport As AcadViewport Dim LLCorner As Variant Dim URCorner As Variant For Each vport In ThisDrawing.Viewports ThisDrawing.ActiveViewport = vport LLCorner = vport.LowerLeftCorner URCorner = vport.UpperRightCorner MsgBox "Viewport: " & vport.Name & " is now active." & _ vbCrLf & "Lower left corner: " & _ LLCorner(0) & ", " & LLCorner(1) & vbCrLf & _ "Upper right corner: " & _ URCorner(0) & ", " & URCorner(1) Next vport End Sub