尝试执行一个更改图层颜色的例程。我遇到的问题是,如果输入红色作为“red”的颜色,我会得到这个。
错误:错误的DXF组:(62。“红色”)
我通过getstring函数运行它。我猜我需要一个1中的整数。让它发挥作用。那么,有没有办法将“红色”转换为正确的颜色代码?
我还意识到,如果输入“40”,我需要将字符串转换为整数。
感谢代码如下。
- (defun C:Layer_Color ( / obj col lay layref layname cnt)
- (defun *error* ( msg )
- (if (< 0 id) (unload_dialog id))
- (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
- (progn
- (princ (strcat "\nError: " msg))
- (setq cnt T)
- (setq tmpEnt (tblnext "layer" cnt))
- )
- )
- (princ)
- )
- (while (= obj nil)
- (setq obj (entget(car(entsel "\nSelect Object:"))))
- (if (= obj nil)
- (princ "\nNo Object Selected.")))
- (setq lay (cdr(assoc 8 obj)))
-
- (while (or(= col nil)(= col ""))
- (setq col(getstring "\nNew Color:"))
- (if (or(= col nil)(= col ""))
- (princ "No color entered.\n")
- (princ "New color selected.\n")
- )
- )
- (while (/= layname lay)
- (setq layref (tblnext "layer"))
- (setq layname (cdr(assoc 2 layref)))
- )
-
- (entmakex(list(assoc 0 layref)(cons 100 "AcDbSymbolTableRecord")(cons 100 "AcDbLayerTableRecord")(assoc 70 layref)(assoc 2 layref)(cons 62 col)(cons 6 "CONTINUOUS")(cons 290 1)))
-
-
- (setq cnt T)
- (setq tmpEnt (tblnext "layer" cnt))
- (princ)
- )
|