Vla-addregion

提供:GizmoLabs - だいたい CAD LISP なサイト
2018年9月6日 (木) 16:35時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-addregion vla-object ObjectList)


機能
リージョン オブジェクトを追加する。


引数
  • vla-object … メソッドが適用される VLA オブジェクト (Block、ModelSpace、PaperSpace)
  • ObjectList … リージョンとなる閉じた同一平面を形成するオブジェクトの配列。 (Arc、Circle、Ellipse、Line、LWPolyline、Spline)


戻り値
生成されたリージョンの VLA オブジェエクトの配列
  • memo:
    • このメソッドは、曲線の入力配列によって形成される閉じたループからリージョンを作成する。閉じた 2D および平面 3D ポリラインを個別のリージョンに変換し、次に閉じた平面ループを形成するポリライン、線分、および曲線を変換する。3 本以上の曲線が 1 つの端点を共有する場合、最終的なリージョンは任意に決定される。
    • Explode メソッドを使用して、リージョンを個々のループに分解することができる。vla-boolean メソッドを使用すれば、別のソリッドやリージョンとの交差、和、または差によって、合成 3D ソリッドや合成リージョンを作成することができる。
    • 作成される Region オブジェクトの総数は、Ubound(objRegions) - Lbound(objRegions) + 1 となる。


サンプル

<syntaxhighlight lang="lisp" line> (vl-load-com) (defun c:Example_AddRegion()

   ;; 円弧と線分からリージョンを作成するサンプル
   (setq acadObj (vlax-get-acad-object))
   (setq doc (vla-get-ActiveDocument acadObj))
   (setq modelSpace (vla-get-ModelSpace doc))
   ;; 円弧の値
   (setq centerPoint (vlax-3d-point 5 3 0)
         radius 2
         startAngle 0
         endAngle 3.141592)
   (setq arc (vla-AddArc modelSpace centerPoint radius startAngle endAngle))
   
   ;; 線分の値
   (setq line (vla-AddLine modelSpace (vla-get-StartPoint arc) (vla-get-EndPoint arc)))
   (setq curves (vlax-make-safearray vlax-vbObject '(0 . 1)))
   (vlax-safearray-put-element curves 0 arc)
   (vlax-safearray-put-element curves 1 line)
 
   ;; リージョンを作成
   (setq regionObj (vla-AddRegion modelSpace curves))
   (vla-ZoomAll acadObj)

)


(defun c:exp_boolean2 ( / space e1 e2 )

 ;; 閉じた図形からリージョンを作成して
 ;; ブールするサンプル
 (vl-load-com)
 (setq space
   (vlax-get-property (vla-get-ActiveDocument (vlax-get-acad-object))
     (if (= 1 (getvar 'CVPORT))
       'Paperspace
       'Modelspace
     )))
 (if
   (and
     (setq e1 (car (entsel "\n外周図形を選択 : ")))
     (vlax-curve-isClosed e1)
     (setq e2 (car (entsel "\n内周図形を選択 : ")))
     (vlax-curve-isClosed e2)
   )
   (vla-Boolean
     (car (vlax-invoke space 'AddRegion (list (vlax-ename->vla-object e1)))) acSubtraction
     (car (vlax-invoke space 'AddRegion (list (vlax-ename->vla-object e2))))
   )
 )
 (princ)

)

</syntaxhighlight>


関連事項