magicboy555 发表于 2014-11-18 09:50:48

各位大神帮忙整合一下两个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的图层,则新建图层,这是第一个命令可以实现的。我想在这个命令新建图层的那一步加上第二条命令的部分内容。也就是建层的话会要求你进行设置。而不是自动新建默认的图层


magicboy555 发表于 2014-11-18 15:03:12

求大神帮下忙啊!谢谢啦!

magicboy555 发表于 2014-11-18 17:01:32

怎么没人呢

wzg356 发表于 2014-11-18 23:52:07

我看糊涂了

鱼与熊掌 发表于 2014-11-19 08:10:28

关键是代码太难用。

ll_j 发表于 2014-11-19 09:05:03

这两个程序涉及多个命令,这些命令虽然看似关联,实际相互独立,程序整合起来没有什么意义,不怕麻烦,写在一起也可以。
程序中相关图层的几个概念是可以整合的,但如果像楼主提供的这种代码不整合也罢,这些程序原本就是某人为了简便的,如果强行整合,只会又增加麻烦,不如直接使用acad命令了。
关于图层是有东西可写的(论坛也有一些程序,不妨搜索试试),不过真写好了还是要有点功底的,毕竟acad(及ET)本身关于图层的功能就比较全面。
如果有兴趣,楼主这样的程序功能可以作为初学者练手用。如果非要整合不可,楼主也应该说明到底整合后要达到怎样的功能。

magicboy555 发表于 2014-11-19 09:24:21

ll_j 发表于 2014-11-19 09:05 static/image/common/back.gif
这两个程序涉及多个命令,这些命令虽然看似关联,实际相互独立,程序整合起来没有什么意义,不怕麻烦,写在 ...

其实就是在没有你自定义的图层的时候,会提示要你自己定义其颜色等参数,现在只要颜色就可以了
页: [1]
查看完整版本: 各位大神帮忙整合一下两个LISP