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 "図形選べてなす.") ) )
関連事項