Dim xrefdb As Database = New Database(False, False)
Dim fName2 As String = database.Filename
Dim curdir2 As String = Path.GetDirectoryName(fName2)
Dim db As Database = New Database(True, False)
Using trans As Transaction = db.TransactionManager.StartTransaction()
db.SaveAs(curdir2 & "\Master.dwg", DwgVersion.Newest)
End Using
xrefdb.ReadDwgFile(curdir2 & "\Master.dwg", FileShare.ReadWrite, False, "")
Using trx As Transaction = xrefdb.TransactionManager.StartTransaction()
Dim xrefBt As BlockTable = trx.GetObject(xrefdb.BlockTableId, OpenMode.ForWrite)
Dim btrMs As BlockTableRecord = trx.GetObject(xrefBt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim files As String() = Directory.GetFiles(curdir2 & "\parts")
'list the names of all files in the specified directory
For Each file In files
Dim xrefObjId As ObjectId = xrefdb.AttachXref(file, Path.GetFileNameWithoutExtension(file))
Dim bref As New BlockReference(Point3d.Origin, xrefObjId)
btrMs.AppendEntity(bref)
Dim blname As String = "XRef - " & Path.GetFileNameWithoutExtension(file)
'Get the layer table first...
Dim lt As LayerTable = trx.GetObject(xrefdb.LayerTableId, OpenMode.ForRead)
Dim layerId As ObjectId = ObjectId.Null
'Check if EmployeeLayer exists...
If lt.Has(blname) Then
layerId = lt.Item(blname)
Else
'If not, create the layer here.
lt.UpgradeOpen()
Dim ltr As LayerTableRecord = New LayerTableRecord()
ltr.Name = blname ' Set the layer name
ltr.Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByAci, 7)
layerId = lt.Add(ltr)
trx.AddNewlyCreatedDBObject(ltr, True)
End If
bref.LayerId = layerId
trx.AddNewlyCreatedDBObject(bref, True)
Next
trx.Commit()
End Using
xrefdb.SaveAs(curdir2 & "\Master.dwg", DwgVersion.Newest)
I should have a try block in here too, didn't get around to that yet.