実際の交差領域のシンボルまたはモデルは、個々の干渉領域で作成できます。これらの干渉の表示は、InterferenceStyle オブジェクトによって制御されます。ドキュメント内のすべての干渉スタイル オブジェクトのコレクションは、CivilDocument.Styles.InterferenceStyles コレクションに格納されます。
選択できる干渉表示スタイルは、次の 3 種類です。最初に、緩衝領域の 3 次元モデルを表示できます。そのためには、ModelOptions スタイル プロパティを InterferenceModelType.TrueSolid に設定します。GetDisplayStyleModel() メソッドは、モデルの外観(色や線種など)を制御する DisplayStyle 型のオブジェクトを返します。DisplayStyle.Visible プロパティを True に設定する必要があります。
次の方法は、干渉位置に 3D の球を作成することです。そのためには、ModelOptions スタイル プロパティを InterferenceModelType.Sphere に設定します。ModelSizeType プロパティが InterferenceModelSizeType.SolidExtents に設定されている場合、球は自動的に外接するサイズ(交差領域のモデルに合わせた最小の球)に調整されます。球のサイズを設定するには、ModelSizeType プロパティをInterferenceModelSizeType.UserSpecified に設定し、ModelSizeOptions プロパティを絶対単位または作図単位のいずれかに設定して、対応する AbsoluteModelSize または DrawingScaleModelSize プロパティを希望の値に設定します。再び、GetDisplayStyleModel() によって返された DisplayStyle オブジェクトが色や線種などの外観フィーチャを制御します。
3 番目のオプションは、交差位置にシンボルを配置することです。GetDisplayStylePlan(InterferenceDisplayStyleType.Symbol).Visible プロパティを True に設定してシンボルを表示させます。スタイル プロパティ MarkerStyle (MarkerStyle 型のオブジェクト)は、シンボルの描画方法に関するすべての側面を制御します。
次の例では、交点に x 記号と円を重ねて表示する新しい干渉スタイル オブジェクトを作成します。
public void InterfStyle()
{
CivilDocument doc = CivilApplication.ActiveDocument;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
Database.TransactionManager.StartTransaction())
{
ObjectId intStyleId;
intStyleId = doc.Styles.InterferenceStyles.Add("Interference style 01");
InterferenceStyle oIntStyle = ts.GetObject(intStyleId, OpenMode.ForWrite) as InterferenceStyle;
// Draw a symbol of a violet X with circle with a specified
// drawing size at the points of intersection.
oIntStyle.GetDisplayStylePlan(InterferenceDisplayStyleType.Symbol).Visible = true;
ObjectId markerStyleId = oIntStyle.MarkerStyle;
MarkerStyle oMarkerStyle = ts.GetObject(markerStyleId, OpenMode.ForWrite) as MarkerStyle;
oMarkerStyle.MarkerType = MarkerDisplayType.UseCustomMarker;
oMarkerStyle.CustomMarkerStyle = CustomMarkerType.CustomMarkerX;
oMarkerStyle.CustomMarkerSuperimposeStyle = CustomMarkerSuperimposeType.Circle;
oMarkerStyle.MarkerDisplayStylePlan.Color = Color.FromColorIndex(ColorMethod.ByAci, 200);
oMarkerStyle.MarkerDisplayStylePlan.Visible = true;
oMarkerStyle.SizeType = MarkerSizeType.AbsoluteUnits;
oMarkerStyle.MarkerSize = 5.5;
// Hide any model display at intersection points.
oIntStyle.GetDisplayStyleModel(InterferenceDisplayStyleType.Solid).Visible = false;
ts.Commit();
}
}