没有图纸可以测试,简单写了一个
- (Defun _RenameBlockLayer (ValueList / BN DONE NEW OLD)
- (vlax-for blk (vla-get-Blocks
- (vla-get-ActiveDocument (vlax-get-acad-object))
- )
- (setq bn (vla-get-Effectivename blk))
- (if (null (member bn done))
- (progn
- (setq done (cons bn done))
- (vlax-for obj blk
- (setq old (vla-get-layer obj))
- (if (setq new (cdr (assoc old ValueList)))
- (vla-put-layer obj new)
- )
- )
- )
- )
- )
- )
- (Defun _SuperLayerRename (data / BBB NEW OLD SS)
- (foreach abc data
- (setq old (car abc)
- new (cadr abc)
- )
- (cond ((and (tblsearch "Layer" old)
- (null (tblsearch "Layer" new))
- )
- (command "_.Rename" "Layer" old new)
- )
- ((and (tblsearch "Layer" old)
- (tblsearch "Layer" new)
- )
- (setq bbb (cons (cons old new) bbb))
- (if (setq ss (ssget "_x" (list (cons 8 old))))
- (command "_.change" ss "" "_p" "la" new "")
- )
- )
- )
- )
- (if bbb
- (progn
- (_RenameBlockLayer bbb)
- (command "_.Purge" "Layer" "*" "n")
- )
- )
- )
- 用法:
- (_SuperLayerRename
- '(("梁虚线" "BEAM")
- ("梁" "BEAM_CON")
- ("砼墙" "WALL")
- ("柱" "COLU")
- ("洞口边线" "HOLE")
- ("悬挑板" "LINE")
- )
- )
|