Hi every one,
i have got a lisp from my friend.. this lisp is used to align objects in an even spacing.. the problem is.. we can't give a minimum spacing distance between objects and there is no option for align to a polyline ... because the osnap mode is not working when the command is active... please help.. the Lisp is given below
(defun _bboxandmid (obj / a b l)
(vla-getboundingbox obj 'a 'b)
(list (car (setq l (mapcar 'vlax-safearray->list (list a b))))
(apply '(lambda (a b) (mapcar '(lambda (a b) (/ (+ a b) 2.)) a b)) l)
(cadr l)
)
)
(defun ss->lst (ss / i l)
(if (eq (type ss) 'pickset)
(repeat (setq i (sslength ss))
(setq l (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) l))
)
)
)
(defun c:spb (/ lst p1 g p2 a d)
(if (and (setq lst (ss->lst (ssget "_:L")))
(setq p1 (getpoint "\nSpecify first point: "))
)
(while (eq 5 (car (setq g (grread t 15 0))))
(redraw)
(grdraw p1 (polar (setq p2 (cadr g)) (angle p1 p2) 10000000.) 1 -1)
(setq p1 (trans p1 1 0)
p2 (trans p2 1 0)
a (angle p1 p2)
d (/ (distance p1 p2) (float (length lst)))
)
(vla-move (car lst) (vlax-3d-point (cadr (_bboxandmid (car lst)))) (vlax-3d-point p1))
(mapcar
'(lambda (o1 o2 / l)
(vla-move o2
(vlax-3d-point (cadr (_bboxandmid o2)))
(vlax-3d-point
(polar (cadr (setq l (_bboxandmid o1)))
a
(+ d (distance (car l) (caddr l)))
)
)
)
)
lst
(cdr lst)
)
)
)
(redraw)
(princ)
)