Message 1 of 12
"Find and replace" range of numbers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have this script I am currently using to remove crap data
(defun c:Fix_Labels
(/ tss)(vl-load-com)
(setq findText '("01." "02." "03." "04." "05." "06." "07." "08." "09." "10." "11." "12." "1900" "1901" "1902" "1903" "1904" "1905" "1906" "1907" "1908" "1909" "1910" "1911" "1912" "1913" "1914" "1915" "1916" "1917" "1918" "1919" "1920" "1921" "1922" "1923" "1924" "1925" "1926" "1927" "1928" "1929" "1930" "1931" "1932" "1933" "1934" "1935" "1936" "1937" "1938" "1939" "1940" "1941" "1942" "1943" "1944" "1945" "1946" "1947" "1948" "1949" "1950" "1951" "1952" "1953" "1954" "1955" "1956" "1957" "1958" "1959" "1960" "1961" "1962" "1963" "1964" "1965" "1966" "1967" "1968" "1969" "1970" "1971" "1972" "1973" "1974" "1975" "1976" "1977" "1978" "1979" "1980" "1981" "1982" "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990" "1991" "1992" "1993" "1994" "1995" "1996" "1997" "1998" "1999" "2000" "2001" "2002" "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012" "2013" "2014" "2015" "2016" "2017" "2018" "2019" "2020" "2021"))
(setq replaceText "")
(foreach item findText
(if (setq ss (ssget "X" (list '(0 . "*TEXT") (cons 1 (strcat "*" item "*")))))
(repeat (setq i (sslength ss))
(setq ed (entget (ssname ss (setq i (1- i)))))
(setq tx (cdr (assoc 1 ed)))
(setq tx (vl-string-subst replaceText item tx))
(entmod (subst (cons 1 tx) (assoc 1 ed) ed)))))
(setq findText '("0000" "000"))
(setq replaceText "P.")
(foreach item findText
(if (setq ss (ssget "X" (list '(0 . "*TEXT") (cons 1 (strcat "*" item "*")))))
(repeat (setq i (sslength ss))
(setq ed (entget (ssname ss (setq i (1- i)))))
(setq tx (cdr (assoc 1 ed)))
(setq tx (vl-string-subst replaceText item tx))
(entmod (subst (cons 1 tx) (assoc 1 ed) ed)))))
)
It needs to do it in the same order of find + replace that I have it doing now, but also there are two conditions it doesn't handle that I would like to:
1. "00" replace with P. - but ONLY after the script has evaluated the rest of my list, AND ONLY if it is at the beginning of a number (For example: 001234 would be P.1234 BUT 123400 would NOT be changed to be 1234P.)
2. After all of that is evaluated, I have a very large number range of numbers I want to be removed (3100000-3200000)
Any help to tweak this script, or create a whole new one would be highly appreciated. Thank you!