次のコード サンプルは、末尾付近で標準寸法と拘束要素を区別する方法を示しています。
コード領域 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 プロパティから使用できます。言い換えると、寸法線は始点と終点を持ちません。前の図に基づくと、次のようになります。
図 67: 寸法参照
前の図にあるように、寸法はジオメトリ参照を選択することによって作成されます。API ではジオメトリ参照は Reference クラスとして表されます。参照プロパティでは次の寸法参照を使用することができます。参照の詳細は、「ジオメトリ」セクションの「参照」を参照してください。
図 68: 長さ寸法の参照
寸法は、他の注釈要素と同様、ビュー固有の要素です。寸法はこれを追加したビューのみで表示されます。Dimension.View プロパティは固有のビューを返します。
カテゴリ拘束(BuitInCategory.OST_Constraints)のある寸法オブジェクトは次の 2 つの寸法関連の拘束を表します。
次の図では、2 種類のロックされた拘束が長さ寸法と半径寸法に対応しています。アプリケーションでは、緑色の破線の付いたロック アイコンとして表示されます(緑色の破線は Dimension.Curve プロパティから使用できます)。長さ寸法拘束と半径寸法拘束の両方とも、Dimension.References プロパティからの 2 つの参照オブジェクトを返します。
図 69: 長さ寸法拘束と半径寸法拘束
拘束要素はビューに固有のものではなく、さまざまなビューで表示することができます。したがって、ビュー プロパティは常に null を返します。次の図では、前の図の拘束要素が 3D ビューで表示されています。
図 70: 3D ビューにおける長さ寸法拘束と半径寸法拘束
均等拘束は寸法に基づいていますが、Dimension クラスとして表すこともできます。API には、カテゴリや DimensionType を使用して、長さ寸法拘束と均等拘束を区別する直接的な方法はありません。均等拘束は 3 つ以上の参照を返しますが、長さ寸法拘束は 2 つ以上の参照を返します。
図 71: 均等拘束
指定点座標と指定点高さは SpotDimension クラスによって表され、カテゴリによって区別されます。標準寸法と同じように、指定点情報はビュー固有です。それぞれの指定点情報のタイプおよびカテゴリは次の表のとおりです。
表 35: 指定点情報のタイプとカテゴリ
タイプ |
カテゴリ |
指定点座標 |
OST_SpotCoordinates |
指定点高さ |
OST_SpotElevations |
図 72: SpotCoordinates と SpotElevations
指定点情報が示す点座標を LocationPoint.Point プロパティから使用できるように、SpotDimension 位置を LocationPoint にダウンキャストすることができます。
次の表は、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 で表されるすべての寸法と拘束を削除できます。