2D スケッチ クラス

2D スケッチ クラス

Sketch クラスは、3D モデルの作成に使用される平面の閉じられた曲線を表します。キーフィーチャは、SketchPlane および CurveLoop プロパティによって表されます。

Revit ファイルを編集する場合は、すべての Sketch オブジェクトは一時的な要素であるため、Document.Elements の列挙を反復して Sketch オブジェクトを取得することはできません。ファミリの 3D モデリング情報にアクセスする場合は、Sketch オブジェクトは、ジオメトリの形成に重要です。詳細は、「3D スケッチ」を参照してください。

SketchPlane は、ModelCurve や Sketch などのすべての 2D スケッチ クラスの基礎となるものです。SketchPlane も、DetailCurve などのsketchPlane 2D 注釈要素の基礎です。ModelCurve と DetailCurve の両方には SketchPlane プロパティがあり、対応する作成メソッドで SketchPlane が必要です。SketchPlane は、Revit UI では常に非表示となっています。

ModelCurve は、SketchPlane に配置されている必要があります。つまり、UI で、または API を使用して ModelCurve を描画する場合は、常に SketchPlane が存在する必要があります。したがって、ModelCurve 描画される場合は、少なくとも 1 つの SketchPlane が 2D ビューに存在する必要があります。

2D ビューには、CeilingPlan、FloorPlan、Elevation ViewTypes が含まれています。既定では、SketchPlane はこれらのすべてのビューに自動的に作成されます。2D ビューに関する SketchPlane Name は、「レベル 1」 または「北」などのビュー名を返します。

図 77: 平面を選択して新しい作業面を指定

新しい作業面を指定した場合は、前の図で示すように、面を選択できます。面を選択した後で、次の図のように壁などの特定の要素の面を選択します。この場合、SketchPlane.Name プロパティは、その要素に関連する文字列を返します。たとえば、下図では、SketchPlane.Name プロパティは、Wall.Name プロパティと同じ「Generic - 8」を返します。

図 78: 作業面として壁で平面を選択

注: 作業面は表示され、選択できるため、SketchPlane は作業面とは異なります。SketchPlane には現在の API に特定のクラスがありませんが、要素クラスによって表されます。作業面は、特定の SketchPlane に基づいて定義される必要があります。作業面と SketchPlane Category プロパティの両方が null を返します。SketchPlane は常に非表示ですが、作業面に対応する SketchPlane は常に存在します。作業面を使用して、テキストとイメージで SketchPlane を表します。

次の情報が SketchPlane メンバーに適用されます。

面には、SketchPlane ジオメトリ情報が含まれています。下図のとおり、SketchPlane は Plane を使用して面の座標系を設定します。

図 79: SketchPlane および Plane 座標系

次のコード サンプルでは、新しい SketchPlane を作成する方法を示します。

コード領域 17-1: 新しい SketchPlane を作成

private SketchPlane CreateSketchPlane(UIApplication application)
{
    //try to create a new sketch plane
    XYZ newNormal = new XYZ(1, 1, 0);  // the normal vector
    XYZ newOrigin = new XYZ(0, 0, 0);  // the origin point
    // create geometry plane
    Plane geometryPlane = application.Application.Create.NewPlane(newNormal, newOrigin);

    // create sketch plane
    SketchPlane sketchPlane = SketchPlane.Create(application.ActiveUIDocument.Document,geometryPlane);

    return sketchPlane;
}