薄荷微光 发表于 2024-11-28 23:25:47

求高手帮忙看下改颜色的问题

参考论坛中sammy的快速改颜色lisp,我自己想弄个简单点的,如下选择图元改为红色,但每次选完后要空格键确认后才会改色,我想要的效果是输入命令后选中就改色(点选或框选),并且能一直选直到esc或空格退出。求论坛高手帮忙看下怎么修改下。(defun c:gs1 (/ en i obj ss)
(vl-load-com)
(setq ss (ssget))
      (setq i 0)
      (while (< i (sslength ss))
      (setq en (ssname ss i));获取图元名
      (setq obj (vlax-ename->vla-object en));转换为VLA对象
      (vla-put-color obj 1);改颜色
      (setq i (+ 1 i))
      )
(princ)
)

qazxswk 发表于 2024-11-29 10:18:59

薄荷微光 发表于 2024-11-29 09:19
感谢回复,加上while后选中还是要空格确认才能改色,能不能不确认直接改色呢

你复制我的代码再试试。

qazxswk 发表于 2024-11-28 23:54:38

(defun c:gs1 (/ en i obj ss)
(vl-load-com)
(while
(setq ss (ssget ":S"))
      (setq i 0)
      (while (< i (sslength ss))
      (setq en (ssname ss i));获取图元名
      (setq obj (vlax-ename->vla-object en));转换为VLA对象
      (vla-put-color obj 1);改颜色
      (setq i (1+ i))
      )
    )
(princ)
)

e2002 发表于 2024-11-29 17:59:56

本帖最后由 e2002 于 2024-11-29 18:16 编辑

首先要理清程序的流程。一般的,象这种直接操作对象,选择对象的进行修改某一个特性的,先是输入特性的新的值,然后while选择对象(entsel或者 ssget),这里需要判断对象的类型是否符合要求,还要判断是否选择对象是否在 LockedLayer上(如果是ssget就加上":L"参数)。

while循环中,主要就是对象访问与修改特性的那些语句,这个想必你已经理解了。修改后一般不需要regen,修改厚的效果就能直接看到的。

另外: 颜色现在是TrueColor,应使用 AcCmColor对象,下面是 sample code:

(setq amColor (vla-GetInterfaceObject acApp (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
      (vla-put-ColorIndex amColor acCyan)
      (vla-put-TrueColor att amColor)
      (vlax-release-object amColor)


moranyuyan 发表于 2024-11-29 07:15:43

qazxswk 发表于 2024-11-28 23:54


麻烦大佬将再修改下,输入指令后再输入颜色数字,然后执行一直选一直改色,知道ESC才退出。

薄荷微光 发表于 2024-11-29 09:19:02

qazxswk 发表于 2024-11-28 23:54


感谢回复,加上while后选中还是要空格确认才能改色,能不能不确认直接改色呢

kozmosovia 发表于 2024-11-29 10:06:04

本帖最后由 kozmosovia 于 2024-11-29 10:17 编辑

(defun c:gs1 (/ aci obj)
(vl-load-com)
(if (setq aci 1)
    (while (setq obj (car (nentselp "\n Pick Objects:")))
      (vla-put-color (vlax-ename->vla-object obj) aci)
    )
)
(princ)
)

qazxswk 发表于 2024-11-29 10:12:00

薄荷微光 发表于 2024-11-29 09:19
感谢回复,加上while后选中还是要空格确认才能改色,能不能不确认直接改色呢

我在AutoCAD 2007 、AutoCAD 2021、浩辰CAD2025测试了,正常呀,不需要按空格就可以改色的了。

珍惜hh 发表于 2024-11-29 10:27:58

测试正常啊

薄荷微光 发表于 2024-11-29 10:40:06

qazxswk 发表于 2024-11-29 10:18
你复制我的代码再试试。

看到了第04行加了“:s”,没问题了,请问下这个是什么原理呢

qazxswk 发表于 2024-11-29 10:46:37

多学习就知道了。
http://bbs.mjtd.com/thread-84736-1-1.html
页: [1] 2 3
查看完整版本: 求高手帮忙看下改颜色的问题