外部参照クリップ境界の座標値を取得する方法
外部参照クリップ境界の座標を取得する方法を教えて下さい。
開発環境はVisual Staudio VB.net、IJCAD2016です。
以下のソースで試しているところですが、Y方向の領域がうまく取得できません。
(どのように取得できないかを示すことができず申し訳ありません)
''' <summary>
''' 外部参照図形からXCLIP領域点列を取得する。
''' </summary>
''' <param name="db">処理対象のDatabase</param>
''' <param name="id">外部参照のObjectId</param>
''' <param name="icdPt2dColl">XCLIP領域点列</param>
''' <returns>=0:正常終了、=-1:XCLIPは無い</returns>
''' <remarks></remarks>
Public Function GetXClipPoly(ByVal db As Database, ByVal id As ObjectId, ByRef icdPt2dColl As Point2dCollection) As Integer
GetXClipPoly = -1
If db Is Nothing Then Return -1
If id = ObjectId.Null Then Return -1
If IcadEntity_EntityType(id) <> Icad7EntityType.vicBlockInsert Then Return -1
Using icTrans As Transaction = db.TransactionManager.StartTransaction()
Try
'選択したブロック参照オブジェクトを取得
Dim icRef As BlockReference = TryCast(icTrans.GetObject(id, OpenMode.ForRead), BlockReference)
'拡張ディクショナリーのチェック
If (icRef.ExtensionDictionary = ObjectId.Null) Then Return -1
'ブロック参照の拡張ディクショナリーを取得
Dim icExtDict As DBDictionary = icTrans.GetObject(icRef.ExtensionDictionary, OpenMode.ForRead)
'"ACAD_FILTER"要素があるかチェック
If (Not icExtDict.Contains("ACAD_FILTER")) Then Return -1
'拡張ディクショナリー内の、外部参照クリップの為の拡張ディクショナリーを取得する
Dim icFilterDict As DBDictionary = icTrans.GetObject(icExtDict.GetAt("ACAD_FILTER"), OpenMode.ForRead)
'"SPATIAL"要素があるかチェック
If Not icFilterDict.Contains("SPATIAL") Then Return -1
'外部参照クリップを取得する
Dim icSpFilter As GrxCAD.DatabaseServices.Filters.SpatialFilter = _
icTrans.GetObject(icFilterDict.GetAt("SPATIAL"), OpenMode.ForRead)
'外部参照クリップ定義を取得する
Dim icSpFilterDef As GrxCAD.DatabaseServices.Filters.SpatialFilterDefinition = icSpFilter.Definition
'外部参照クリップの領域を形成している2次元座標点を取得する
icdPt2dColl = icSpFilter.Definition.GetPoints()
Return 0
Catch ex As System.Exception
IcadExeptionTrace(ex)
Return -1
End Try
End Using
End Function