57206


外部参照クリップ境界の座標を取得する方法を教えて下さい。  
開発環境はVisual Staudio VB.net、IJCAD2016です。  
以下のソースで試しているところですが、Y方向の領域がうまく取得できません。  
（どのように取得できないかを示すことができず申し訳ありません）

[code]

    ''' <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
    
[/code]


CC BY-SA 4.0
2019-08-06T07:12:03.823
57200
2019-08-07T01:19:55.270
34508
question
.net vb.net ijcad
外部参照クリップ境界の座標値を取得する方法


IJCADでもそのソースコードでAutoCADと同じように、クリップ境界を定義している座標を取得できています。  
SpatialFilterDefinition.GetPointsメソッドは、クリップ境界が矩形の場合は境界のminPointとmaxPointが返され、クリップ境界がポリラインの場合はポリラインの各座標が返されます。


CC BY-SA 4.0
2019-08-07T01:19:55.270
57206
2019-08-07T01:19:55.270
57200
answer