我知道它不是很干净,但试试这个。
- (defun C:lay (/ laylst laynm exlay nme)
- (setvar "cmdecho" 0)
- (setq exlay (list (cdr (assoc 2 (tblnext "Layer" t)))))
- (while (setq laynm (tblnext "Layer"))
- (setq exlay (append (list (cdr (assoc 2 laynm)))exlay))
- )
-
- (setq laylst
- (list
- (list "white" 7 "CONTINUOUS")
- (list "red" 1 "CONTINUOUS")
- (list "blue" 5 "CONTINUOUS")
- (list "green" 4 "CONTINUOUS")
- (list "grey" 8 "CONTINUOUS")
- (list "magenta" 6 "CONTINUOUS")
- (list "cyan" 4 "CONTINUOUS")
- (list "dim" 4 "CONTINUOUS")
- (list "hidden" 7 "hidden")
- (list "center" 7 "center")
- (list "Phantom" 8 "phantom")
- (list "text" 2 "CONTINUOUS")
- (list "noplot" 8 "phantom")
- (list "yellow" 6 "CONTINUOUS")
- )
- )
- ;***********************Borrowed from Lee Mac*************************
- (mapcar
- '(lambda (z)
- (if (not (tblsearch "LTYPE" (caddr z)))
- (vla-load
- (vla-get-Linetypes
- (vla-get-ActiveDocument
- (vlax-get-acad-object))) (caddr z) "acad.lin"))) laylst)
- ;*********************************************************************
- (mapcar
- '(lambda (z)
- (if (member (setq nme (car z)) exlay)
- (progn
- (vla-put-linetype (setq layen (vlax-ename->vla-object (tblobjname "Layer" nme))) (caddr z))
- (vla-put-colorindex (vla-get-truecolor layen) (cadr z)))
- (progn
- (entmake
- (list
- (cons 0 "LAYER")
- (cons 100 "AcDbSymbolTableRecord")
- (cons 100 "AcDbLayerTableRecord")
- (cons 2 Nme)
- (cons 70 0)
- (cons 62 (cadr z))
- (cons 6 (caddr z))
- (cons 290 1)
- (cons 370 0)))))) laylst)
- (vla-put-plottable (vlax-ename->vla-object (tblobjname "Layer" "noplot")) :vlax-false)
- )
编辑:我使用了李·麦克的一些代码,我想在应该得到赞扬的地方给予赞扬。 |