Hi guys,
I tried to write a code to search a string (extracted from selection set) in another selection set. this will return me closest specific text from left hand side of a given string. Tried with both, while and repeat.
For reference drawing attached.
I have used modified Tharwat's code from my earlier post.
Any help will be highly appreciated.
(setq valveassocvfd (ssget "_w" '(8.02218 21.63036) '(34.03070 3.93130) '((0 . "text,mtext") (1 . "M*"))))
(if (/= valveassocvfd nil) (progn
(repeat (setq inc (sslength valveassocvfd))
(setq closest 40)
(setq mn '())
(setq Ename (ssname valveassocvfd (setq inc (1- inc))))
(setq elst (entget Ename))
(setq mno (cdr (assoc 1 elst)));delete later
(setq allvalvenames2 (ssget "_w" '(8.02218 21.63036) '(34.03070 3.93130) '((0 . "text,mtext") (1 . "5,6,7,8"))))
(while (/= allvalvenames2 nil)
(setq MEname (ssname allvalvenames2 (setq ind (1- ind))))
(setq Melst (entget MEname))
(setq jbno (cdr (assoc 1 Melst)));delete later
(if (> (car (cdr (assoc 11 elst))) (car (cdr (assoc 11 Melst))))
(progn
(setq distvfd (distance (cdr (assoc 11 elst)) (cdr (assoc 11 Melst))))
(if (<= distvfd closest)
(progn
(setq closest distvfd)
(setq closestvfdtext MEname)
);progn
);if
);progn
);if
(setq allvalvenames2 (ssdel Melst allvalvenames2))
);while
(if closestvfdtext (progn (setq mn (cons (strcat "[" (cdr (assoc 1 (entget closestvfdtext))) "]") mn))))
(if closestvfdtext (progn (setq mn (cons (strcat "[" (cdr (assoc 1 (entget Ename))) "]") mn))))
(setq valveinformation8 (cons mn valveinformation8))
(setq valveassocvfd (ssdel Ename valveassocvfd))
);repeat
));progn,if