SampleLine オブジェクトは、線形の SampleLineGroup コレクションに格納されます。これは、Alignment.GetSampleLineGroupIds() メソッドで取得します。SampleLineGroup の SampleLine オブジェクトのコレクションは、SampleLineGroup.GetSamleLineIds() メソッドで取得します。次の例では、図面内の最初の線形の SampleLineGroups と SampleLines をリストすることによって、これらのコレクションの両方にアクセスする方法を示します。
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 を追加する SampleLineGroup の ObjectId、および測点番号(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";
}