草稿
- (Defun C:test ( / def bnd dir ave ss refpt mn mx e opt o)
- (vl-load-com)
- (defun def (cv msg)
- (cond ((getdist (strcat msg (if (numberp cv)
- (strcat " <" (rtos cv 2 4) ">: ")
- ": "
- ))))
- (cv))
- )
- (defun bnd (e / mn mx)
- (vla-getboundingbox (vlax-ename->vla-object e) 'mn 'mx)
- (list (vlax-safearray->list mn)
- (vlax-safearray->list mx)))
-
- (setq dir '("U" (cadr o) (list (car (cadr o))(+ (cadr mx) dist ht))
- "D" (car o) (list (car (car o))(- (cadr mn) ht dist))
- "L" (car o) (list (- (car mn) ht dist) (cadr (car o)))
- "R" (cadr o) (list (+ (car mx) ht dist)(cadr (cadr o)))
- )
- )
-
- (if (and
- (setq ave (ssget ":S:E" '((0 . "LWPOLYLINE"))))
- (setq dist (def dist "\nEnter Distance: "))
- (setq ht (def ht "\nEnter room Height: "))
- (setq ss (ssget ":L" '((0 . "LWPOLYLINE"))))
- (setq refpt (bnd (ssname ave 0)))
- (setq mn (car refpt) mx (cadr refpt)))
-
- (repeat (sslength ss)
- (setq e (ssname ss 0))
- (redraw e 3)
- (initget 1 "U D L R")
- (setq opt (getkword "\nSelect Direction [up/Down/Left/Right]: "))
- (setq o (bnd e) r (member opt dir))
- (vla-move (vlax-ename->vla-object e)
- (vlax-3d-point (eval (cadr r)))
- (vlax-3d-point (eval (caddr r)) ))
- (redraw e 4)
- (ssdel e ss)))
- (princ)
- )
现在试试。。时间用完了 |