寸法および拘束

寸法と拘束

次のコード サンプルは、末尾付近で標準寸法と拘束要素を区別する方法を示しています。

コード領域 16-1: 標準寸法と拘束を区別

public void GetInfo_Dimension(Dimension dimension)
{
    string message = "Dimension : ";
    // Get Dimension name
    message += "\nDimension name is : " + dimension.Name;

    // Get Dimension Curve
    Autodesk.Revit.DB.Curve curve = dimension.Curve;
    if (curve != null && curve.IsBound)
    {
        // Get curve start point
        message += "\nCurve start point:(" + curve.GetEndPoint(0).X + ", "
                + curve.GetEndPoint(0).Y + ", " + curve.GetEndPoint(0).Z + ")";
        // Get curve end point
        message += "; Curve end point:(" + curve.GetEndPoint(1).X + ", "
                + curve.GetEndPoint(1).Y + ", " + curve.GetEndPoint(1).Z + ")";
    }

    // Get Dimension type name
    message += "\nDimension type name is : " + dimension.DimensionType.Name;

    // Get Dimension view name
    message += "\nDimension view name is : " + dimension.View.Name;

    // Get Dimension reference count
    message += "\nDimension references count is " + dimension.References.Size;

    if ((int)BuiltInCategory.OST_Dimensions == dimension.Category.Id.IntegerValue)
    {
        message += "\nDimension is a permanent dimension.";
    }
    else if ((int)BuiltInCategory.OST_Constraints == dimension.Category.Id.IntegerValue)
    {
        message += "\nDimension is a constraint element.";
    }


    TaskDialog.Show("Revit",message);
}

寸法

標準寸法には次の 5 つの種類があります。

  • 長さ寸法
  • 半径寸法
  • 直径寸法
  • 角度寸法
  • 弧長寸法

図 66: 標準寸法

すべての標準寸法の BuiltInCategory は OST_Dimensions です。API を使用して 4 つの寸法を区別する簡単な方法はありません。

半径寸法および直径寸法を除き、それぞれの寸法には寸法線が 1 つあります。寸法線は、常にバインド解除されている Dimension.Curve プロパティから使用できます。言い換えると、寸法線は始点と終点を持ちません。前の図に基づくと、次のようになります。

  • 長さ寸法には線分オブジェクトが返されます。
  • 半径寸法や角度寸法には円弧オブジェクトが返されます。
  • 半径寸法は null を返します。
  • 直径寸法は null を返します。

図 67: 寸法参照

前の図にあるように、寸法はジオメトリ参照を選択することによって作成されます。API ではジオメトリ参照は Reference クラスとして表されます。参照プロパティでは次の寸法参照を使用することができます。参照の詳細は、「ジオメトリ」セクションの「参照」を参照してください。

  • 半径寸法と直径寸法 - 曲線に対して 1 つの参照オブジェクトが返されます。
  • 角度寸法と弧長寸法 - 2 つの参照オブジェクトが返されます。
  • 長さ寸法 - 複数の参照オブジェクトが返されます。次の図では、長さ寸法に 5 つの参照オブジェクトがあります。

図 68: 長さ寸法の参照

寸法は、他の注釈要素と同様、ビュー固有の要素です。寸法はこれを追加したビューのみで表示されます。Dimension.View プロパティは固有のビューを返します。

拘束要素

カテゴリ拘束(BuitInCategory.OST_Constraints)のある寸法オブジェクトは次の 2 つの寸法関連の拘束を表します。

  • 長さ寸法拘束と半径寸法拘束
  • 均等拘束

次の図では、2 種類のロックされた拘束が長さ寸法と半径寸法に対応しています。アプリケーションでは、緑色の破線の付いたロック アイコンとして表示されます(緑色の破線は Dimension.Curve プロパティから使用できます)。長さ寸法拘束と半径寸法拘束の両方とも、Dimension.References プロパティからの 2 つの参照オブジェクトを返します。

図 69: 長さ寸法拘束と半径寸法拘束

