- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi All,
I have the following lisp routine that creates a new layer and adds a suffix to the end. I want to alter the lisp to create a new layer, remove the existing prefix and replace it with a new specified one. try after try I cannot get it to function correctly.
Before: C-BME-BLD would become C-BME-BLD-DEMO
Wanting: C-BME-BLD to become C-DEMO-BLD
Please HELP!!
(defun c:layrn()
(setq LsuffIX (ustr 1 "Enter layer suffix " "-DEMO" nil))
(if (not ncltlist)(load "ncltlist"))
(setq STUFF (ncltlist)
LAYLIST (car STUFF)
ENTS (cadr STUFF)
CNTR 0
)
(foreach LAYDAT LAYLIST (progn
(setq LAYNME2 (strcat (car LAYDAT) LsufFIX))
(command "layer" "m" LAYNME2 "C" (cadr LAYDAT) "" "lt" (caddr LAYDAT) "" "")
(prompt "-")
)
)
(SETQ ALIS (SSGET))
;(COMMAND "CHANGE" ALIS "" "P" "LT" "hidden2" "C" "13" "")
(repeat (sslength ENTS)
(setq ENTDAT
(subst
(cons 8
(strcat
(cdr
(setq OLD
(assoc 8
(setq ENTDAT
(entget
(setq ENTNME
(ssname ENTS CNTR)
)
)
)
)
)
) LsufFIX
)
) OLD ENTDAT
)
)
(entmod ENTDAT)
(entupd ENTNME)
(setq CNTR (1+ CNTR))
(prompt ".")
);repeat
(princ)
)
(defun ustr (bit msg def spflag / inp nval)
(if (and def (/= def ""))
(setq msg (strcat "\n" msg " <" def ">: ")
inp (getstring msg spflag)
inp (if (= inp "") def inp)
);setq
(progn
(setq msg (strcat "\n" msg ": "))
(if (= bit 1)
(while (= "" (setq inp (getstring msg spflag))))
(setq inp (getstring msg spflag))
) );progn & if
);if
inp
);defun
(defun nmelist()
(setq cntr 0
NLIST '()
ss1 (ssget)
)
(repeat (sslength ss1)
(setq LYRNME (cdr (assoc 8 (entget (ssname ss1 cntr)))))
(if (not (member LYRNME NLIST))
(setq NLIST (cons LYRNME NLIST))
)
(setq CNTR (1+ CNTR))
);repeat
(setq output (list nlist ss1))
);defun
(defun ncltlist()
(if (not nmelist)(load "nmelist"))
(setq STUFF (nmelist)
NCLT nil
NLIST (car STUFF)
ss1 (cdr STUFF)
)
(foreach LNAME NLIST (progn
(setq LDAT (tblsearch "layer" LNAME)
LCOLOR (cdr (ASSOC 62 LDAT))
LLTYPE (cdr (ASSOC 6 LDAT))
NCLT (CONS (list LNAME LCOLOR LLTYPE) NCLT)
)
)
)
(setq output (cons NCLT ss1))
);defun
Thanks in Advance!
Solved! Go to Solution.