Tyke 发表于 2010-2-15 03:41:28

获取模型空间比例因子

嗨,
我有一个在模型空间中有两个视口的绘图。
在其中一个视口中,用户使用任何普通缩放功能缩放到对象上。
在VBA中,我如何获得用户放大的最终比例因子,然后将其应用于第二个视口,以便两个视口具有相同的缩放因子。
第二部分似乎可以用:
ZoomScaled Zoomfactor,acZoomScaledRelative来解决,
但我似乎无法获得比例因子。
有人有什么想法吗?
**** Hidden Message *****

Tyke 发表于 2010-2-15 10:12:27

必须获取当前VP的视口比例因子。让我看看我是否有代码。

LE3 发表于 2010-2-17 11:05:54

我找不到任何能保持视口比例的属性。
我已经尝试使用height属性,但也不起作用。

Tyke 发表于 2010-2-17 12:53:14

我不使用这种语言,但必须是一种找到公开的属性或方法的方法,甚至不是帮助文件?。
Viewport类-有一个CustomScale属性-读/写

Bryco 发表于 2010-2-19 04:01:15

好的,伙计们,我们有一个部分解决方案。它将一个视口中的视图复制到另一个视口,具有相同的视图比例。
它仍然有一个怪癖,即两个视口中的视图向左跳转四分之一的屏幕宽度。
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

感谢您的所有帮助,我希望有人能利用它。

Tyke 发表于 2010-2-19 10:57:55

尝试在混乱后设置中心,使用ht和宽度

Bryco 发表于 2010-2-22 02:12:37

@Bryco
做到了。太好了,现在它超级管用。
感谢Bryco的帮助和所有其他人。
页: [1]
查看完整版本: 获取模型空间比例因子