图层颜色
尝试执行一个更改图层颜色的例程。我遇到的问题是,如果输入红色作为“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)
)
尝试使用硬编码的关联列表;为了确保用户提供适当的答案,可以查看INITGET函数。
关于,
米尔恰 是的,我想过。这仅仅是像那样使用的7种主要颜色吗?还是还有更多? 像这样的事情?
2 据我所知,AutoCAD中只命名了前7种颜色。然而,网页设计中使用的命名颜色列表,你可以从那里“借用”名称,只要你的用户被告知这一点。
当做
米尔恰 你可能想研究一下(acad\u colordlg),它非常有用-大卫 谢谢,很好。
不客气
很高兴听到这个消息。
页:
[1]