配線を作成する

Revit API を使用すると新しい電気配線を作成できます。

静的 Wire.Create()を使用すると、ドキュメントに新しい配線を作成できます。Create()メソッドには、新たに作成する配線を表示するビューの ID が必要です。これは、平面図または天井伏図ビューの ID となります。配線の WiringType は壁、天井、床に隠れる配線の場合は Arc、表示される配線の場合は Chamfer となります。

配線の場所は配線の頂点を設定する XYZ ポイントのリストで指定し、必要に応じて始点/終点コネクタで指定します。ただし、端点コネクタが null になる場合があり、始点コネクタを指定すると、コネクタの基準点が始点として配線の頂点に追加されます。同様に、終点コネクタを指定すると、コネクタの基準点が終点として配線の頂点に追加されます。静的メソッド Wire.AreVertexPointsValid()は XYZ ポイントのリストと始点/終点コネクタをチェックして、配線に適していることを確認します。

配線の形状は、その配線タイプと、頂点と端点コネクタによって提供される点の合計数によって決まります。配線タイプが WiringType.Arc の場合:
  • 提供される点の合計数が 2 つの場合、配線は直線の配線となります。
  • 提供される点の合計数が 3 つの場合、配線は円弧の配線となります。
  • 点が 4 つ以上の場合は、配線はスプラインの配線となります。
配線タイプが WiringType.Chamfer の場合、すべての点をつなぐポリラインの配線が作成されます。

次の例では、コネクタを指定せずに、アクティブなビューに直線の配線を作成しています。

コード領域: 新しい配線を作成

public Wire CreateWire(Document document)
{
    Wire wire = null;

    FilteredElementCollector collector = new FilteredElementCollector(document);
    IList<Element> wireTypes = collector.OfCategory(BuiltInCategory.OST_Wire).WhereElementIsElementType().ToElements();
    WireType wireType = wireTypes.First() as WireType;

    if (wireType != null)
    {
        IList<XYZ> wireVertices = new List<XYZ>();
        wireVertices.Add(new XYZ(0, 0, 0));
        wireVertices.Add(new XYZ(2, 0, 0));

        wire = Wire.Create(document, wireType.Id, document.ActiveView.Id, WiringType.Arc, wireVertices, null, null);
    }

    return wire;
}

接続

作成後に配線を要素に接続するには、Wire.ConnectTo()を呼び出して、始点コネクタと終点コネクタを渡します。このメソッドを使用する場合に、配線が既に接続されているときは、古い接続は切断され、配線は新しいターゲットに接続されます。

頂点

配線を作成すると、Wire.GetVertex()メソッドを使用して頂点を取得できます。このメソッドは必要な頂点のインデックスを使用します。これは 0 から Wire.NumberOfVertices までの間の値になります(配線の始端と終端を含む)。

リストの最後に頂点を追加する場合は Wire.AppendVertex()を使用し、リスト内の特定の点に頂点を追加する場合は Wire.InsertVertex()を使用します。Wire.IsVertexPointValid()メソッドは、指定した頂点をこの配線に追加できるかどうかを確認します。ビュー平面のこの点(許容差内)に既に頂点があるために点を追加できない場合、IsVertexPointValid()は false を返します。開始頂点が既に要素に接続されている場合は、開始頂点の前に頂点を挿入できません。同様に、終端が既に要素に接続されている場合、リストの最後に頂点を追加できません。

Wire.RemoveVertex()はリストから頂点を削除します。配線の頂点が既に要素に接続されていると、このメソッドは頂点の削除に失敗します。この頂点を削除するには、切断してから頂点を削除し、(必要に応じて)再接続します。