Vla-get-fitpoints

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年1月28日 (木) 14:17時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-fitpoints ''vla-object'' ) ; 機能 : スプラインのフィット点を取得する。 ; 引数 :* vla-object … Spline の VLA...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(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))  
)

関連事項