明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1762|回复: 8

请各位高手帮改个程序

[复制链接]
发表于 2012-10-20 11:48:57 | 显示全部楼层 |阅读模式
;;根据选定实体所在的图层改变图层颜色;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN C:GGg (/ ES EN EL A)
  (princ "请选择要改变颜色的图层中的实体 :")
  (setq ES (ssget) A 0 EN "" EL nil FL nil)
  (while (/= EN nil)
   (setq EN (ssname ES A) EL (cons EN EL) A (1+ A))
  );end while
  (setq EL (cdr EL) FL (cdr (assoc ' 8 (entget (car EL)))) EL (cdr EL))
  (repeat (- A 2)
    (setq EN (cdr (assoc ' 8 (entget (car EL))))
    FL (strcat EN "," FL) EL (cdr EL))
  );end repeat
(setq newcolor (getint "\n请输入图层的新颜色号:" ))
(command "layer" "C" newcolor (eval FL) "")
(princ)
);end defun

上面的程序是选定物体,更改物体所在图层的颜色的。
请帮忙实现最后一个颜色数字保留的功能
例如更改了一个物体的颜色为7号色,下次回车后7号色直接引用不需要重新输入,如果更改其他颜色再重新输入颜色号就可以了。
谢谢
发表于 2012-10-20 13:08:28 | 显示全部楼层
(prompt "\n请输入图层的新颜色号:")
  (setq newcolor (if *GGGClr* *GGGClr* 7)
        newcolor (acad_colordlg newcolor nil)
        *GGGClr*  newcolor
  )
  
or

  (prompt "\n请输入图层的新颜色号:")
  (setq newcolor (cond (*GGGClr*) (7))
        newcolor (acad_colordlg newcolor nil)
        *GGGClr*  newcolor
  )
发表于 2012-10-20 15:01:03 | 显示全部楼层
长老的写法好高深,不好理解呢
发表于 2012-10-20 20:19:56 | 显示全部楼层
  1. ;; 根据选定实体所在的图层改变图层颜色
  2. ;; 伪源码需要e派工具箱(XCAD)的支持
  3. (defun c:tt (/ ss i lst s1 la)
  4.   (setq int (Uint 1 "" "图层新颜色号" int))
  5.   (princ "请选择要改变颜色的图层中的实体: ")
  6.   (setq ss  (ssget)
  7. i   -1
  8. lst '()
  9.   )
  10.   (while (setq s1 (ssname ss (setq i (1+ i))))
  11.     (setq la (xyp-dxf 8 s1))
  12.     (if (not (member la lst))
  13.       (setq lst (cons la lst))
  14.     )
  15.   )
  16.   (setq la (xyp-strcat lst ","))
  17.   (command "layer" "c" int la "")
  18.   (princ)
  19. )
 楼主| 发表于 2012-10-21 12:00:10 | 显示全部楼层
感谢两位的帮忙,Andyhon 的可以实现,但是我想直接输入几号颜色,不想到选择颜色的界面选择。能不能帮忙再改一下,直接输入几号颜色,然后最后输入的颜色存储到默认选择。
xyp1964 的报错,或许要加载e派工具箱吧。谢谢了
发表于 2012-10-21 14:39:13 | 显示全部楼层
改以 uint 函數即可
Ref:
http://bbs.mjtd.com/thread-93169-1-1.html
 楼主| 发表于 2012-10-22 08:34:49 | 显示全部楼层
谢谢长老的帮助,不过自己是程序小白。不知道怎么把UINT函数带到程序里面。如有时间请帮忙代进去,谢谢。
发表于 2012-10-22 09:19:59 | 显示全部楼层
本帖最后由 Andyhon 于 2012-10-22 09:20 编辑

(setq newcolor (cond (*GGGClr*) (7))
        newcolor (uint 0 "" "\n请输入图层的新颜色号: " newcolor)
        *GGGClr*  newcolor
)
 楼主| 发表于 2012-10-25 14:24:01 | 显示全部楼层
谢谢长老的大力支持,今本实现了我想要的结果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-26 03:14 , Processed in 0.208184 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表