ArrayRectangular メソッド(ActiveX)

オブジェクトの 2 次元または 3 次元の矩形状配列複写を作成します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

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

タイプ: すべての図形オブジェクト

このメソッドが適用されるオブジェクト。

NumberOfRows

アクセス: 入力のみ

タイプ: 長整数型

矩形状配列複写の行数。正数。この数値が 1 の場合、NumberOfColumns は 1 より大きくなければなりません。

NumberOfColumns

アクセス: 入力のみ

タイプ: 長整数型

矩形状配列複写の列数。正数。この数値が 1 の場合、NumberOfRows は 1 より大きくなければなりません。

NumberOfLevels

アクセス: 入力のみ

タイプ: 長整数型

3D 配列のレベル数。

DistBetweenRows

アクセス: 入力のみ

タイプ: 倍精度浮動小数点数型

行の間隔。行の間隔が正数の場合、基本図形から上方へ行が追加されます。間隔が負数の場合、行は下方へ追加されます。

DistBetweenColumns

アクセス: 入力のみ

タイプ: 倍精度浮動小数点数型

列の間隔。列の間隔が正数の場合、基本図形から右方向に列が追加されます。間隔が負数の場合、列は左方向に追加されます。

DistBetweenLevels

アクセス: 入力のみ

タイプ: 倍精度浮動小数点数型

配列レベルの間隔。レベルの間隔が正数の場合、基本図形から正の方向にレベルが追加されます。間隔が負数の場合、負の方向に追加されます。

戻り値(RetVal)

タイプ: バリアント型(オブジェクトの配列)

新しく作成されるオブジェクトの配列。

注意

2D 配列の場合は、NumberOfRowsNumberOfColumnsDistBetweenRowDistBetweenColumns を指定します。3D 配列を作成する場合は、その他に NumberOfLevelsDistBetweenLevels も指定します。

矩形状配列複写は、選択セット内のオブジェクトを何回か反復して複写することにより構築されます。つまり行を 1 つ定義したら、複数の列を指定するといった具合です。

選択セットのオブジェクトは左下コーナーにあるものとみなされ、配列はそのオブジェクトの上および右に向かって生成されます。行間が負の値の場合、行は下方に追加されます。列の間隔が負数の場合、列は左向きに追加されます。

AutoCAD では、現在のスナップ回転角度によって定義されたベースラインに沿って、矩形状配列複写が作成されます。この角度の既定値は 0 であり、したがって矩形状配列の行と列は図面の X 軸と Y 軸に対し直角になります。この角度を変更してスナップ回転角度を 0 以外の値に設定すれば、回転した配列を作成できます。それには、SnapRotationAngle プロパティを使用します。



NumberOfRows = 4、NumberOfColumns = 3 、 DistBetweenRows = a 、DistBetweenColumns = b の矩形状配列複写。基本図形は青で表されます。

注: コレクション内で何度も繰り返しながら、このメソッドを実行できません。このメソッドは読み書きの操作を行いますが、繰り返し処理を実行すると読み出し専用の作業領域が開いてしまいます。このメソッドを呼び出す前に、繰り返し処理を完了させるようにしてください。

AttributeReference:AttributeReference オブジェクトにこのメソッドを使用するべきではありません。AttributeReference オブジェクトがこのメソッドを継承しているのは、図面オブジェクトの 1 つだからですが、属性参照でこの処理を実行することはできません。

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

Visual 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.")
)