Vla-slicesolid

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年12月25日 (金) 11:15時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla- ''vla-object'' ''Point1'' ''Point2'' ''Point3'' ''Negative'') ; 機能 : 平面を定義する 3 点を指定して、3DSolid オブジェ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla- vla-object Point1 Point2 Point3 Negative)


機能
平面を定義する 3 点を指定して、3DSolid オブジェクトの切断面を作成する。


引数
  • vla-object … 3DSolid の VLAオブジェクト
  • Point1 … 1 番目の点を指定する 3D WCS 座標。
  • Point2 … 2 番目の点を指定する 3D WCS 座標。
  • Point3 … 3 番目の点を指定する 3D WCS 座標。
  • Negative … ブール値。ソリッドの平面の負の側にある部分を返すかどうかを指定する。
  • :vlax-True の場合、CAD は元のソリッドの平面の負の法線側にある部分を含む新規の Acad3DSolid オブジェクトを作成する。


戻り値
結果として作成される 3DSolid オブジェクトの切断面。


サンプル
(vl-load-com)
(defun c:Example_SliceSolid()
    ;; モデル空間内のソリッドのボックスを作成して、
    ;; 次の3つの点によって規定される平面に基づいてボックスをスライスするサンプル。
    ;; スライスは 3Dsolid として返される。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; ボックスの定義
    (setq center (vlax-3d-point 5 5 0)
          boxLength 5
	         boxWidth 7
	         boxHeight 10)
    
    ;; ボックス (3DSolid) をモデル空間に生成
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq boxObj (vla-AddBox modelSpace center boxLength boxWidth boxHeight))
    
    ;; スライス用の平面点の定義
    (setq slicePt1 (vlax-3d-point 1.5 7.5 0)
          slicePt2 (vlax-3d-point 1.5 7.5 10)
          slicePt3 (vlax-3d-point 8.5 2.5 10))
    
    ;; ボックスをスライス
    (setq sliceObj (vla-SliceSolid boxObj slicePt1 slicePt2 slicePt3 :vlax-true))
    
    ;; 表示を更新
    (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)
)

関連事項