60430


IJCAD 2018 最新版にて、.NET よりオブジェクトを作成すると IsWriteEnabled
がfalseで作成されてしまい、作成後修正ができません。  
IsWriteEnabled を true の状態で作成できる方法を教えて下さい。

Ver.180120 では IsWriteEnabled が true で作成されるのですが  
Ver.180917 だと IsWriteEnabled が false で作成されます。

ソースコードは下記の通りです。※wwという変数は連想配列オブジェクトです。

[code]

    Using trans As Transaction = wdb.TransactionManager.StartTransaction()
    
    Dim blkrec As BlockTableRecord = trans.GetObject(wdb.CurrentSpaceId, OpenMode.ForWrite)
    
    Dim entityobj As Entity = Nothing
    Dim plineobj As Polyline = New Polyline()
    Dim i As Integer
    i = 0
    For Each wp In ww("p")
    　　Dim wpt As Point2d = New Point2d(wp("x"), wp("y"))
    　　plineobj.AddVertexAt(i, wpt, 0, -1, -1)
    　　i += 1
    Next
    plineobj.Closed = If(ww("cl") = 1, True, False)
    entityobj = plineobj
    Dim wobjid As ObjectId = blkrec.AppendEntity(entityobj)
    entityobj.Dispose()
    
    trans.Commit()
    
[/code]


CC BY-SA 4.0
2019-11-11T07:21:14.080
60410
2019-11-12T01:39:27.430
2019-11-12T00:54:12.033
3060
36480
question
.net ijcad
IJCAD 2018 最新版にて、.NET よりオブジェクトを作成すると IsWriteEnabled がfalseで作成されてしまう


ソースコードを少し修正して作成したコマンドをIJCAD2018の最新版で実行してみましたが、オブジェクトの作成後に問題なく作成したオブジェクトの修正ができました。

[code]

    <CommandMethod("TESTCMD")>
    Public Sub TestCommand()　　
    
        Dim wdb = Application.DocumentManager.MdiActiveDocument.Database
    
        Dim ww = New List(Of Point2d)
        ww.Add(New Point2d(0, 0))
        ww.Add(New Point2d(0, 50))
        ww.Add(New Point2d(50, 50))
        ww.Add(New Point2d(50, 0))
    
        Dim wobjid As ObjectId = ObjectId.Null
    
        Using trans As Transaction = wdb.TransactionManager.StartTransaction()
    
            Dim blkrec As BlockTableRecord = trans.GetObject(wdb.CurrentSpaceId, OpenMode.ForWrite)
    
            Dim plineobj As Polyline = New Polyline()
            '矩形のポリラインを作成する
            Dim i As Integer
            i = 0
            For Each wp In ww
                plineobj.AddVertexAt(i, wp, 0, -1, -1)
                i += 1
            Next
            'ポリラインを閉じる
            plineobj.Closed = True
            '現在の空間にオブジェクトを追加
            wobjid = blkrec.AppendEntity(plineobj)
            'トランザクションにオブジェクトを登録
            trans.AddNewlyCreatedDBObject(plineobj, True)
    
    
            'ポリラインの修正
            plineobj.ColorIndex = 1
            plineobj.AddVertexAt(3, New Point2d(25, 25), 0, -1, -1)
    
    
            'オブジェクトを開放
            plineobj.Dispose()
    
            trans.Commit()
        End Using
    End Sub
    
[/code]

記載されていたソースコードには、作成したオブジェクトをトランザクションに登録する処理が有りませんでしたので追加してあります。  
この処理を行わないとオブジェクトが開かれたままの状態になり、コマンド終了後に作成したオブジェクトを選択できない状態になったりします。

あとJCAD Build 190916についてですが、これはIJCAD2019の最新版です。


CC BY-SA 4.0
2019-11-12T01:39:27.430
60430
2019-11-12T01:39:27.430
60410
answer