随机给块上色
大佬们,小弟想要做这个功能,用来排版区分零件用的。能力有限,写不出来,发帖请教大佬看看,能不能实现这个功能。
一句话概括就是,给选择集里面的块,随机上色(鲜艳的色,太暗看不清)
试试这个,应该可以:
可以啊,加qq说一下具体情况吧
QQ 3446099265 太简单了,不好意思收钱。 SdlFreeCAD 发表于 2023-4-13 23:30
太简单了,不好意思收钱。
说说思路可以吗 全部块是同一个块名的吗? ssyfeng 发表于 2023-4-14 08:35
全部块是同一个块名的吗?
不是,都是无名块,或者普通块,名称不一样 加QQ:1005144760.细聊 自己瞎捣鼓出来了,目前看着还行,不知道有没有bug
不是随机上色,支持144种颜色,按顺序上色,再多就重复了。
子函数是找来的,参考:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=185356&extra=&highlight=%BF%E9%D1%D5%C9%AB&page=1
看不懂,有没有前辈指点下什么意思
(defun c:gg(/ blockss c1 c2 c3 c4 c5 c6 co en n obj se ss)
(setq blockss(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))))
(setq ss(ssget '((0 . "INSERT"))))
(setq c1 0)
(setq c2 2)
(setq c3 4)
(setq c4 1)
(setq c5 3)
(setq c6 5)
(repeat(setq n(sslength ss))
(setq en(ssname ss(setq n(1- n))))
(setq obj(vlax-ename->vla-object en))
(if(< c1 240)
(setq co(setq c1(+ c1 10)))
(progn
(if(< c2 242)
(setq co(setq c2(+ c2 10)))
(progn
(if(< c3 244)
(setq co(setq c3(+ c3 10)))
(progn
(if(< c4 241)
(setq co(setq c4(+ c4 10)))
(progn
(if(< c5 243)
(setq co(setq c5(+ c5 10)))
(progn
(if(< c6 245)
(setq co(setq c6(+ c6 10)))
(progn
(setq co(setq c1 10))
(setq c2 2)
(setq c3 4)
(setq c4 1)
(setq c5 3)
(setq c6 5)
)
)
)
)
)
)
)
)
)
)
)
)
(setq se(itoa co))
(yanse obj)
)
(princ)
)
;---修改块颜色
(defun yanse(obj / blks)
(vla-put-color obj se);---此值为颜色索引号
(if(or(=(vla-get-objectname obj)"AcDbBlockReference")(=(vla-get-objectname obj)"AcDbMInsertBlock"))
(progn
(setq blks(vla-item blockss(vla-get-name obj)))
(vlax-for i blks(yanse i));---递归进去,用于处理嵌套
)
)
)
ssyfeng 发表于 2023-4-14 14:21
试试这个,应该可以:
谢谢!!!
页:
[1]
2