FAQ
ArcObjects で3D ジオメトリ オブジェクト間の距離を取得する方法

ナレッジ番号:5538 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

このトピックでは、IProximityOperator3D インターフェイスを利用して、オブジェクト間の距離を計測する方法について述べます。

サンプルコード

オブジェクト間の距離は、IProximityOperator3D::ReturnDistance3D で取得します。ジオメトリが Z 値を認識できるようにするには、IZAware::ZAware を True に設定する必要があります。

private  double RetDistance3D(IGeometry Geo1, IGeometry Geo2){
    IZAware za = Geo1 as IZAware;
    za.ZAware = true;
    //Z値を考慮するように ZAware を true にする。

    za = Geo2 as IZAware;
    za.ZAware = true;
    //Z値を考慮するように ZAware を true にする。

    IProximityOperator3D  pProxi = (IProximityOperator3D) Geo1;
    Double adis; 
    adis = pProxi.ReturnDistance3D(Geo2);
    adis = pProxi.ReturnDistance3D(Geo2);
    //距離を取得する。
    System.Diagnostics.Debug.Print(adis.ToString());    
    return (adis);
}
Private Function RetDistance3D(Geo1 As IGeometry, Geo2 As IGeometry) As Double
    Dim za As IZAware = CType(Geo1, IZAware)
    za.ZAware = True
    'Z値を考慮するように ZAware を true にする。 

    za = CType(Geo2, IZAware)
    za.ZAware = True
    'Z値を考慮するように ZAware を true にする。 

    Dim pProxi3D As IProximityOperator3D = CType(Geo1, IProximityOperator3D)
    Dim adis As Double
    adis = pProxi3D.ReturnDistance3D (Geo2)
    adis = pProxi3D.ReturnDistance3D (Geo2)
    '距離を取得する。
    Return (adis)
End Function

補足情報

10.2 までは初回の取得では正しい値が返らないため、上記の「距離を取得する」の処理を2回繰り返して距離を取得してください。

メタデータ

機能

種類

製品