ハッチング領域を使用する

ハッチング領域は、切土と盛土の領域にスタイルを適用して強調表示するための縦断ビューのフィーチャです。切土と盛土に加え、定義された 2 つの縦断間にある交差点の領域も強調表示することができます。

ProfileView オブジェクトのハッチング フィーチャは、HatchAreas プロパティによって開示されます。これは、ProfileView に定義されたすべての ProfileHatchArea オブジェクトのコレクションです。ハッチング領域を追加したり、ハッチング領域にアクセスするために使用できます。

それぞれの ProfileHatchArea には、ハッチング領域の上部および下部境界を定義する縦断を指定する基準(ProfileCriteria オブジェクト)のセットが含まれています。この基準は、縦断ビューにおけるハッチング領域のスタイルを定義する ShapeStyle オブジェクトも参照します。

このコードの例では、縦断ビューのハッチング領域にアクセスする方法を示し、各 ProfileHatchArea オブジェクトの基準についての情報を印刷します。

[CommandMethod("ProfileHatching")]
public void ProfileHatching () {
    doc = CivilApplication.ActiveDocument;
    Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
    using ( Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction() ) {
        // Ask the user to select a profile view 
        PromptEntityOptions opt = new PromptEntityOptions("\nSelect a profile view");
        opt.SetRejectMessage("\nObject must be a profile view.\n");
        opt.AddAllowedClass(typeof(ProfileView), false);
        ObjectId profileViewID = ed.GetEntity(opt).ObjectId;
        ProfileView oProfileView = ts.GetObject(profileViewID, OpenMode.ForRead) as ProfileView;
        ed.WriteMessage("\nHatch areas defined in this profile view: \n");
        foreach ( ProfileHatchArea oProfileHatchArea in oProfileView.HatchAreas ) {
            ed.WriteMessage(" Hatch area: " + oProfileHatchArea.Name + " shape style: " + oProfileHatchArea.ShapeStyleName + "\n");
            foreach ( ProfileCriteria oProfileCriteria in oProfileHatchArea.Criteria ) {
                ed.WriteMessage(string.Format("   Criteria: type: {0} profile: {1}\n", oProfileCriteria.BoundaryType.ToString(), oProfileCriteria.ProfileName) );
            }
        }
    }
}