李,当你在帮我的时候。
大约三天前,我写了一篇简短的文章:
- (defun c:scx (/ ent Xnme clrs lst)
- (vl-load-com)
- (setq ent (ssget "_+.:S:E" '((0 . "INSERT"))))
- (setq ent (entget (ssname ent 0)))
- (if (= 4
- (logand 4
- (cdr (assoc 70
- (tblsearch
- "BLOCK"
- (setq Xnme (cdr (assoc 2 ent))))))))
- (progn
- (setq clrs (acad_truecolordlg
- '(420 . 8882055)
- nil))
- (command "_Layer" "_Color")
- (while (> (getvar "cmdactive") 0)
- (if (> (length clrs) 1)
- (command
- "TrueColor"
- (progn
- (setq lst (vl-princ-to-string
- (LM:TRUE->RGB
- (cdr (cadr clrs)))))
- (setq lst (vl-string-translate
- " "
- ","
- lst))
- (vl-symbol-name
- (car (read lst)))
- )
- (strcat Xnme "*")
- ""
- )
- (command
- (cdr (car clrs))
- (strcat Xnme "*")
- "")
- )
- )
- )
- (princ "\nNObject Selected Not an Xref:")
- )
- (princ)
- )
它将外部参照的图层颜色更改为较浅的阴影(或用户选择的任何颜色)
今天早些时候,我的人问waht,我们是否希望它恢复到原始颜色?在调用此例程之前告诉他们使用图层状态保存图层信息。这样想比较容易。但是对于已屏蔽外部参照图层的现有图形,现在该怎么办?告诉他们再次分离并重新附着外部参照。我在想,也许通过lisp通过ODBX从源文件中检索层信息足够简单。或者使用你的绘画套路。
除此之外还有更简单的方法吗?
编辑:哎呀,忘了包括你的子程序Lee(LM:True->RGB),顺便说一句,到现在为止,它还不知道你是如何得出这些数字的 |