既存のオブジェクトから、指定されたオフセット間隔で新しくオブジェクトを作成します。
サポートされているプラットフォーム: Windows のみ
VBA:
RetVal = object.Offset(Distance)
タイプ: Arc、Circle、Ellipse、Line、LWPolyline、Polyline、Spline、XLine
このメソッドが適用されるオブジェクト。
アクセス: 入力のみ
タイプ: 倍精度浮動小数点数型
オブジェクトをオフセットする距離。オフセット値は正数でも負数でもかまいませんが、ゼロ以外の値でなければなりません。値が負の場合、「より小さい」曲線へのオフセットとして解釈されます(つまり、円弧の場合、元の曲線の半径よりも Distance 分だけ小さい半径にオフセットします)。「より小さい」図形として解釈できない場合は、WCS の X、Y、Z 座標値の小さい方向にオフセットします。
タイプ: バリアント型(オブジェクトの配列)
新しく作成される複製オブジェクトの配列
曲線のオブジェクトにこの操作を実行すると、単一の新しい曲線が作成されます(元の曲線とは種類が異なる場合もあります)。たとえば、楕円をオフセットするとスプラインになりますが、これは、実行結果が楕円の方程式に適合するためです。場合によっては、必要なオフセットを得るために、いくつかの曲線にする必要があります。
元のオブジェクトとオフセットされたオブジェクト(赤で示されています)。
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.") )