Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.ApplicationServices
Imports System.IO
Public Class Class2
<CommandMethod("AddtoBT")> _
Public Sub InsertFromFileCommand()
Dim FileNameLoc As String = "C:\TEMP\CIRCLESQUARE.DWG"
Dim FileName As String = "CIRCLESQUARE"
Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
Using xDb As New Database(False, True)
xDb.ReadDwgFile(FileNameLoc, FileShare.Read, True, Nothing)
Using tr As Transaction = doc.TransactionManager.StartTransaction()
Dim id As ObjectId = db.Insert(FileName, xDb, True)
Dim btr As BlockTableRecord = CType(tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
'I'D LIKE TO SKIP THIS STEP WHERE THE POINT3D IS REQUIRED
Dim p3d As Point3d = New Point3d(0, 0, 0)
Dim insert As New BlockReference(p3d, id)
btr.AppendEntity(insert)
insert.SetDatabaseDefaults()
tr.AddNewlyCreatedDBObject(insert, True)
tr.Commit()
End Using
End Using
End Sub
End Class
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.ApplicationServices
Imports System.IO
Public Class Class2
<CommandMethod("AddtoBT")> _
Public Sub InsBlock()
Dim FileNameLoc As String = "C:\TEMP\CIRCLESQUARE.DWG"
Dim FileName As String = "CIRCLESQUARE"
Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim xDB As New Database(False, True)
xDB.ReadDwgFile(FileNameLoc, FileShare.Read, True, Nothing)
Using tr As Transaction = doc.TransactionManager.StartTransaction()
Dim bt As BlockTable = DirectCast(tr.GetObject(db.BlockTableId, OpenMode.ForWrite), BlockTable)
Dim id As ObjectId = db.Insert(FileName, xDB, True)
tr.Commit()
End Using
End Sub
Just a couple of things that jump out:
Consider replacing this:Code - vb.net: [Select]
Dim FileName As String = "CIRCLESQUARE"
... With this:Code - vb.net: [Select]
Dim FileName As String = Path.GetFileNameWithoutExtension(FileNameLoc)
... More on System.IO.Path (http://msdn.microsoft.com/en-us/library/beth2052.aspx).
Given that you're only working with the Database, you might use a Database Transaction in lieu of a Document Transaction.