サブアセンブリの変更点

Autodesk Civil 3D 2025 では、「ターゲット マッピング」機能が変更されました。これは、カスタム サブアセンブリの記述方法に影響します。この機能を使用すると、ジオメトリの定義に必要なコリドーに関連付けられた線形と縦断に加え、オブジェクト タイプをサブアセンブリのターゲットにできます。

カスタム サブアセンブリの記述方法については次の 4 つの変更点があります。

  1. ParamLogicalNameType の新しいパラメータ タイプ
  2. corridorState の新しいターゲット コレクション
  3. オブジェクトとして扱われるようになったターゲット
  4. CalcAlignmentOffsetToThisAlignment ユーティリティ メソッドの変更

ParamLogicalNameType の新しいパラメータ タイプ

サブアセンブリでは、線形と縦断の代わりに、オフセット ターゲットと標高ターゲットをターゲットに使用できるようになりました。これらは、ParamLogicalNameType の新しいパラメータ タイプで表します。サブアセンブリで新しいターゲット タイプをサポートする場合は、次のように置換する必要があります。

corridorState の新しいターゲット コレクション

corridorState オブジェクトからオフセットおよび標高ターゲット コレクションを取得するには、ParamsAlignment および ParamsProfile の代わりに、ParamsOffsetTarget および ParamsElevationTarget を使用します。オフセット ターゲットと標高ターゲットは、(ネットワーク パイプのターゲットも含め)すべて ParamsOffsetTargetParamsElevationTarget に含まれています。次に、サンプル VB.NET サブアセンブリBasicLaneTransition.vb サンプルからの例を示します。

        Dim oParamsLong As ParamLongCollection
        oParamsLong = corridorState.ParamsLong
 
        Dim oParamsOffsetTarget As ParamOffsetTargetCollection
        oParamsOffsetTarget = corridorState.ParamsOffsetTarget

オブジェクトとして扱われるようになったターゲット

ターゲットは、線形 ID または縦断 ID ではなく、オブジェクトとなりました。オフセット ターゲットに WidthOffsetTarget を定義し、標高ターゲットに SlopeElevationTarget を定義するようになったため、ターゲットを ID ではなくオブジェクトとして宣言できるようになりました。次に、サンプル VB.NET サブアセンブリBasicLaneTransition.vb サンプルからの例を示します。

        Dim offsetTarget As WidthOffsetTarget 'width or offset target
        offsetTarget = Nothing
        Dim elevationTarget As SlopeElevationTarget 'slope or elevation target
        elevationTarget = Nothing

CalcAlignmentOffsetToThisAlignment() の変更点

CalcAlignmentOffsetToThisAlignment() ユーティリティ メソッドは、線形からオフセット ターゲットまでのオフセットを計算するようになりました。このメソッドは、測点値ではなく、線形測点に垂直なポイントでのオフセット ターゲットの XY 座標を返します。

標高ターゲットの標高を直接取得する場合、CalcAlignmentOffsetToThisAlignment() の代わりに、SlopeElevationTarget.GetElevation メソッドも使用できます。次に、サンプル VB.NET サブアセンブリBasicLaneTransition.vb サンプルからの例を示します。

                'get elevation on elevationTarget
                Try
                    dOffsetElev = elevationTarget.GetElevation(oCurrentAlignmentId, _
                       corridorState.CurrentStation, Utilities.GetSide(vSide))
                Catch
                    Utilities.RecordWarning(corridorState, _
                       CorridorError.LogicalNameNotFound, _
                       "TargetHA", "BasicLaneTransition")
                    dOffsetElev = corridorState.CurrentElevation + vWidth * vSlope
                End Try