Dear Mr.Nermeen Bakr,
In the first place I would thank you that with slight modification in your code I was able to solve my issue of generating wblock. The following code is working fine now :
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
'custom
Imports acadApp = Autodesk.AutoCAD.ApplicationServices.Application
Imports DBTransMan = Autodesk.AutoCAD.DatabaseServices.TransactionManager
#Region "Draw a wblock"
_
Public Sub AddNewBTRB()
'added new
Dim db As Database = New Database(), _
tm As Autodesk.AutoCAD.DatabaseServices.TransactionManager = db.TransactionManager, _
t As Transaction = tm.StartTransaction(), _
bt As BlockTable = tm.GetObject(db.BlockTableId, OpenMode.ForWrite), _
btr As BlockTableRecord = tm.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim myTransMan As DatabaseServices.TransactionManager
Dim myTrans As DatabaseServices.Transaction
Dim myDwg As Document
Dim myBT As BlockTable
myDwg = Application.DocumentManager.MdiActiveDocument
myTransMan = myDwg.TransactionManager
myTrans = myTransMan.StartTransaction
'Open the database for Write
myBT = myDwg.Database.BlockTableId.GetObject(OpenMode.ForWrite)
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim opt As New EditorInput.PromptSelectionOptions
Dim optR As EditorInput.PromptSelectionResult
optR = ed.GetSelection(opt)
If optR.Value Is Nothing = False Then
Dim I As Long
Dim SS As Autodesk.AutoCAD.EditorInput.SelectionSet = optR.Value
Dim idarray As ObjectId() = SS.GetObjectIds()
Dim objIdColl As New ObjectIdCollection
For I = 0 To idarray.Length - 1
objIdColl.Add(idarray(I))
Next
Dim tempDb As Database = Application.DocumentManager.MdiActiveDocument.Database
tempDb.Wblock(db, objIdColl, New Point3d(0, 0, 0), DuplicateRecordCloning.Ignore)
db.SaveAs("c:\test1.dwg", DwgVersion.Current) 'added new
myTrans.Commit()
End If
'Dispose of the Transaction Objects
myTrans.Dispose()
myTransMan.Dispose()
End Sub
#End Region
Hope the above will solve your issue.
Regards,
Sandeep Banerjee, New Delhi, India