CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2022 开发者帮助

ArrayRectangular 方法 (ActiveX)

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

ArrayRectangular 方法 (ActiveX)

创建对象的 2D 或 3D 矩形阵列。

支持的平台:仅限 Windows

签名

VBA:

RetVal = object.ArrayRectangular(NumberOfRows, NumberOfColumns, NumberOfLevels, DistBetweenRows, DistBetweenColumns, DistBetweenLevels)
对象

类型:所有图形对象

此方法应用到的对象。

行数

访问:仅输入

类型:

矩形数组中的行数。这必须是正数。如果此数字为 1,则 NumberOfColumns 必须大于 1。

列数

访问:仅输入

类型:

矩形数组中的列数。这必须是正数。如果此数字为 1,则 NumberOfRows 必须大于 1。

NumberOfLevels

访问:仅输入

类型:

3D 阵列中的级别数。

DistBetweenRows

访问:仅输入

类型:

行与行之间的距离。如果行之间的距离为正数,则行将从基图元向上相加。如果距离为负数,则向下添加行。

DistBetweenColumns

访问:仅输入

类型:

列之间的距离。如果列之间的距离为正数,则列将添加到基本实体的右侧。如果距离为负数,则向左添加列。

DistBetweenLevels

访问:仅输入

类型:

数组级别之间的距离。如果级别之间的距离为正数,则级别将从基图元沿正方向相加。如果距离为负数,则在负方向上添加级别。

返回值 (RetVal)

类型:变体(对象数组)

新创建的对象的数组。

言论

对于 2D 数组,请指定 NumberOfRowsNumberOfColumnsDistBetweenRowDistBetweenColumns。若要创建 3D 数组,请同时指定 NumberOfLevelsDistBetweenLevels

矩形数组是通过将选择集中的对象复制适当的次数来构造的。如果定义一行,则必须指定多列,反之亦然。

假定选择集中的对象位于左下角,并且数组在上下和右下生成。如果行之间的距离为负数,则向下添加行。如果列之间的距离为负数,则列将添加到左侧。

AutoCAD 沿由当前捕捉旋转角度定义的基线构建矩形阵列。默认情况下,此角度为零,因此矩形数组的行和列相对于 XY 绘图轴是正交的。您可以通过将捕捉旋转角度设置为非零值来更改此角度并创建旋转数组。为此,请使用该属性。SnapRotationAngle



NumberOfRows = 4、NumberOfColumns = 3、DistBetweenRows = a、DistBetweenColumns = b 的矩形数组。基本图元以蓝色表示。

注意:不能在同时循环访问集合时执行此方法。迭代将为只读操作打开工作空间,而此方法将尝试执行读写操作。在调用此方法之前,请完成任何迭代。

AttributeReference:不应尝试在对象上使用此方法。 对象继承此方法,因为它们是绘图对象之一,但是,对属性参照执行此操作是不可行的。AttributeReferenceAttributeReference

例子

VBA:

Sub Example_ArrayRectangular()
    ' This example creates a circle and then performs
    ' a rectangular array on that circle.
    
    ' Create the circle
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 2#: center(1) = 2#: center(2) = 0#
    radius = 0.5
    Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
    ThisDrawing.Application.ZoomAll
    MsgBox "Perform the rectangular array on the circle.", , "ArrayRectangular Example"
    
    ' Define the rectangular array
    Dim numberOfRows As Long
    Dim numberOfColumns As Long
    Dim numberOfLevels As Long
    Dim distanceBwtnRows As Double
    Dim distanceBwtnColumns As Double
    Dim distanceBwtnLevels As Double
    numberOfRows = 5
    numberOfColumns = 5
    numberOfLevels = 2
    distanceBwtnRows = 1
    distanceBwtnColumns = 1
    distanceBwtnLevels = 1
    
    ' Create the array of objects
    Dim retObj As Variant
    retObj = circleObj.ArrayRectangular(numberOfRows, numberOfColumns, numberOfLevels, distanceBwtnRows, distanceBwtnColumns, distanceBwtnLevels)
    
    ZoomAll
    MsgBox "Rectangular array completed.", , "ArrayRectangular Example"
    
End Sub

可视化 LISP:

(vl-load-com)
(defun c:Example_ArrayRectangular()
    ;; This example creates a circle and then performs
    ;; a rectangular array on that circle.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; Create the circle
    (setq center (vlax-3d-point 2 2 0)  
          radius 0.5)

    (setq modelSpace (vla-get-ModelSpace doc))  
    (setq circleObj (vla-AddCircle modelSpace center radius))
    (vla-ZoomAll acadObj)

    (alert "Perform the rectangular array on the circle.")

    ;; Define the rectangular array
    (setq numberOfRows 5
          numberOfColumns 5
          numberOfLevels 2
          distanceBwtnRows 1.0
          distanceBwtnColumns 1.0
          distanceBwtnLevels 1.0)

    ;; Create the array of objects
    (setq retObj (vla-ArrayRectangular circleObj numberOfRows numberOfColumns numberOfLevels
		                                 distanceBwtnRows distanceBwtnColumns distanceBwtnLevels))

    (vla-ZoomAll acadObj)
    (alert "Rectangular array completed.")
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 15:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部