不确定这是否是将数据制成表格的最佳方式,但它应该比您使用的更快。
- (defun c:DoerVer (/ *error* Make_Layer Layers obj ss tag)
- (vl-load-com)
-
-
- (setq Layers
- ; Old Color ; New Layer ; Layer Color ; Layer Lineweight
- '((5 . ("CCC_DOER_LA0001" 253 "030"))
- (6 . ("CCC_DOER_LA0002" 7 "030"))
- (3 . ("CCC_DOER_LA0003" 84 "030"))
- (1 . ("CCC_DOER_LA0004" 1 "030"))
- (2 . ("CCC_DOER_LA0005" 2 "030"))
- (nil . ("CCC_DOER_LA0006" 7 "030")))
- )
- (setq *doc* (cond (*doc*) ((vla-get-ActiveDocument
- (vlax-get-acad-object)))))
- (defun *error* (msg)
- (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " msg " **")))
- (princ))
- (defun Make_Layer (lay Col LnW)
- (cond ( (tblsearch "LAYER" lay))
-
- ( (setq lObj (vla-add (vla-get-Layers *doc*) lay))
- (vla-put-color lObj Col)
- (vla-put-lineweight lObj
- (eval (read (strcat "acLnWt" LnW)))))))
- (mapcar
- (function
- (lambda (x) (apply (function Make_Layer) (cdr x)))) Layers)
- (if (ssget "_X")
- (progn
- (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *doc*))
-
- (if (setq tag (assoc (vla-get-color obj) Layers))
- (mapcar
- (function
- (lambda (x y) (vlax-put-property obj x y))) '(color layer)
- (list acByLayer (cadr tag))))
- (if (eq "TEXT" (vla-get-layer obj))
- (vla-put-color obj acByLayer)))
- (vla-delete ss)))
- (princ))
-
-
-
-
-
-
|