在特定图层上插入 AutoCAD 块 VB.NET

Insert AutoCAD Block on a specific layer VB.NET

我正在尝试从另一个文件插入一个块,然后更改块的层。我可以将块插入到模型空间中,但找不到更改其层的方法。我希望有人能帮我解决下面的代码。

提前致谢。

        <CommandMethod("AddHardware")>
        Public Shared Sub Add_Hardware()

            Dim doc As Document = AutoCADApp.DocumentManager.MdiActiveDocument
            Dim db As Database = doc.Database
            Dim ed As Editor = doc.Editor

            Using tr As Transaction = db.TransactionManager.StartTransaction()

                Dim pStrOpts As PromptStringOptions = New PromptStringOptions("NewFilename")
                pStrOpts.AllowSpaces = True
                
                Dim FileName As PromptResult = ed.GetString(pStrOpts)
                Dim Layer As String = ed.GetString("Layer").StringResult

                Dim ObjId As ObjectId
                Dim bt As BlockTable = db.BlockTableId.GetObject(OpenMode.ForRead)
                Dim btr As BlockTableRecord = bt(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForWrite)

                Using dbInsert As New Database(False, True)
                    dbInsert.ReadDwgFile(FileName.StringResult, IO.FileShare.Read, True, "")
                    ObjId = db.Insert(Path.GetFileNameWithoutExtension(FileName.StringResult), dbInsert, True)
                End Using

                Dim curUCSMatrix As Matrix3d = doc.Editor.CurrentUserCoordinateSystem
                Dim curUCS As CoordinateSystem3d = curUCSMatrix.CoordinateSystem3d

                Dim BlkRef As New BlockReference(New Point3d(PositionX, PositionY, PositionZ), ObjId)

                BlkRef.TransformBy(Matrix3d.Rotation(RotateX, curUCS.Xaxis, New Point3d(PositionX, PositionY, PositionZ)))
                BlkRef.TransformBy(Matrix3d.Rotation(RotateY, curUCS.Yaxis, New Point3d(PositionX, PositionY, PositionZ)))
                BlkRef.TransformBy(Matrix3d.Rotation(RotateZ, curUCS.Zaxis, New Point3d(PositionX, PositionY, PositionZ)))

                btr.AppendEntity(BlkRef)
                tr.AddNewlyCreatedDBObject(BlkRef, True)
                tr.Commit()

            End Using

        End Sub

要更改块引用的图层,只需设置其 Layer (or LayerId) 属性.

BlkRef.Layer = LayerName