干渉チェック スタイル

実際の交差領域のシンボルまたはモデルは、個々の干渉領域で作成できます。これらの干渉の表示は、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();
    }
    
}