只要实体不重叠并水平排列,这将起作用。
- (defun C:test (/ ss p l i d v)
- (setq ss (ssget "_:L" '((0 . "CIRCLE,ARC,*OLYLINE")))
- p (getpoint "\nPick a point")
- d (getdist p "\nDistance between lines ; ")
- )
- (foreach x
- (vl-sort
- (repeat (setq i (sslength ss))
- (setq i (1- i)
- l (cons (ssname ss i) l)
- )
- )
- (function
- (lambda (x1 x2)
- (<
- (car
- (cdr
- (assoc 10
- (entget x1)
- )
- )
- )
- (car
- (cdr
- (assoc 10
- (entget x2)
- )
- )
- )
- )
- )
- )
- )
- (setq v (vlax-ename->vla-object x)
- l (cond
- ((vlax-property-available-p v 'length) (vla-get-length v))
- ((vlax-property-available-p v 'circumference) (vla-get-circumference v))
- ((vlax-property-available-p v 'arclength) (vla-get-arclength v))
- )
- )
- (entmake
- (list
- (cons 0 "LINE")
- (cons 10 p)
- (cons 11 (polar p (* pi 1.5) l))
- )
- )
- (setq p (polar p 0 d))
- )
- (princ)
- )
- (vl-load-com)
|