Las ventanas gráficas de espacio papel se crean con el método AddPViewport. Este método requiere un punto central y la anchura y altura de la nueva ventana gráfica. Antes de crear la ventana gráfica, utilice la propiedad ActiveSpace para especificar el espacio papel como espacio actual (normalmente se hace estableciendo TILEMODE en 0).
Después de crear el objeto PViewport se pueden configurar las propiedades de la vista, como la dirección de la vista (propiedad Direction), la longitud de la lente para vistas en perspectiva (propiedad LensLength) y la presentación de la rejilla (propiedad GridOn). También se pueden controlar propiedades de la ventana gráfica, como la capa (propiedad Layer), el tipo de línea (propiedad Linetype) y la escala del tipo de línea (propiedad LinetypeScale).
Creación y activación de una ventana gráfica flotante
En este ejemplo se conmuta AutoCAD a espacio papel, se crea una ventana flotante, se configura la vista y se activa la ventana.
Sub Ch9_SwitchToPaperSpace()
' Set the active space to paper space
ThisDrawing.ActiveSpace = acPaperSpace
' Create the paperspace viewport
Dim newVport As AcadPViewport
Dim center(0 To 2) As Double
center(0) = 3,25
center(1) = 3
center(2) = 0
Set newVport = ThisDrawing.PaperSpace. _
AddPViewport(center, 6, 5)
' Change the view direction for the viewport
Dim viewDir(0 To 2) As Double
viewDir(0) = 1
viewDir(1) = 1
viewDir(2) = 1
newVport.direction = viewDir
' Enable the viewport
newVport.Display True
' Switch to model space
ThisDrawing.MSpace = True
' Set newVport current
' (not always necessary but a good idea)
ThisDrawing.ActivePViewport = newVport
' Zoom Extents in model space
ZoomExtents
' Turn model space editing off
ThisDrawing.MSpace = False
' ZoomExtents in paperspace
ZoomExtents
End Sub
El orden de los pasos del código de este ejemplo es muy importante. Como norma, las sentencias deben establecerse en el mismo orden en el que se haría desde la línea de comando de AutoCAD. Las únicas acciones inesperadas son la definición de la vista y la activación de la ventana gráfica.
Creación de cuatro ventanas flotantes
En este ejemplo se amplía el ejemplo de "Crear y activar una ventana gráfica flotante" para crear cuatro ventanas flotantes y establecer sus vistas en superior, frontal, derecha e isométrica, respectivamente. La escala de las vistas se ajusta a la mitad de la escala del espacio papel. Para asegurarse de que estas ventanas tienen algo que mostrar, puede crear una esfera sólida 3D antes de probar el ejemplo.
Sub Ch9_FourPViewports()
Dim topVport, frontVport As AcadPViewport
Dim rightVport, isoVport As AcadPViewport
Dim pt(0 To 2) As Double
Dim viewDir(0 To 2) As Double
ThisDrawing.ActiveSpace = acPaperSpace
ThisDrawing.MSpace = True
' Take the existing PViewport and make it the topVport
pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0
Set topVport = ThisDrawing.ActivePViewport
'No need to set Direction for top view
topVport.center = pt
topVport.width = 2.5
topVport.height = 2.5
topVport.Display True
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = topVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup frontVport
pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0
Set frontVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0
frontVport.direction = viewDir
frontVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = frontVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup rightVport
pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0
Set rightVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0
rightVport.direction = viewDir
rightVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = rightVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and set up isoVport
pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0
Set isoVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1
isoVport.direction = viewDir
isoVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = isoVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Finish: Perform a regen in all viewports
ThisDrawing.Regen True
End Sub