Vla-get-ndensity

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年2月4日 (木) 10:08時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-ndensity ''vla-object'' ) ; 機能 : ポリメッシュの N 方向における滑らかなサーフェス密度を取得する。...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-get-ndensity vla-object )


機能
ポリメッシュの N 方向における滑らかなサーフェス密度を取得する。


引数
  • vla-object … PolygonMesh のVLAオブジェクト


戻り値
サーフェス密度の整数(既定値 = 6 )


  • MEMO : N サーフェス密度は、タイプが acQuadSurfaceMesh、acCubicSurfaceMesh、acBezierSurfaceMeshの PolygonMesh オブジェクトの N 方向の頂点の数。
  • このプロパティの初期値は、システム変数 SURFV の値 + 1 から導き出される。つまり、SURFV の現在の値が 6 の場合、サーフェス フィット操作を行った後のメッシュの NDensity は 7 になる。
  • メッシュにサーフェス フィット操作を実行するためには、Type プロパティを使用してメッシュ タイプを変更する必要がある。


サンプル
(vl-load-com)
(defun c:Example_ndensity()
    ;; 4 x 4 のポリゴンメッシュを作成してN 方向における
    ;; 滑らかなサーフェス密度を変更するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; ポリゴンメッシュの定義
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 47)))
    (vlax-safearray-fill points 
                         '(2    2  1
                           2.5  2  0
                           5    2  0
                           5.5  2  1
                           2    4  0.5
                           2.5  4  0
                           5    4  0
                           5.5  4  0.5
                           2    6  0.5
                           2.5  6  0
                           5    6  0
                           5.5  6  0.5
                           2    8  1
                           2.5  8  0
                           5    8  0
                           5.5  8  1
                          )
    )
    
    (setq mSize 4
          nSize 4)
    
    ;; ポリゴンメッシュを作成
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq meshObj (vla-Add3DMesh modelSpace mSize nSize points))
    
    ;; 表示を変更
    (setq NewDirection (vlax-3d-point -1 -1 1))
    (setq activeViewport (vla-get-ActiveViewport doc))
    (vla-put-Direction activeViewport NewDirection)
    (vla-put-ActiveViewport doc activeViewport)
    (vla-ZoomAll acadObj)

    ;; メッシュタイプを変更 (NDensity は acSimpleMesh じゃだめ。)
    (vla-put-Type meshObj acQuadSurfaceMesh)
    (vla-Update meshObj)
    (vla-Regen doc acActiveViewport)

    ;; NDensity を取得
    (setq currDensity (vla-get-NDensity meshObj))
    (alert (strcat "メッシュの NDensity は" (itoa currDensity)))
    (vla-put-NDensity meshObj 12)
    (alert (strcat "メッシュの NDensity は" (itoa currDensity)))

関連事項