各位大神帮忙整合一下两个LISP
各位大神能帮我整合下下面两个LISP吗(defun YH_chlayer (YH_layer / YH_S)(if (null (tblsearch "LAYER" YH_layer))
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;图层名称
'(70 . 0) ;图层状态
'(62 . 7) ;图层颜色
'(6 . "bylayer") ;图层线型
)
)
)
(setq YH_S (cadr (ssgetfirst)))
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
(defun c:0 ()
(YH_chlayer "0")
)
(defun c:1 ()
(YH_chlayer "轮廓线-粗")
)
(defun c:2 ()
(YH_chlayer "轮廓线-中")
)
(defun c:3 ()
(YH_chlayer "轮廓线-细")
)
(defun c:4 ()
(YH_chlayer "填充")
)
(defun c:5 ()
(YH_chlayer "标注")
)
(defun c:6 ()
(YH_chlayer "文字")
)
;可继续添加,便于切换图层
(defun c:gc ()
(prompt "选择要改变的图素: ")
(while (setq ss (ssget))
(prompt "输入你要改变到的层名:")
(setq a (getstring))
(if (not (tblsearch "layer" a))
(progn
(command "layer" "n" a "")
(setq cc (getstring "输入你要的色 1-红 2-黄 3-绿 4-靑 5-蓝 6-紫 "))
(if (= cc "")() (command "layer" "c" cc a ""))
(setq ll (getstring "输入你要的线型 中心线-center 虚线-hidden 假想线-divide 回车为轮廓线 实线"))
(if (= ll "")() (command "layer" "l" ll a ""))
))
(setq b (getreal "输入线型比例: "))
(if (= b nil)(setq b 1))
(command "change" ss """p" "s" b "la" a"""layer" "s" a "")
(prompt "选择要改变的图素: ")
)
)
比如在第一个执行命令时,比如按键盘2然后空格,命令发现没有2的图层,则新建图层,这是第一个命令可以实现的。我想在这个命令新建图层的那一步加上第二条命令的部分内容。也就是建层的话会要求你进行设置。而不是自动新建默认的图层
求大神帮下忙啊!谢谢啦! 怎么没人呢 我看糊涂了 关键是代码太难用。 这两个程序涉及多个命令,这些命令虽然看似关联,实际相互独立,程序整合起来没有什么意义,不怕麻烦,写在一起也可以。
程序中相关图层的几个概念是可以整合的,但如果像楼主提供的这种代码不整合也罢,这些程序原本就是某人为了简便的,如果强行整合,只会又增加麻烦,不如直接使用acad命令了。
关于图层是有东西可写的(论坛也有一些程序,不妨搜索试试),不过真写好了还是要有点功底的,毕竟acad(及ET)本身关于图层的功能就比较全面。
如果有兴趣,楼主这样的程序功能可以作为初学者练手用。如果非要整合不可,楼主也应该说明到底整合后要达到怎样的功能。 ll_j 发表于 2014-11-19 09:05 static/image/common/back.gif
这两个程序涉及多个命令,这些命令虽然看似关联,实际相互独立,程序整合起来没有什么意义,不怕麻烦,写在 ...
其实就是在没有你自定义的图层的时候,会提示要你自己定义其颜色等参数,现在只要颜色就可以了
页:
[1]