浮動ビューポート(.NET)

ペーパー空間から、モデルを編集することはできません。Viewport オブジェクト内のモデルにアクセスするには、Editor オブジェクトの SwitchToModelSpace および SwitchToPaperSpace メンバー メソッドを使用して、ペーパー空間からモデル空間に切り替えます。その結果、レイアウト全体を表示したまま、モデルを編集することができます。ViewportTableRecord オブジェクトと同じように、Viewport オブジェクトで編集やビューの変更ができるようになります。

さらに、各ビューポートをより細かくコントロールすることができます。たとえば、あるビューポートの画層を、他のビューポートは変更せずにフリーズまたは解凍することができます。ビューポート内のジオメトリの表示と非表示を切り替えることができます。また、ビューポート間でビューを合わせたり、ビューのレイアウト全体との相対尺度を設定したりできます。

下の図は、ペーパー空間で 1 つのモデルの複数のビューがどのように表示されるかを示しています。各ペーパー空間のイメージは、異なるビューの Viewport オブジェクトを表します。1 つのビューでは、寸法の画層がフリーズされます。タイトル ブロック、境界、注釈は、ペーパー空間に描画されますが、モデル空間ビューでは表示されないことに注意してください。また、ビューポートの境界を含む画層はフリーズされます。

Viewport オブジェクトを操作しているときは、モデル空間またはペーパー空間で作業できます。モデル空間で作業しているかどうかは、システム変数 TILEMODE および CVPORT の現在の値を調べることで判別できます。次の表では、TILEMODE および CVPORT の現在の値に基づいて作業している空間とレイアウトを分類します。TILEMODE が 0 で CVPORT が 2 以外の値の場合は、ペーパー空間で作業しています。TILEMODE が 0 で CVPORT が 2 の場合は、モデル空間で作業しています。TILEMODE が 1 の場合は、モデル レイアウトのモデル空間で作業しています。

現在の空間

TILEMODE

CVPORT

状態

0

2 以外

モデル以外のレイアウトがアクティブであり、ペーパー空間で作業しています。

0

2

モデル以外のレイアウトがアクティブであり、浮動ビューポートで作業しています。

1

任意の値

モデル レイアウトがアクティブになっています。

注: レイアウトでモデル空間に切り替える前に、レイアウト上の少なくとも 1 つの Viewport オブジェクトの On プロパティを TRUE に設定する必要があります。

ペーパー空間では、ペーパー空間のユーザ座標系(UCS)アイコンがグラフィックス領域の左下コーナーに表示されます。クロスヘアは、ペーパー空間のレイアウト領域(ビューポートでのビューではありません)が編集可能であることを示します。

モデル空間とペーパー空間を切り替えるには

次の例では、モデル空間とペーパー空間を切り替える方法を示します。

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("ToggleSpace")> _
Public Sub ToggleSpace()
  '' Get the current document
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
 
  '' Get the current values of CVPORT and TILEMODE
  Dim nCvports As Integer = Application.GetSystemVariable("CVPORT")
  Dim nTilemode As Integer = Application.GetSystemVariable("TILEMODE")
 
  '' Check to see if the Model layout is active, TILEMODE is 1 when
  '' the Model layout is active
  If nTilemode = 0 Then
      '' Check to see if Model space is active in a viewport,
      '' CVPORT is 2 if Model space is active 
      If nCvports = 2 Then
          acDoc.Editor.SwitchToPaperSpace()
      Else
          acDoc.Editor.SwitchToModelSpace()
      End If
  Else
      '' Switch to the previous Paper space layout
      Application.SetSystemVariable("TILEMODE", 0)
  End If
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
 
[CommandMethod("ToggleSpace")]
public static void ToggleSpace()
{
  // Get the current document
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
 
  // Get the current values of CVPORT and TILEMODE
  object oCvports = Application.GetSystemVariable("CVPORT");
  object oTilemode = Application.GetSystemVariable("TILEMODE");
 
  // Check to see if the Model layout is active, TILEMODE is 1 when
  // the Model layout is active
  if (System.Convert.ToInt16(oTilemode) == 0)
  {
      // Check to see if Model space is active in a viewport,
      // CVPORT is 2 if Model space is active 
      if (System.Convert.ToInt16(oCvports) == 2)
      {
          acDoc.Editor.SwitchToPaperSpace();
      }
      else
      {
          acDoc.Editor.SwitchToModelSpace();
      }
  }
  else
  {
      // Switch to the previous Paper space layout
      Application.SetSystemVariable("TILEMODE", 0);
  }
}

VBA/ActiveX コード リファレンス

Public Sub ToggleSpace()
    ' Check to see if the Model layout is active
    If ThisDrawing.ActiveLayout.Name <> "Model" Then
        ' Check to see if Model space is active
        If ThisDrawing.MSpace = True Then
            ThisDrawing.MSpace = False
        Else
            ThisDrawing.MSpace = True
        End If
    Else
        ' Switch to the previous Paper space layout
        ThisDrawing.ActiveSpace = acPaperSpace
    End If
End Sub