60266


Groupオブジェクトの検索の方法を教えて下さい。  
または、  
Entityオブジェクトから所属しているGroupオブジェクトを取得することはできますでしょうか？

[2019.11.13]  
いただきましたヒントを元に下記のコードを書きましたやりたいことは、  
ポリラインを検索を検索して、そのポリラインが属しているグループを見つける  
というものです。しかしながら実行すると  
例外がスローされました: 'System.AccessViolationException' (gmdb.dll の中)  
が発生して処理が止まってしまいます。

原因わかれば、教えていただけると幸いです。

[code]

            Using trans As Transaction = wdb.TransactionManager.StartTransaction()
                Dim acBlkTbl As BlockTable = trans.GetObject(wdb.BlockTableId, OpenMode.ForRead)
                Dim wcount = 0
                Dim wselobjs As PromptSelectionResult
                wselobjs = wed.SelectAll()
                If wselobjs.Status = PromptStatus.OK Then
                    wcount = wselobjs.Value.Count
                End If
                For ix = 0 To wcount - 1
                    Dim acObjId As ObjectId = wselobjs.Value(ix).objectid
                    Dim wname As String = acObjId.ObjectClass().DxfName
                    If wname = "LWPOLYLINE" Then
                        Debug.Print("POLYLINE")
                        Dim objPolyLine As Polyline = trans.GetObject(acObjId, OpenMode.ForRead, True)
                        Dim wgrps As ObjectIdCollection = objPolyLine.GetPersistentReactorIds()
                        For Each objId1 As ObjectId In wgrps
                            Dim wgrp As Group = trans.GetObject(objId1, OpenMode.ForRead, True)
                            If Not IsNothing(wgrp) Then
                                Dim wents As ObjectId() = wgrp.GetAllEntityIds()
                                Debug.Print(wents.ToString())
                            End If
                        Next
                    End If
                Next
            End Using
    
[/code]


CC BY-SA 4.0
2019-11-05T02:36:50.423
60259
2019-11-13T05:47:13.727
2019-11-13T05:47:13.727
36480
36480
question
vb.net ijcad
VB.NET で IJCADのオブジェクトがどのグループに属しているのか知りたいです。


図面内のすべてのグループを取得する場合は、GDatabase.GroupDictionaryIdのObjectIdからDBDictionaryを取得し、この辞書内に存在するObjectIdから取得したオブジェクトがGroupオブジェクトです。

グループに属しているエンティティからグループを取得する場合は、GetPersistentReactorIdsメソッドを使用してエンティティからObjectIdのコレクションを取得し、このコレクション内のidにGroupオブジェクトのObjectIdが存在しますので、それを開くことでGroupオブジェクトを取得できます。


CC BY-SA 4.0
2019-11-05T04:40:04.217
60266
2019-11-05T04:40:04.217
60259
answer