Need lisp that lets me auto-rename multiple layers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I already have a routine I'm working on, that will automatically rename specific layer names, to other specific layer names. So one by one, it'll will rename "EXAMPLE-LAYER-1" to "FANCY-NEW-LAYER". But in order for it to work correctly, I need to know exactly which layers will be in a file. What I need is for every layer that includes the word "EXAMPLE-" to be renamed to "FANCY-NEW-LAYER". But I just don't know how to set that up. I'm pasting my current lisp for reference. Can someone tell me how to tweak it?
{code}
( defun c:EVAN ( / ss_newlayer change_en )
( setq layerlist ( list ( cons "ENB_ROW-1" "ENB-ROW-1" )
( cons "EXISTING-LAYER-SUCKS" "NEW-LAYER-ROCKS" )
( cons "EXISTING-LAYER-UGGH" "NEW-LAYER-ROCKS" )
( cons "EXISTING-LAYER-SHEESH" "NEW-LAYER-ROCKS" ) );list
);sq
( foreach item layerlist
( if ( and ( tblsearch "Layer" ( car item ) )
( not ( tblsearch "Layer" ( cdr item ) )) );a
( command "-Rename" "LAYER" ( car item ) ( cdr item ) )
);i
);fe
( setq ss_newlayer ( ssget "X" ))
( while ( setq change_en ( ssname ss_newlayer 0 ))
( setq ss_newlayer ( ssdel change_en ss_newlayer ))
( if ( assoc ( cdr ( assoc 8 ( entget change_en ))) layerlist )
( entmod ( subst ( cons 8 ( cdr ( assoc ( cdr ( assoc 8 ( entget change_en ))) layerlist ))) ( assoc 8 ( entget change_en )) ( entget change_en ) ))
);i
);w
( princ "\nEVAN IS INSANELY HANDSOME:" )(princ ))
{code}