Vla-addregion
- 構文
- (vla-addregion vla-object ObjectList)
- 機能
- オブジェクトと他の 3D ソリッドまたはリージョン オブジェクトとの間で、ブール演算(和、交差、または差)を実行する。
- 引数
-
- 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 となる。
- サンプル
(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)
)
関連事項