获取模型空间比例事实
你好我在模型空间中有一个带有两个视口的图形。
在其中一个视口中,用户使用任何常规缩放功能缩放对象。如何在VBA中获得用户放大到的最终比例因子,然后将其应用于第二个视口,以便两个视口具有相同的缩放因子。
第二部分似乎可以通过以下方式解决:
ZoomScaled Zoomfactor,acZoomScaledRelative
但我似乎无法得到比例因子。
有人有什么想法吗? 也许是CustomScale属性? 泰克,
将模型空间VIEWSIZE除以图纸空间视口的高度
您必须在图纸空间和模型空间之间来回切换以收集数据-大卫 每个视口都以某种方式保持着比例,它可能是每个视口的表列表的一部分,一旦您阅读了它,那么很容易复制它,它只是用于绘制多视图的简单lisp,用其他多视图比例值替换sc值。
(setq sc (getstring "\nScale for this window 1: "))
(setq sc3 (strcat "1/" sc "xp"))
(command "_.zoom" "all")
(setq zc (getpoint "\nPoint to centre of view in Viewport:"))
(command "_.zoom" "_center" zc sc3)
我在vport上做了一个Entsel,然后查了我的lisp书(是的,真的页面)和assoc等等
(setq obj (car (entsel "\npick vport boundary ")))
(setq tpp1 (entget obj))
(setq pt3 (cdr (assoc 40 tpp1))) ; Height
(setq pt4 (cdr (assoc 41 tpp1))) ; width
(setq pt5 (cdr (assoc 42 tpp1))) ; scale
(princ pt5)
希望这有帮助 我最后的一些回答是正确的,发现变量“viewsize”随视口比例的变化而变化,还发现了如何计算比例。
Vport比例1;50(公制)
vport 418.645的高度
视图大小20.932
418.645/20.932 =20 1000/50 =20
对于ft标尺来说有点困难,但可以解决。 好了,伙计们,我们有一个部分解。它以相同的视图比例将一个视口中的视图复制到另一个视口。
它仍然有一个怪癖,即两个视口中的视图向左跳转屏幕宽度的四分之一。
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
谢谢你的帮助,我希望有人能利用它。 解决了故障。
通过移动objViewPort。中心=VP中心
至之后
objViewPort。高度=dblViewSize
objViewPort。宽度=dblViewSize*dblCVPScale
那么我们就没有问题了。
因此,代码段现在是:
objViewPort。高度=dblViewSize
objViewPort。宽度=dblViewSize*dblCVPScale
objViewPort。中心=VP中心
再次感谢你的帮助。
页:
[1]