@avinash00002002 wrote:
Hi
in this function is it possible to get the block name after sorting.
Thanks,
Avinash
(defun c:get_x_y_distances ( / take p1 p2 ang1 ang2 ss tp i m n ipt dx dy distlist)
(defun take (amount lst / ret)(repeat amount (setq ret (cons (car lst) (take (1- amount) (cdr lst))))))
(setq p1 (take 2(getpoint "\nRectangle base left point >")))
(setq p2 (take 2(getpoint "\nRectangle base rigth point >")))
(setq ang1 (angle p1 p2))
(setq ang2 (+ ang1 (* 0.5 PI)))
(princ "\n>")
(princ "\nSelect all holes >")
(setq ss (ssget '((0 . "INSERT"))))
(princ "\n")
(initget "x y")
(setq tp (getkword "\n Extract x or y distances [x y] > "))
(setq i -1)
(while (< (setq i (1+ i))(sslength ss))
(setq m (take 2(cdr (assoc 10 (entget(ssname ss i))))))
(setq n (take 2(polar m ang2 10)))
(setq name (cdr (assoc 2 (entget(ssname ss i)))))
(setq ipt (inters p1 p2 m n nil))
(setq dx (distance p1 ipt))
(setq dy (distance m ipt))
(setq distlist (cons (list dx dy name) distlist))
)
(setq distlist (vl-sort distlist '(lambda (a b) (< (car a)(car b)))))
(cond
(( = tp "x")
(setq distlist (mapcar '(lambda (x)(list (car x)(last x))) distlist))
)
(( = tp "y")
(setq distlist (mapcar '(lambda (x)(list (cadr x)(last x))) distlist))
)
)
distlist
)
Extract x or y distances [x y] > x
((30.0 "h2") (85.5 "h1") (140.5 "h3") (185.5 "H6") (215.5 "h16") (295.5 "H18") (395.5 "h2") (458.5 "h2") (548.0 "h2") (648.0 "h1") (683.0 "h1") (713.0 "h1") (968.0 "h1") (1198.0 "H18") (1198.0 "H18") (1358.0 "H18") (1518.0 "H18") (1626.0 "H18") (1671.0 "H18") (1763.0 "H18") (1832.0 "h16") (1862.0 "H6") (1892.0 "h3") (1939.0 "h1"))
Extract x or y distances [x y] > y
((45.0 "h2") (55.0 "h1") (65.0 "h3") (75.0 "H6") (85.0 "h16") (95.0 "H18") (105.0 "h2") (115.0 "h2") (125.0 "h2") (135.0 "h1") (145.0 "h1") (165.0 "h1") (165.0 "h1") (165.0 "H18") (45.0 "H18") (165.0 "H18") (75.0 "H18") (135.0 "H18") (75.0 "H18") (65.0 "H18") (85.0 "h16") (75.0 "H6") (65.0 "h3") (55.0 "h1"))
Miljenko Hatlak

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.