CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

关于使另一个平铺视口成为当前视口 (ActiveX)

2024-5-18 19:06| 发布者: admin| 查看: 161| 评论: 0|原作者: admin|来自: AutoCAD

关于使另一个平铺视口成为当前视口 (ActiveX)

在当前视口中输入点并选择对象。若要使视口成为当前视口,请使用该属性。ActiveViewport

您可以循环访问现有视口以查找特定视口。为此,请首先使用该属性确定所需视口所在的视口配置的名称。此外,如果视口配置已拆分,则可以通过 和 属性来标识配置上的每个单独视口。NameLowerLeftCornerUpperRightCorner

and 属性表示视口在显示器上的图形位置。这些属性定义如下(以四向拆分为例):LowerLeftCornerUpperRightCorner



在此示例中:

  • 视口 1: = (0, .5), = (.5, 1)LowerLeftCornerUpperRightCorner
  • 视口 2:= (.5, .5), = (1, 1)LowerLeftCornerUpperRightCorner
  • 视口 3:= (0, 0), = (.5, .5)LowerLeftCornerUpperRightCorner
  • 视口 4:= (.5, 0), = (1, .5)LowerLeftCornerUpperRightCorner

拆分视口,然后遍历窗口

此示例将视口拆分为四个窗口。然后,它会循环访问图形中的所有视口,并显示视口名称以及每个视口的左下角和右上角。

AutoLISP
(vl-load-com)
(defun c:Ch3_IteratingViewportWindows()
    (setq acadObj (vlax-get-acad-object)
          doc (vla-get-ActiveDocument acadObj))
  
    ;; Create a new viewport and make it active
    (setq viewportsCollection (vla-get-Viewports doc)
          vportObj (vla-Add viewportsCollection "TEST_VIEWPORT"))
    (vla-put-ActiveViewport doc vportObj)

    ;; Split vport into 4 windows
    (vla-Split vportObj acViewport4)

    ;; Iterate through the viewports,
    ;; highlighting each viewport and displaying
    ;; the upper right and lower left corners
    ;; for each.
    (vlax-for vport viewportsCollection
        (vla-put-ActiveViewport doc vport)
      
        (setq LLCorner (vlax-safearray->list (vlax-variant-value (vla-get-LowerLeftCorner vport)))
              URCorner (vlax-safearray->list (vlax-variant-value (vla-get-UpperRightCorner vport))))
      
        (alert (strcat "Viewport: " (vla-get-Name vport) " is now active."
                       "\nLower left corner: "
                       (rtos (nth 0 LLCorner) 2) ", " (rtos (nth 1 LLCorner) 2)
                       "\nUpper right corner: "
                       (rtos (nth 0 URCorner) 2) ", " (rtos (nth 1 URCorner) 2)))
    )
)
VBA(仅限 AutoCAD)
Sub Ch3_IteratingViewportWindows()
  ' Create a new viewport and make it active
  Dim vportObj As AcadViewport
  Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT")
  ThisDrawing.ActiveViewport = vportObj

  ' Split vport into 4 windows
  vportObj.Split acViewport4

  ' Iterate through the viewports,
  ' highlighting each viewport and displaying
  ' the upper right and lower left corners
  ' for each.
  Dim vport As AcadViewport
  Dim LLCorner As Variant
  Dim URCorner As Variant
  For Each vport In ThisDrawing.Viewports
    ThisDrawing.ActiveViewport = vport
    LLCorner = vport.LowerLeftCorner
    URCorner = vport.UpperRightCorner
    MsgBox "Viewport: " & vport.Name & " is now active." & _
    vbCrLf & "Lower left corner: " & _
    LLCorner(0) & ", " & LLCorner(1) & vbCrLf & _
    "Upper right corner: " & _
    URCorner(0) & ", " & URCorner(1)
  Next vport
End Sub

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2025-3-14 06:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部