Vla-get-fitpoints
- 構文
- (vla-get-fitpoints vla-object )
- 機能
- スプラインのフィット点を取得する。
- 引数
-
- vla-object … Spline の VLAオブジェクト
- 戻り値
- スプラインのフィット点を表す 3D WCS 座標の配列
- MEMO : フィット点はスプラインのパスを定義する。指定されたフィット点の公差を変更するには、FitTolerance プロパティを使用する。フィット点を追加するには、AddFitPoint メソッドを使用する。フィット点を削除するには、DeleteFitPoint メソッドを使用する。フィット点の位置を取得するには、GetFitPoint メソッドを使用する。指定されたフィット点の位置を変更するには、SetFitPoint メソッドを使用する。
- サンプル
(vl-load-com)
(defun c:Example_FitPoints()
;; スプラインを作成して、スプラインのフィット点を
;; 変更するサンプル。
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; スプラインの定義
(setq startTan (vlax-3d-point 0.5 0.5 0)
endTan (vlax-3d-point 0.5 0.5 0)
fitPoints (vlax-make-safearray vlax-vbDouble '(0 . 8)))
(vlax-safearray-fill fitPoints
'(0 0 0
5 5 0
10 0 0
)
)
;; スプラインを作成
(setq modelSpace (vla-get-ModelSpace doc))
(setq splineObj (vla-AddSpline modelSpace fitPoints startTan endTan))
(vla-ZoomAll acadObj)
;; スプラインのフィット点を取得
(setq fitPoints (vlax-variant-value (vla-get-FitPoints splineObj)))
;; 3 つのグループで表示。
(setq UserMessage ""
iPoint 0
iCount 0)
(while (>= (vlax-safearray-get-u-bound fitPoints 1) iCount)
(setq iPoint (1+ iPoint))
(setq UserMessage (strcat UserMessage (itoa iPoint) ") "
(rtos (vlax-safearray-get-element fitPoints iCount) 2) ", "
(rtos (vlax-safearray-get-element fitPoints (+ iCount 1)) 2) ", "
(rtos (vlax-safearray-get-element fitPoints (+ iCount 2)) 2) "\n"))
(setq iCount (+ iCount 3))
)
(alert (strcat "この" (itoa (vla-get-NumberOfFitPoints splineObj)) " スプラインフィット点は : \n\n" UserMessage))
;; フィット点の変更
(vlax-safearray-put-element fitPoints 0 3)
(vla-put-FitPoints splineObj fitPoints)
;; フィット点を追加
(setq NewFP (vlax-3d-point 15 4 0))
(vla-AddFitPoint splineObj (+ (vla-get-NumberOfFitPoints splineObj) 1) NewFP)
(vla-ZoomAll acadObj)
;; フィット点を表示
(setq fitPoints (vlax-variant-value (vla-get-FitPoints splineObj)))
(setq UserMessage ""
iPoint 0
iCount 0)
(while (>= (vlax-safearray-get-u-bound fitPoints 1) iCount)
(setq iPoint (1+ iPoint))
(setq UserMessage (strcat UserMessage (itoa iPoint) ") "
(rtos (vlax-safearray-get-element fitPoints iCount) 2) ", "
(rtos (vlax-safearray-get-element fitPoints (+ iCount 1)) 2) ", "
(rtos (vlax-safearray-get-element fitPoints (+ iCount 2)) 2) "\n"))
(setq iCount (+ iCount 3))
)
(alert (strcat "この " (itoa (vla-get-NumberOfFitPoints splineObj)) " スプラインフィット点は : \n\n" UserMessage))
)
関連事項