Vla-get-constantwidth

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年2月17日 (水) 21:42時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-constantwidth ''vla-object'' ) ; 機能 : ポリラインのすべてのセグメントに対する全体的な幅を取得する。...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-get-constantwidth vla-object )


機能
ポリラインのすべてのセグメントに対する全体的な幅を取得する。


引数
  • vla-object … VLAオブジェクト(LWPolyline、Polyline)


戻り値
オブジェクトのすべてのセグメントに対する全体的な幅


  • MEMO:このプロパティは、ポリラインのすべてのセグメントの開始幅と終了幅を同一の値に設定する。このプロパティは、すべてのセグメントが同一の幅に設定されている場合に定数幅を戻すだけ。
  • SetWidth および GetWidth メソッドを使用して個々のセグメントの幅を指定する。


サンプル
(vl-load-com)
(defun c:Example_ConstantWidth()
    ;; ポリラインを作成して、幅を変更するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; ポリラインの定義
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 9)))
    (vlax-safearray-fill points '(1 1
                                  1 2
                                  2 2
                                  3 2
                                  4 4))
        
    ;; ポリラインを作成
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq plineObj (vla-AddLightWeightPolyline modelSpace points))
    (vla-ZoomAll acadObj)
    
    ;; セグメント 1 の幅を変更する前にセグメント情報を表示。
    ;; セグメントの幅が均一であるかどうかを確認
    (setq err (vl-catch-all-apply 'vla-get-ConstantWidth (list plineObj)))
    (if (vl-catch-all-error-p err)
        (setq msg " 同じじゃない。")
        (setq msg " 全部同じ。"
              CWidth err)
    )
    
    (alert (strcat "新しいポリラインのセグメントの幅は" msg))    

    ;; 最初のセグメント幅を指定
    (vla-SetWidth plineObj 1 0.1 0.3)
    (vla-Regen doc acAllViewports)
    
    ;; セグメント 1 の幅を変更する前にセグメント情報を表示。
    ;; セグメントの幅が均一であるかどうかを確認
    (setq err (vl-catch-all-apply 'vla-get-ConstantWidth (list plineObj)))
    (if (vl-catch-all-error-p err)
        (setq msg " 同じじゃない。")
        (setq msg " 全部同じ。"
              CWidth err)
    )
    
    (alert (strcat "新しいポリラインのセグメントの幅は" msg))    

    ;;全部同じ幅に
    (vla-put-ConstantWidth plineObj 0.1)
    (vla-Regen doc acAllViewports)
    
    ;; セグメントを統一したらセグメント情報を表示。
    ;; セグメントの幅が均一であるかどうかを確認。
    (setq err (vl-catch-all-apply 'vla-get-ConstantWidth (list plineObj)))
    (if (vl-catch-all-error-p err)
        (setq msg " 同じじゃない。")
        (setq msg " すべて同じ。"
              CWidth err)
    )
    
    (alert (strcat "新しいポリラインのセグメントの幅は" msg))    
)

関連事項