横断抽出ライン

SampleLine オブジェクトは、線形の SampleLineGroup コレクションに格納されます。これは、Alignment.GetSampleLineGroupIds() メソッドで取得します。SampleLineGroupSampleLine オブジェクトのコレクションは、SampleLineGroup.GetSamleLineIds() メソッドで取得します。次の例では、図面内の最初の線形の SampleLineGroupsSampleLines をリストすることによって、これらのコレクションの両方にアクセスする方法を示します。

ObjectId alignmentId = _civildoc.GetAlignmentIds()[0];
Alignment alignment = ts.GetObject(alignmentId, OpenMode.ForRead) as Alignment;

foreach (ObjectId oid in alignment.GetSampleLineGroupIds())
{
    SampleLineGroup sampleLineGroup = ts.GetObject(oid, OpenMode.ForRead) as SampleLineGroup;
    _editor.WriteMessage("Sample Line Group: {0}\n", sampleLineGroup.Name);
    foreach (ObjectId sampleLineId in sampleLineGroup.GetSampleLineIds())
    {
        SampleLine sampleline = ts.GetObject(sampleLineId, OpenMode.ForRead) as SampleLine;
        _editor.WriteMessage("Sample Line: {0}\n", sampleline.Name);
    }

}

SampleLine.Create() スタティック メソッドを使用して、新しい SampleLines を作成できます。このメソッドには、新しい SampleLine の名前、SampleLine を追加する SampleLineGroupObjectId、および測点番号(RawStation 番号、Double 型)または、新しい SampleLine の頂点を定義する点を含む Point2dCollection のいずれかを指定します。

次の例では、線形を選択するように求めるプロンプトがユーザに表示され、横断抽出ライン が線形のそれぞれの主測点に追加されます。

// prompt user for Alignment
ObjectId alignmentId = promptForEntity("Select an Alignment to add sample lines to:", typeof(Alignment));
Alignment alignment = ts.GetObject(alignmentId, OpenMode.ForWrite) as Alignment;
ObjectId sampleLineGroupId = SampleLineGroup.Create("New Group", alignmentId);
SampleLineGroup sampleLineGroup = ts.GetObject(sampleLineGroupId, OpenMode.ForWrite) as SampleLineGroup;

Station[] majorStations = alignment.GetStationSet(StationTypes.Major);

foreach (Station station in majorStations)
{
    ObjectId sampleLineId = SampleLine.Create("SampleLine" + station.RawStation, sampleLineGroupId, station.RawStation);
    SampleLine sampleLine = ts.GetObject(sampleLineId, OpenMode.ForWrite) as SampleLine;
    sampleLine.StyleName = "Standard";
}