拘束要素はビューに固有のものではなく、さまざまなビューで表示することができます。したがって、ビュー プロパティは常に null を返します。次の図では、前の図の拘束要素が 3D ビューで表示されています。

図 70: 3D ビューにおける長さ寸法拘束と半径寸法拘束

均等拘束は寸法に基づいていますが、Dimension クラスとして表すこともできます。API には、カテゴリや DimensionType を使用して、長さ寸法拘束と均等拘束を区別する直接的な方法はありません。均等拘束は 3 つ以上の参照を返しますが、長さ寸法拘束は 2 つ以上の参照を返します。

図 71: 均等拘束

注: 拘束要素がすべて Dimension クラスによって表されるわけではありませんが、すべて位置合わせ拘束などの拘束(OST_Constraints)カテゴリに属します。

指定点情報

指定点座標と指定点高さは SpotDimension クラスによって表され、カテゴリによって区別されます。標準寸法と同じように、指定点情報はビュー固有です。それぞれの指定点情報のタイプおよびカテゴリは次の表のとおりです。

表 35: 指定点情報のタイプとカテゴリ

タイプ

カテゴリ

指定点座標

OST_SpotCoordinates

指定点高さ

OST_SpotElevations

図 72: SpotCoordinates と SpotElevations

指定点情報が示す点座標を LocationPoint.Point プロパティから使用できるように、SpotDimension 位置を LocationPoint にダウンキャストすることができます。

  • SpotDimensions は寸法曲線を持たないため、Curve プロパティは常に null を返します。
  • SpotDimension References プロパティは、点を表す参照や、指定点情報によって参照されるエッジを 1 つ返します。
  • 文字やタグの表示スタイルをコントロールするには、SpotDimension と SpotDimensionType パラメータを修正します。

比較

次の表は、API におけるさまざまな種類の寸法と拘束を比較しています。

表 36: 寸法カテゴリの比較

寸法または拘束 寸法または拘束 API クラス BuiltInCategory 曲線 参照 ビュー 場所
標準寸法 長さ寸法 Dimension OST_Dimensions 線分 =2 特定のビュー null
標準寸法 半径寸法 Dimension OST_Dimensions NULL 1 特定のビュー null
標準寸法 直径寸法 Dimension OST_Dimensions NULL 1 特定のビュー null
標準寸法 角度寸法 Dimension OST_Dimensions 円弧 2 特定のビュー null
標準寸法 弧長寸法 Dimension OST_Dimensions 円弧 2 特定のビュー null
寸法拘束 長さ寸法拘束 Dimension OST_Constraints 円弧 2   null
寸法拘束 角度寸法 Dimension OST_Constraints 円弧 2   null
均等拘束 均等拘束 Dimension OST_Constraints 線分 =3   null

作成、削除する

NewDimension()メソッドは Creation.Document クラスで使用できます。このメソッドは長さ寸法のみを作成することができます。

コード領域 16-2: NewDimension()

public Dimension NewDimension (View view, Line line, ReferenceArray references)
public Dimension NewDimension (View view, Line line, ReferenceArray references, 
DimensionType dimensionType)

NewDimension()メソッドの入力パラメータを使用すると、表示可能なビュー、寸法線、参照(複数)を定義できます。ただし、長さ寸法 DimensionType を他のタイプと区別する簡単な方法はありません。オーバーロードされた NewDimension()メソッドが DimensionType パラメータとともに使用されることはまれです。

次のコードは、NewDimension()メソッドを使用して寸法を複製する方法を説明しています。

コード領域 16-3: NewDimension()を使用して寸法を複製

public void DuplicateDimension(Document document, Dimension dimension)
{
        Line line = dimension.Curve as Line;
        if (null != line)
        {
                Autodesk.Revit.DB.View view = dimension.View;
                ReferenceArray references = dimension.References;
                Dimension newDimension = document.Create.NewDimension(view, line, references);
        }
}

長さ寸法のみが作成されますが、Document.Delete()メソッドを使用すると、Dimension と SpotDimension で表されるすべての寸法と拘束を削除できます。