明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2237|回复: 12

随机给块上色

[复制链接]
发表于 2023-4-13 21:02:31 | 显示全部楼层 |阅读模式
10明经币
大佬们,小弟想要做这个功能,用来排版区分零件用的。

能力有限,写不出来,发帖请教大佬看看,能不能实现这个功能。
一句话概括就是,给选择集里面的块,随机上色(鲜艳的色,太暗看不清)
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

试试这个,应该可以:
发表于 2023-4-13 21:02:32 | 显示全部楼层
试试这个,应该可以:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2023-4-13 22:44:17 | 显示全部楼层
可以啊,加qq说一下具体情况吧
QQ 3446099265
回复

使用道具 举报

发表于 2023-4-13 23:30:26 | 显示全部楼层
太简单了,不好意思收钱。
回复

使用道具 举报

 楼主| 发表于 2023-4-14 08:24:11 | 显示全部楼层
SdlFreeCAD 发表于 2023-4-13 23:30
太简单了,不好意思收钱。

说说思路可以吗
回复

使用道具 举报

发表于 2023-4-14 08:35:43 | 显示全部楼层
全部块是同一个块名的吗?
回复

使用道具 举报

 楼主| 发表于 2023-4-14 09:54:31 | 显示全部楼层
ssyfeng 发表于 2023-4-14 08:35
全部块是同一个块名的吗?

不是,都是无名块,或者普通块,名称不一样
回复

使用道具 举报

发表于 2023-4-14 12:02:10 | 显示全部楼层
加QQ:1005144760.细聊
回复

使用道具 举报

 楼主| 发表于 2023-4-14 14:18:27 | 显示全部楼层
自己瞎捣鼓出来了,目前看着还行,不知道有没有bug
不是随机上色,支持144种颜色,按顺序上色,再多就重复了。
子函数是找来的,参考:http://bbs.mjtd.com/forum.php?mo ... 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));---递归进去,用于处理嵌套
                )
        )
)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2023-4-14 14:42:38 | 显示全部楼层
ssyfeng 发表于 2023-4-14 14:21
试试这个,应该可以:

谢谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 07:15 , Processed in 0.187241 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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