Vla-setwidth
- 構文
- (vla-setwidth vla-object SegmentIndex StartWidth EndWidth)
- 機能
- ポリラインの セグメント インデックスを指定して、ポリラインの始点と終点の幅を設定する。
- 引数
-
- vla-object … LWPolyline、Polyline の VLAオブジェクト
- SegmentIndex … 幅を設定するセグメントを指定するインデックス。最初のセグメントは、インデックス 0。
- StartWidth … 指定されたセグメントの始点の幅。
- EndWidth … 指定されたセグメントの終点の幅。
- 戻り値
- nil
- 注意 : SegmentIndex は、ポリラインの特定セグメントのインデックス。たとえば、3 つのセグメントを持つポリラインには、セグメント インデックス 0、1、および 2 がある。
Polyline : このメソッドはポリラインの Type プロパティが acCubicSplinePoly または acQuadSplinePoly の場合は失敗する。
- サンプル
(vl-load-com)
(defun c:Example_SetWidth()
;; 選択したポリラインの各セグメントの幅が表示するサンプル
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(vla-GetEntity (vla-get-Utility doc) 'returnObj 'basePnt "ポリラインを選択 : ")
;; ポリラインの選択確認
(if (/= returnObj nil)
(progn
(if (= (vla-get-ObjectName returnObj) "AcDbPolyline")
(progn
;; 選択したポリラインの各頂点の座標を取得。
;; 座標点を配列で返す。
(setq retCoord (vlax-variant-value (vla-get-Coordinates returnObj)))
(setq segment 0
i (vlax-safearray-get-l-bound retCoord 1) ;; 座標配列のインデックスを開始。
j (vlax-safearray-get-u-bound retCoord 1) ;; 座標配列の終了インデックス
nbr_of_vertices (+ (/ (- j i) 2) 1)) ;; ポリラインの頂点の数
;; ポリライン内のセグメント数を決定。
;; 閉じたポリラインは、頂点があり、多くのセグメント。
;; 開いているポリラインが 1 つ少ないセグメントの頂点を持っている。
;; ポリラインが閉じているかどうかは確認
(if (= (vla-get-Closed returnObj) :vlax-true)
(setq nbr_of_segments nbr_of_vertices)
(setq nbr_of_segments (1- nbr_of_vertices))
)
;; ポリラインの各セグメントの幅を取得。
(while (>= nbr_of_segments 0)
;; 幅の値を取得。
(setq promptStart (strcat "\nセグメントの始点での幅を指定。"
(rtos (vlax-safearray-get-element retCoord i) 2) ","
(rtos (vlax-safearray-get-element retCoord (1+ i)) 2) " ==> "))
(setq promptEnd (strcat "\nセグメントの終点での幅を指定。 ==> "))
(setq StartWidth (vla-GetReal (vla-get-Utility doc) promptStart))
(setq EndWidth (vla-GetReal (vla-get-Utility doc) promptEnd))
;; 現在のセグメントの幅を設定
(vla-SetWidth returnObj segment StartWidth EndWidth)
;; もし次のセグメントがあれば幅を取得する準備をする。
(setq i (+ i 2)
segment (1+ segment)
nbr_of_segments (1- nbr_of_segments))
)
)
(alert "ポリラインじゃないし")
)
)
(alert "図形選べてなす.")
)
)
関連事項