ペーパー空間ビューポートは、AddPViewport メソッドを使用して作成します。
AddPViewport メソッドでは、新しいビューポートの中点、幅、高さを指定する必要があります。ビューポートの作成前に、ActiveSpace プロパティを使用して、ペーパー空間を現在の空間に設定します(通常は、TILEMODE を 0 に設定します)。
PViewport オブジェクトの作成後は、視線方向(Direction プロパティ)、パース ビューのレンズ長(LensLength プロパティ)、グリッド表示(GridOn プロパティ)など、ビュー自体のプロパティを設定することができます。また、画層(Layer プロパティ)、線種(Linetype プロパティ)、線種尺度(LinetypeScale プロパティ)など、ビューポート自体のプロパティもコントロールできます。
以下の例は、AutoCAD をペーパー空間へ切り替え、浮動ビューポートを作成し、ビューを設定して、ビューポートを有効にしています。
Sub Ch9_SwitchToPaperSpace() ' Set the active space to paper space ThisDrawing.ActiveSpace = acPaperSpace ' Create the paperspace viewport Dim newVport As AcadPViewport Dim center(0 To 2) As Double center(0) = 3.25 center(1) = 3 center(2) = 0 Set newVport = ThisDrawing.PaperSpace. _ AddPViewport(center, 6, 5) ' Change the view direction for the viewport Dim viewDir(0 To 2) As Double viewDir(0) = 1 viewDir(1) = 1 viewDir(2) = 1 newVport.Direction = viewDir ' Enable the viewport newVport.Display True ' Switch to model space ThisDrawing.MSpace = True ' Set newVport current ' (not always necessary but a good idea) ThisDrawing.ActivePViewport = newVport ' Zoom Extents in model space ZoomExtents ' Turn model space editing off ThisDrawing.MSpace = False ' ZoomExtents in paperspace ZoomExtents End Sub
上記のコードの順序は重要です。一般的に、AutoCAD コマンド ラインの処理手順と同じ順番で手順を実行する必要があります。ビューの定義とビューポートの有効化では、予想外の結果が生じる可能性があります。
ここでは、「浮動ビューポートを作成し、有効にする」の例を使って、4 つの浮動ビューポートを作成し、平面図、前面図、右側面図、およびアイソメ図の各ビューを設定してみます。これらの各ビューは、ペーパー空間に対して 1/2 の尺度で設定されています。次の例を実行する前に、3D ソリッド球を作成して、これらのビューポートで表示させてください。
Sub Ch9_FourPViewports() Dim topVport, frontVport As AcadPViewport Dim rightVport, isoVport As AcadPViewport Dim pt(0 To 2) As Double Dim viewDir(0 To 2) As Double ThisDrawing.ActiveSpace = acPaperSpace ThisDrawing.MSpace = True ' Take the existing PViewport and make it the topVport pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0 Set topVport = ThisDrawing.ActivePViewport 'No need to set Direction for top view topVport.center = pt topVport.width = 2.5 topVport.height = 2.5 topVport.Display True ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = topVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace 'Create and setup frontVport pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0 Set frontVport = ThisDrawing.PaperSpace. _ AddPViewport(pt, 2.5, 2.5) viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0 frontVport.direction = viewDir frontVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = frontVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace 'Create and setup rightVport pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0 Set rightVport = ThisDrawing.PaperSpace. _ AddPViewport(pt, 2.5, 2.5) viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0 rightVport.direction = viewDir rightVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = rightVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace 'Create and set up isoVport pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0 Set isoVport = ThisDrawing.PaperSpace. _ AddPViewport(pt, 2.5, 2.5) viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1 isoVport.direction = viewDir isoVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = isoVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace 'Finish: Perform a regen in all viewports ThisDrawing.Regen True End Sub