好的,伙计们,我们有一个部分解决方案。它将一个视口中的视图复制到另一个视口,具有相同的视图比例。
它仍然有一个怪癖,即两个视口中的视图向左跳转四分之一的屏幕宽度。
- Sub CopyViewPort()
-
- Dim objViewPort As AcadViewport
- Dim objCurrentViewport As AcadViewport
- Dim vpCentre(0 To 1) As Double
- Dim dblViewSize As Double
- Dim dblCVPHeight As Double
- Dim dblCVPWidth As Double
- Dim dblCVPScale As Double
-
- Set objCurrentViewport = ThisDrawing.ActiveViewport
-
- Set objViewPort = ThisDrawing.ActiveViewport
-
- ' get centre of current viewport
- vpCentre(0) = ThisDrawing.GetVariable("ViewCtr")(0)
- vpCentre(1) = ThisDrawing.GetVariable("ViewCtr")(1)
-
- 'get current vp scale
- dblCVPHeight = objCurrentViewport.Height
- dblCVPWidth = objCurrentViewport.Width
- dblCVPScale = dblCVPWidth / dblCVPHeight
-
- ' get sysvar ViewSize
- dblViewSize = ThisDrawing.GetVariable("ViewSize")
-
- For Each objViewPort In ThisDrawing.Viewports
- ThisDrawing.ActiveViewport = objViewPort
- objViewPort.Center = vpCentre
- objViewPort.Height = dblViewSize
- objViewPort.Width = dblViewSize * dblCVPScale
- Next
-
- ThisDrawing.ActiveViewport = objCurrentViewport
-
- ' regen in all viewports
- ThisDrawing.Regen acAllViewports
-
- End Sub
感谢您的所有帮助,我希望有人能利用它。 |