ペーパー空間から、モデルを編集することはできません。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 |
任意の値 |
モデル レイアウトがアクティブになっています。 |
ペーパー空間では、ペーパー空間のユーザ座標系(UCS)アイコンがグラフィックス領域の左下コーナーに表示されます。クロスヘアは、ペーパー空間のレイアウト領域(ビューポートでのビューではありません)が編集可能であることを示します。
次の例では、モデル空間とペーパー空間を切り替える方法を示します。
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
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); } }
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