请高手帮忙 - (defun ayGetSSBoundBox(SS1 / i entName1 PtBox1 minPt maxPt PtLB PtRT)
- (setq i 0)
- (repeat (sslength SS1)
- (setq entName1 (ssname SS1 i))
- (vla-GetBoundingBox (vlax-ename->vla-object entName1) 'PtLB 'PtRT)
- (setq PtLB (vlax-safearray->list PtLB))
- (setq PtRT (vlax-safearray->list PtRT))
- (if (= minPt nil)
- (setq minPt PtLB)
- (progn;else
- (if (> (car minPt) (car PtLB)) (setq minPt (List (car PtLB) (cadr minPt))))
- (if (> (cadr minPt) (cadr PtLB)) (setq minPt (List (car minPt) (cadr PtLB))))
- )
- )
- (if (= maxPt nil)
- (setq maxPt PtRT)
- (progn;else
- (if (< (car maxPt) (car PtRT)) (setq maxPt (List (car PtRT) (cadr maxPt))))
- (if (< (cadr maxPt) (cadr PtRT)) (setq maxPt (List (car maxPt) (cadr PtRT))))
- )
- )
- (setq i (+ i 1))
- )
- (if (<= (distance minPt maxPt) 0.0)
- (setq PtBox nil)
- (setq PtBox (list minPt maxPt))
- )
- )
- (DEFUN c:cd()
- (setq osm (getvar "osmode"))
- (setvar "osmode" 0)
- (command "ucs" "w")
- (setvar "osmode" 0)
- (princ"\n请点选物体:")
- (setq SS1 (ssget))
- (if (/= SS1 nil)
- (progn
- (setq Ptbox (ayGetSSBoundBox SS1))
- (progn
- (setq PtBL (car PtBox))
- (setq PtTR (cadr PtBox))
- (setq PtBR (list (car PtTR) (cadr PtBL)))
- (setq PtTL (list (car PtBL) (cadr PtTR)))
- )
- (setq x (distance PtTR PtTL))
- (recw)
- )
- (progn
- (setvar "osmode" 247)
- (SETQ PtTR (GETPOINT "\n请点选第一点:"))
- (setq PtTL (GETPOINT "\n请点选第二点:"))
- (setq x (distance PtTR PtTL))
- (recw)
- )
- )
- )
- (DEFUN recw()
- (setq point (getpoint "\n请指定点:"))
- (setq y (getdist "\n请输入高度:"))
- ( )
- (princ)
- )
|