Vla-addpolyfacemesh

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年2月2日 (月) 22:21時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-addpolyfacemesh ''vla-object'' ''VerticesList'' ''FaceList'') ; 機能 : 頂点のリストからポリメッシュを作成する。 ; ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(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)
)

関連事項