 - ;;;;通用函数开始
- (defun minmm_ss->enlist (ss / lst n en)
- (setq n -1)
- (while (setq en (ssname ss (setq n (1+ n))))
- (setq lst (cons en lst))
- )
- )
- (defun minmm_objBox (obj / minpoint maxpoint)
- (vla-GetBoundingBox obj 'minpoint 'maxpoint)
- ;取得包容图元的最大点和最小点
- (setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
- (setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
- ;;;;GetBoundingBox返回的是WCS,需转换为用户坐标系ucs
- ;;;2011.08.22 08:30修改此通用函数
- ;;;感谢明经通道的caoyin版主,xshrimp大侠的指点!
- (setq minpoint (trans minpoint 0 1))
- (setq maxpoint (trans maxpoint 0 1))
- (setq obj (list minpoint maxpoint));;;组合成点表
- )
- (defun minmm_ssbox (ss / boxlst maxlst minlst objlst)
- (setq objlst (mapcar 'vlax-ename->vla-object (minmm_ss->enlist ss)))
- (setq boxlst (mapcar 'minmm_objBox objlst))
- (setq minlst (mapcar 'car boxlst))
- (setq maxlst (mapcar 'cadr boxlst))
- (list
- (apply 'mapcar (cons 'min minlst))
- (apply 'mapcar (cons 'max maxlst))
- )
- )
- ;;;通用函数结束
- (setq ss (SSGET '((0 . "insert"))));;;选择对象
- (setq shulist (minmm_ssbox ss))
- (setq p1 (car shulist ));;;左下角
- (setq p2 (cadr shulist ));;;右上角
- ;;;mx┏━a━━━┓p2
- ;;; ┃ ┃
- ;;; b b
- ;;; ┃ ┃
- ;;; ┃ ┃
- ;;;p1┗━a━━━┛my
- (setq px1 (car p1)) ; 取得p1坐标的x值
- (setq py1 (cadr p1)) ; 取得p1坐标的y值
- (setq px2 (car p2)) ; 取得p2坐标的x值
- (setq py2 (cadr p2)) ; 取得p2坐标的y值
-
- (setq mx (list px1 py2)) ; 求得mx坐标值
- (setq my (list px2 py1)) ; 求得my坐标值
- (setq a (distance mx p2));;;mx点 ,p2点之间的距离:横向的距离值
- (setq b (distance p1 mx));;;p1点 ,mx点之间的距离:纵向的距离值
|