ThisDrawing.ModelSpace is a very useful way to access the ModelSpace of your drawing through VBA or VB.NET.
When developing tools that draw entites in a drawing, we can sometimes use ThisDrawing.ModelSpace, forgetting that the tool might actually end up being used in PaperSpace. This would result in bahaviour that is not expected by the user. The ideal solution would be if there were an ActiveSpace method of the ThisDrawing object, but unfortunately this does not exist. There is a workaround however:
Function ThisSpace() As AcadBlock If ThisDrawing.ActiveSpace = acModelSpace Then Set ThisSpace = ThisDrawing.ModelSpace Else Set ThisSpace = ThisDrawing.PaperSpace End If End Function
Use this function to return the block object of either ModelSpace or PaperSpace - whichever is actively open by the user. This solves the problem mentioned above, ensuring that you are always writing code that edits the space that is currently being worked on by the user. Use a call to this function in the place of ThisDrawing.ModelSpace.
I have many tutorials on my site for how to use your VBA code in VB.NET projects. I also explain what you need to get started with coding in VB.NET, and where to download the required software for free.
Thanks Thisdrawing works very well but when no file is open how we could open a drawing or how we could make a new file.