60347


あるブロック参照を分解しようとすると例外（eCannotExplodeEntity）が発生します。  
その当該ブロック参照のブロック定義のプロパティ（BlockTableRecordのExplodable）を確認しても分解可能状態（Explodable=True）でした。

例外が発生する原因について情報提供いただけると助かります。

以下はブロック分解のソースコードです。

[code]

    Dim retIds As New ObjectIdCollection()
    If blkRefId = ObjectId.Null Then Return retIds
    
    '挿入図形を分解、削除する
    Using trans As Transaction = blkRefId.Database.TransactionManager.StartTransaction()
        Try
            Dim blkRef As BlockReference = TryCast(trans.GetObject(blkRefId, OpenMode.ForWrite), BlockReference)
            If blkRef IsNot Nothing Then
                Dim mdlSpcId As ObjectId = SymbolUtilityServices.GetBlockModelSpaceId(blkRefId.Database)
                Dim modelSpace As BlockTableRecord = trans.GetObject(mdlSpcId, OpenMode.ForWrite)
    
                Dim entitySet As New DBObjectCollection()
                blkRef.Explode(entitySet)'-->ここで例外発生
    
                '分解後の要素を取得
                For Each dbObj As DBObject In entitySet
                    Dim ent As Entity = dbObj
                    retIds.Add(modelSpace.AppendEntity(ent))
                    trans.AddNewlyCreatedDBObject(ent, True)
                Next
            End If
    
            trans.Commit()
    
        Catch ex As System.Exception
            trans.Abort()
            Return New ObjectIdCollection()
    
        End Try
    
    End Using
    
    'ブロック参照は削除
    IcadEntity_Delete(blkRefId)
    
    Return retIds
    
[/code]

開発環境はVisual Staudio VB.net、IJCAD2016です。


CC BY-SA 4.0
2019-11-07T05:43:06.927
60313
2019-11-08T04:33:10.627
34508
question
.net vb.net ijcad
ブロック参照を分解すると例外（eCannotExplodeEntity）発生


何かしらの要素を含むブロック定義を元にしたブロック参照の場合、BoundsプロパティでExtents3dオブジェクトが返され、空のブロック定義を元にしたブロック参照の場合は、Boundsプロパティはnullを返します。  
Boundsプロパティがnullかどうかを確認することで、ブロックが空かどうかを確認できると思います。


CC BY-SA 4.0
2019-11-08T04:33:10.627
60347
2019-11-08T04:33:10.627
60313
answer