@hanywillim hi,
Give this RENLAY command a try.
the following is on line 68
(setq CHAR2DEL '("." "&" "~")) ; const
A list contains the characters to be remove. if more characters is appear in layers name to be remove, add these characters to this list in the same manner.
Xref layers are ignored. e.g hanywillim|Layer1 is ignore, hany$0$Layer1 is fair game 😀
at end you will be reported how many layers were renamed.
enjoy,
Moshe
(vl-load-com) ; load activex support
(defun c:renlay (/ get_canonical_layers del_redun_char is_layer_renamed summarize ; local functions
adoc CHAR2DEL ctr orgName s)
(defun get_canonical_layers (/ tbl lst lname)
(vl-remove-if
'not
(mapcar
(function
(lambda (s)
(vl-some
(function
(lambda (ch)
(if (vl-string-search ch s) s)
); lambda
); function
CHAR2DEL
); vl-some
); lambda
); function
(progn
(while (setq tbl (tblnext "layer" (not tbl)))
(if (not (vl-string-search "|" (setq lname (cdr (assoc '2 tbl))))) ; xdep layer is skipped
(setq lst (cons lname lst))
); if
); while
lst
); progn
); mapcar
); vl-remove-if
); build_data
; del redundant characters from layer name
(defun del_redun_char (wName nCh / eCh)
(foreach eCh CHAR2DEL
(while (vl-string-search eCh wName)
(setq wName (vl-string-subst nCh eCh wName))
)
); foreach
wName
); del_redun_char
(defun is_layer_renamed (wName oName / ename elist)
(if (not (tblobjname "layer" wName))
(progn
(setq elist (entget (tblobjname "layer" oName)))
(setq wName (vl-string-right-trim " " (vl-string-left-trim " " wName)))
(if (entmod (subst (cons '2 wName) (assoc '2 elist) elist)) wName)
); progn
); if
); is_layer_renamed
(defun summarize ()
(cond
((= ctr 0)
(princ "\n0 layer(s) found to rename.")
); case
( t
(princ (strcat "\n" (itoa ctr) " layer(s) successfully renamed."))
); case
); cond
); summarize
; here start c:renlay
(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-startUndoMark adoc)
(setq CHAR2DEL '("." "&" "~")) ; const
(setq ctr 0)
(foreach orgName (reverse (get_canonical_layers))
(cond
((is_layer_renamed (del_redun_char orgName "") orgName)
(setq ctr (1+ ctr))
); case
((setq s (is_layer_renamed (del_redun_char orgName " ") orgName))
(setq ctr (1+ ctr))
(princ (strcat "\nLayer \"" orgName "\" is renamed to \"" s "\"."))
); case
(t
(princ (strcat "\nfail to rename layer \"" orgName "\"."))
); case
); cond
); foreach
(summarize)
(vla-endUndoMark adoc)
(vlax-release-object adoc)
(princ)
); c:renlay