パイプ オブジェクトは、パイプ ネットワークの配管を表します。パイプは真っ直ぐなパイプや曲がったパイプを作成するパイプ ネットワークのメソッド、AddLinePipe() や AddCurvePipe() を使用して作成されます。どちらのメソッドでも、特定のパーツ ファミリ(ファミリのオブジェクト ID を使用)と特定のパーツ サイズ フィルタ オブジェクトに加え、パイプのジオメトリを指定する必要があります。
次の例では、パーツ リストで最初に発見したパイプ ファミリとパイプ サイズ フィルタを使用して、2 つのハードコードされたポイント間に直線パイプを作成します。
[CommandMethod("AddPipe")]
public void AddPipe()
{
CivilDocument doc = CivilApplication.ActiveDocument;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
Database.TransactionManager.StartTransaction())
{
ObjectIdCollection oIdCollection = doc.GetPipeNetworkIds();
// Get the first network in the document
ObjectId objId = oIdCollection[0];
Network oNetwork = ts.GetObject(objId, OpenMode.ForWrite) as Network;
ed.WriteMessage("Pipe Network: {0}\n", oNetwork.Name);
// Go through the list of part types and select the first pipe found
ObjectId pid = oNetwork.PartsListId;
PartsList pl = ts.GetObject(pid, OpenMode.ForWrite) as PartsList;
ObjectId oid = pl["Concrete Pipe"];
PartFamily pfa = ts.GetObject(oid, OpenMode.ForWrite) as PartFamily;
ObjectId psize = pfa[0];
LineSegment3d line = new LineSegment3d(new Point3d(30, 9, 0), new Point3d(33, 7, 0));
ObjectIdCollection col = oNetwork.GetPipeIds();
ObjectId oidNewPipe = ObjectId.Null;
oNetwork.AddLinePipe(oid, psize, line, ref oidNewPipe, false);
Pipe oNewPipe = ts.GetObject(oidNewPipe, OpenMode.ForRead) as Pipe;
ed.WriteMessage("Pipe created: {0}\n", oNewPipe.DisplayName);
ts.Commit();
}
}