オブジェクト範囲または図面範囲は、最も外側のオブジェクトが表示される境界を定義する、または現在の空間の範囲によって決まる領域を定義するために使用されます。
現在の空間のオブジェクト範囲にアクセスするには、Database オブジェクトから次のプロパティを使用します。
現在の空間のオブジェクト範囲を取得したら、現在のビューの Width および Height プロパティの新しい値を計算できます。ビューの新しい幅は、次の式を使用して計算されます。
dWidth = MaxPoint.X - MinPoint.X
ビューの新しい高さは、次の式を使用して計算されます。
dHeight = MaxPoint.Y - MinPoint.Y
ビューの幅と高さの計算後に、ビューの中心点を計算できます。ビューの中心点は、次の式を使用して取得できます。
dCenterX = (MaxPoint.X + MinPoint.X) * 0.5 dCenterY = (MaxPoint.Y + MinPoint.Y) * 0.5
現在の空間の範囲に基づいて図面の表示を変更するには、Database オブジェクトの Limmin および Limmax、Plimmin および Plimmax プロパティを使用します。現在の空間の範囲を定義する点が返されたら、上記の式を使用して新しいビューの幅、高さ、中心点を計算できます。
このサンプル コードは、「現在のビューを操作する」で定義されているズーム プロシージャを使用して現在の空間のオブジェクト範囲または範囲を表示する方法を説明します。
ズーム プロシージャには、全部で 4 つの値が渡されますが、最初の 2 つの値が表示する領域の下限および上限となります。3 つ目の値は、新しい 3D ポイントとして定義され、プロシージャでは無視されます。最後の値は、図面ウィンドウ全体を覆い尽くさないようにするため、図面のイメージ サイズを変更するために使用されます。
<CommandMethod("ZoomExtents")> _
Public Sub ZoomExtents()
'' Zoom to the extents of the current space
Zoom(New Point3d(), New Point3d(), New Point3d(), 1.01075)
End Sub
<CommandMethod("ZoomLimits")> _
Public Sub ZoomLimits()
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
'' Zoom to the limits of Model space
Zoom(New Point3d(acCurDb.Limmin.X, acCurDb.Limmin.Y, 0), _
New Point3d(acCurDb.Limmax.X, acCurDb.Limmax.Y, 0), _
New Point3d(), 1)
End Sub
[CommandMethod("ZoomExtents")]
static public void ZoomExtents()
{
// Zoom to the extents of the current space
Zoom(new Point3d(), new Point3d(), new Point3d(), 1.01075);
}
[CommandMethod("ZoomLimits")]
static public void ZoomLimits()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
// Zoom to the limits of Model space
Zoom(new Point3d(acCurDb.Limmin.X, acCurDb.Limmin.Y, 0),
new Point3d(acCurDb.Limmax.X, acCurDb.Limmax.Y, 0),
new Point3d(), 1);
}
Sub ZoomExtents()
ThisDrawing.Application.ZoomExtents
End Sub
Sub ZoomLimits()
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
point1(0) = ThisDrawing.GetVariable("LIMMIN")(0)
point1(1) = ThisDrawing.GetVariable("LIMMIN")(1)
point1(2) = 0#
point2(0) = ThisDrawing.GetVariable("LIMMAX")(0)
point2(1) = ThisDrawing.GetVariable("LIMMAX")(1)
point2(2) = 0#
ThisDrawing.Application.ZoomWindow point1, point2
End Sub