Vla-addpolyfacemesh

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(vla-addpolyfacemesh vla-object VerticesList FaceList)


機能
頂点のリストからポリメッシュを作成する。


引数
  • vla-object … VLAオブジェクト( Block、ModelSpace、PaperSpace)
  • VerticesList … ポリメッシュの頂点が作成される 3D WCS 座標の配列。ポリメッシュ オブジェクトを構成するには、少なくとも 4 つの点(12 個の倍精度浮動小数点数型)が必要。配列サイズは、3 の倍数でなければならない。
  • FaceList … 各面の頂点の番号を示す整数の配列。面は 4 つの頂点のインデックス値のグループ内で定義されるため、配列サイズは 4 の倍数でなければならない。


戻り値
新しく作成される PolyfaceMesh のVLAオブジェクト。


注意
  • ポリメッシュの作成は、矩形メッシュの作成に似ている。ポリメッシュを作成するには、面を構成するすべての頂点の番号と、その頂点の座標を指定する。
  • 次の図では、面 1 は頂点 1、5、6、2 で定義している。面 2 は頂点 1、4、3、2 で定義している。面 3 は頂点 1、4、7、5 で定義しています。面 4 は頂点 3、4、7、8 で定義している。


サンプル
(vl-load-com)
(defun c:Example_AddPolyfaceMesh()
    ;; ポリフェイスメッシュをモデル空間に作成するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; ポリフェイスメッシュの定義
    (setq vertexList (vlax-make-safearray vlax-vbDouble '(0 . 17)))
    (vlax-safearray-fill vertexList '(4 7 0
                                      5 7 0
                                      6 7 0
                                      4 6 0
                                      5 6 0
                                      6 6 1
                                     )
    )  

    ;; ポリフェイスメッシュの面定義
    (setq FaceList (vlax-make-safearray vlax-vbInteger '(0 . 7)))
    (vlax-safearray-fill FaceList '(1
                                    2
                                    5
                                    4
                                    2
                                    3
                                    6
                                    5
                                   )
    )

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq obj (vla-AddPolyfaceMesh modelSpace vertexList FaceList))

    ;; 作成したポリメッシュをいい感じで表示してみる
    (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)
)

関連事項