Vla-addregion
- 構文
- (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>
関連事項