欢迎来到Micko79论坛
试试这个
- (defun c:LayMod (/ aDoc lyrsColl ltpotd Lyrs ss ent nme)
- (vl-load-com)
- (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object))
- lyrsColl (vla-get-layers aDoc)
- ltpotd (vla-get-linetypes aDoc)
- )
- (defun _dxf (ent dx_) (cdr (assoc dx_ ent)))
- (defun _lyslst (/ Laylst)
- (while (setq a (tblnext "Layer" (null a)))
- (if (not (wcmatch (_dxf a 2) "*|*"))
- (progn (setq lyp (tblsearch "Layer" (_dxf a 2)))
- (setq
- Laylst (append
- (list (_dxf a 2) (itoa (_dxf a 62)) (_dxf a 6))
- Laylst
- )
- )
- )
- )
- )
- Laylst
- )
- (setq Lyrs (_lyslst))
- (if (ssget ":L" '((0 . "~VIEWPORT")))
- (progn
- (vlax-for itm (setq ss (vla-get-ActiveSelectionSet aDoc))
- (setq nme (member (vla-get-layer itm) Lyrs))
- (vla-put-layer
- itm
- (if (vl-catch-all-error-p
- (vl-catch-all-apply
- 'vla-item
- (list lyrsColl
- (setq lynm (strcat (cadr nme) (caddr nme)))
- )
- )
- )
- (progn (vla-add lyrsColl lynm)
- (vla-put-color
- (vla-item lyrsColl lynm)
- (atoi (cadr nme))
- )
- (if (= nil (tblsearch "LTYPE" (caddr nme)))
- (vla-add (vla-get-linetypes ltpotd (caddr nme)))
- )
- (vla-put-linetype
- (vla-item lyrsColl lynm)
- (caddr nme)
- )
- lynm
- )
- lynm
- )
- )
- (vla-put-linetype itm "ByLayer")
- (vla-put-color itm acByLayer)
- )
- (vla-delete ss)
- )
- )
- (princ)
- )
希望这有帮助
如果需要此选项来选择所有对象
更改此
(ssget“:L”'((0.~视口”))
到
(ssget“_X”'((0。“~视口”)) |