オブジェクト範囲と図面範囲を表示する(.NET)

オブジェクト範囲または図面範囲は、最も外側のオブジェクトが表示される境界を定義する、または現在の空間の範囲によって決まる領域を定義するために使用されます。

現在の空間のオブジェクト範囲を計算する

現在の空間のオブジェクト範囲にアクセスするには、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 および LimmaxPlimmin および Plimmax プロパティを使用します。現在の空間の範囲を定義する点が返されたら、上記の式を使用して新しいビューの幅、高さ、中心点を計算できます。

現在の空間のオブジェクト範囲および範囲に合わせて拡大表示する

このサンプル コードは、「現在のビューを操作する」で定義されているズーム プロシージャを使用して現在の空間のオブジェクト範囲または範囲を表示する方法を説明します。

ズーム プロシージャには、全部で 4 つの値が渡されますが、最初の 2 つの値が表示する領域の下限および上限となります。3 つ目の値は、新しい 3D ポイントとして定義され、プロシージャでは無視されます。最後の値は、図面ウィンドウ全体を覆い尽くさないようにするため、図面のイメージ サイズを変更するために使用されます。

VB.NET

<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

C#

[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);
}

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

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