ThisDrawing.PaperSpace
ThisDrawing.PaperSpace is a very useful way to access the PaperSpace of your drawing through VBA or VB.NET.
When developing tools that draw entites in a drawing, we can sometimes use ThisDrawing.PaperSpace, forgetting that the tool might actually end up being used in ModelSpace. 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.PaperSpace.
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.
Comments
No comments