似乎我在“第1层”上打错了字——我写的是“第1层”,
此外,实体似乎不会通过从其elist中删除GC 62来更改其颜色ByLayer。。让我们试试subst GC 62到(62.256):
- (defun C:test ( / lyr1 lyr0 acDoc emakeLay SSX i e enx )
- (setq lyr1 "Layer 1");<- type your layername here
- (setq lyr0 "0existing");<- type your layername for lineweight 0.50mm
- (setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
- (vlax-map-collection (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) '(lambda (x) (vla-put-Lock x :vlax-false)))
- (defun emakeLay (nm)
- (or (tblsearch "LAYER" nm)
- (progn
- (alert (strcat "\nLayer "" nm "" does not exist, creating it!"))
- (entmakex (list (cons 0 "LAYER")(cons 100 "AcDbSymbolTableRecord")(cons 100 "AcDbLayerTableRecord")(cons 2 nm)(cons 70 0)))
- )
- )
- (princ)
- ); defun emakeLay
- (mapcar 'emakeLay (list lyr0 lyr1))
- (if (setq SSX (ssget "_X" (list (cons 410 (getvar 'ctab)))))
- (progn
- (command "_.SCALE" SSX "" '(0. 0. 0.) 5)
- (repeat (setq i (sslength SSX))
- (setq e (ssname SSX (setq i (1- i))))
- (setq enx (entget e))
- (if (= lyr1 (cdr (assoc 8 enx)))
- (entupd (cdr (assoc -1 (entmod (setq enx (subst (cons 8 "0") (assoc 8 enx) enx))))))
- )
- (if (and (assoc 370 enx) (= 50 (cdr (assoc 370 enx))))
- (progn
- (setq enx (vl-remove-if '(lambda (x) (= (car x) 420)) enx))
- (if (assoc 62 enx) (setq enx (subst (cons 62 256) (assoc 62 enx) enx)))
- (setq enx (subst (cons 8 lyr0) (assoc 8 enx) enx))
- (entupd (cdr (assoc -1 (entmod enx))))
- )
- )
- )
- (vla-Regen acDoc acActiveViewport)
- (vla-ZoomExtents (vlax-get-acad-object))
- )
- )
- (princ)
- );| defun |; (vl-load-com) (princ)
|