Offset メソッド(ActiveX)

既存のオブジェクトから、指定されたオフセット間隔で新しくオブジェクトを作成します。

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

構文と要素

VBA:

RetVal = object.Offset(Distance)
object

タイプ: ArcCircleEllipseLineLWPolylinePolylineSplineXLine

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

Distance

アクセス: 入力のみ

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

オブジェクトをオフセットする距離。オフセット値は正数でも負数でもかまいませんが、ゼロ以外の値でなければなりません。値が負の場合、「より小さい」曲線へのオフセットとして解釈されます(つまり、円弧の場合、元の曲線の半径よりも Distance 分だけ小さい半径にオフセットします)。「より小さい」図形として解釈できない場合は、WCS の X、Y、Z 座標値の小さい方向にオフセットします。

戻り値(RetVal)

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

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

注意

曲線のオブジェクトにこの操作を実行すると、単一の新しい曲線が作成されます(元の曲線とは種類が異なる場合もあります)。たとえば、楕円をオフセットするとスプラインになりますが、これは、実行結果が楕円の方程式に適合するためです。場合によっては、必要なオフセットを得るために、いくつかの曲線にする必要があります。



元のオブジェクトとオフセットされたオブジェクト(赤で示されています)。

VBA:

Sub Example_Offset()
    ' This example creates a lightweight polyline
    ' and then offsets the polyline.
    
    ' Create the polyline
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 1
    Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
    plineObj.Closed = True
    ZoomAll
            
    MsgBox "Offset the polyline by 0.25.", , "Offset Example"
    
    ' Offset the polyline
    Dim offsetObj As Variant
    offsetObj = plineObj.offset(0.25)
    
    ZoomAll
    MsgBox "Offset completed.", , "Offset Example"
    
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_Offset()
    ;; This example creates a lightweight polyline
    ;; and then offsets the polyline.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
  
    ;; Create the polyline
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 11)))
    (vlax-safearray-fill points '(1 1
                                  1 2
                                  2 2
                                  3 2
                                  4 4
                                  4 1
                                 )
    )

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq plineObj (vla-AddLightWeightPolyline modelSpace points))
    (vla-put-Closed plineObj :vlax-true)
    (vla-ZoomAll acadObj)
            
    (alert "Offset the polyline by 0.25.")
    
    ;; Offset the polyline
    (setq offsetObj (vla-Offset plineObj 0.25))
    
    (vla-ZoomAll acadObj)
    (alert "Offset completed.")
)