Vla-getboundingbox

提供:GizmoLabs - だいたい CAD LISP なサイト
2014年11月7日 (金) 13:01時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
印刷用ページはサポート対象外です。表示エラーが発生する可能性があります。ブラウザーのブックマークを更新し、印刷にはブラウザーの印刷機能を使用してください。
構文
(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)) )
)


関連事項