「Vla-getboundingbox」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
40行目: 40行目:
       (alert str)
       (alert str)
     )))
     )))
;;;------------------------------------------------
(defun GZ:ssbbox ( s / a b i m n o )
  (repeat (setq i (sslength s))
    (if (and
          (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
          (vlax-method-applicable-p o 'getboundingbox)
          (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
        )
      (setq m (cons (vlax-safearray->list a) m)
            n (cons (vlax-safearray->list b) n) )))
  (if (and m n)
    (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list m n)) )
)


</pre>
</pre>

2014年11月7日 (金) 13:01時点における最新版

構文
(vla-getboundingbox vla-object MinPoint MaxPoint)


機能
指定されたオブジェクトを囲むボックスの 2 点を取得する。


引数
  • vla-object … ボックスを取得する VLA オブジェクト(すべての図形オブジェクト,、AttributeReference、Dimension)
  • MinPoint … オブジェクトの境界ボックスの最小点を指定する 3D WCS 座標。 バリアント型(3 要素の倍精度浮動小数点数型配列)
  • MaxPoint … オブジェクトの境界ボックスの最大点を指定する 3D WCS 座標。 バリアント型(3 要素の倍精度浮動小数点数型配列)


戻り値
nil
  • memo: 各コーナーは、WCS の X、Y、Z 軸に平行なエッジを持つ WCS 座標のボックスである。


サンプル
(defun C:bbox-Test ()
  (vl-load-com)
  (setq obj (vlax-ename->vla-object (car (entsel))))
  (if obj
    (progn
      (vla-getboundingbox obj 'minpt 'maxpt)
      (setq minpt (vlax-safearray->list minpt))
      (setq maxpt (vlax-safearray->list maxpt))
      (setq minpt (list (car minpt) (cadr minpt)))
      (setq maxpt (list (car maxpt) (cadr maxpt)))
      (setq str (strcat
	  "Minimum Point X: " (rtos (car minpt) 2 16)
	  "、Y: " (rtos (cadr minpt) 2 16) "\n"
	  "Max Point X: " (rtos (car maxpt) 2 16)
	  "、Y: " (rtos (cadr maxpt) 2 16)
	  ))
      (alert str)
    )))

;;;------------------------------------------------
(defun GZ:ssbbox ( s / a b i m n o )
  (repeat (setq i (sslength s))
    (if (and
          (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
          (vlax-method-applicable-p o 'getboundingbox)
          (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
        )
      (setq m (cons (vlax-safearray->list a) m)
            n (cons (vlax-safearray->list b) n) )))
  (if (and m n)
    (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list m n)) )
)


関連事項