您需要为每个对象使用边界框lisp,并查看与点Y相比较低的Y值。
- (vl-load-com)
- (defun al-getboundingbox (obj / )
- (setq newbox (vla-GetBoundingBox obj 'minpoint 'maxpoint ))
- (setq newy (cadr (vlax-safearray->list minpoint)))
- )
- (defun c:movey ( / ss)
- (setq pt (getpoint "pick point"))
- (setq y (cadr pt)) ; y value of point
- (setq ss (ssget "x" (list (cons 410 "model"))))
- (repeat (setq J (sslength ss))
- (setq obj (vlax-ename->vla-object(ssname ss (setq j (- j 1)))))
- (al-getboundingbox obj)
- (if (> newy Y)
- (command "move" (ssname ss j) "" (list 0 0) (list 0 100))
- )
- )
- )
|