本帖最后由 gufeng 于 2012-7-28 11:14 编辑
669423907 发表于 2012-7-27 21:40 
我改成这样了:
;按色归层(gufeng 2012.07.27)
(defun c:zh(/ COLOR C_LAYER DZB ENAME I SS SubUpd) ...  - (defun c:zh (/ COLOR C_LAYER DZB ENAME I SS SubUpd SS_CHANGE)
- ;;_根据组码修改图元
- ;;_(AT_E:SubUpd (car(entsel)) (list (cons 8 "1") (cons 62 4)))
- (defun SubUpd (ename tylst / e_data c n)
- (if (= (type ename) 'ENAME)
- (setq e_data (entget ename))
- )
- (foreach n tylst
- (if (setq c (assoc (car n) e_data))
- (setq e_data (subst n c e_data))
- (setq e_data (append e_data (list n)))
- )
- )
- (entmod e_data)
- (princ)
- )
- (setq ss (ssget '((-4 . "<and") (-4 . ">=") (62 . 1) (-4 . "<=") (62 . 255) (-4 . "and>")))) ;_选择颜色从1到255的 需要定义255以外的自行修改
- (if ss
- (progn
- (setq ss_change (ssadd)) ;_定义修改过的选择集 用于最后修改 颜色 线型 线宽 随层
- (setq dzb '((1 "0") (8 "2虚线") (2 "螺纹"))) ;_定义颜色与图层对照表
- (setq i -1)
- (while (setq ename (ssname ss (setq i (1+ i))))
- (setq color (cdr (assoc 62 (entget ename)))) ;_获取颜色值
- (if (setq color (assoc color dzb)) ;_如果颜色在 对照表dzb 中存在就修改
- (progn
- (setq c_layer (cadr color)) ;_根据颜色获取到需要转换的图层
- (SubUpd ename (list (cons 8 c_layer))) ;_修改图层
- (setq ss_change (ssadd ename ss_change)) ;_把图元名添加到修改过的选择集
- )
- )
- )
- (if (> (sslength ss_change) 0) ;_如果有修改过的继续修改 线型 线宽 随层
- (command "change" ss_change "" "p" "c" "bylayer" "lt" "bylayer" "lw" "bylayer" "") ;_颜色 线型 线宽 随层
- )
- )
- )
- (princ)
- )
|