SolidWorks机械工程师网——最大的SolidWorks学习平台

标题: 求:sw零件或装配体重新上色(随机) 的宏 [打印本页]

作者: tg000057    时间: 2021-1-19 16:31
标题: 求:sw零件或装配体重新上色(随机) 的宏
因为零件模板有设定特征颜色,这个不能不要,有个别的零件需要用颜色区别开来。零件或装配体自动随机上色的宏,论坛里有。但是上的颜色覆盖不到特征颜色上面,每次都要“从此移除所有零件外观”,然后再随机上色。有没有大神帮忙写一段去掉所有颜色的宏代码,去除所有外观颜色再随机上色,或者只有去除所有外观颜色的也行。
作者: Allate    时间: 2021-1-19 16:31
删除此零件文档中的所有显示状态和外观:Part.RemoveAllDisplayStates
注:只适用于零件,不能用于装配体。
作者: lihongjun123    时间: 2021-1-20 16:57
顶一下,坐等高手!
作者: jtr8193    时间: 2021-1-22 10:18
下载麦迪今日制造。

作者: tg000057    时间: 2021-1-24 08:02
顶一下,坐等高手。
作者: tg000057    时间: 2021-1-25 16:21
Allate 发表于 2021-1-19 16:31
删除此零件文档中的所有显示状态和外观:Part.RemoveAllDisplayStates
注:只适用于零件,不能用于装配体 ...

装配体是不能用这个语句,但是,我在用你发表的那个随机改变颜色宏,装配体中也能改变零件颜色,是你因为历遍装配零件一个个修改颜色,我只要把这条语句加到for语句里面就可以了,也能达到效果!
作者: Allate    时间: 2021-1-25 16:29
tg000057 发表于 2021-1-25 16:21
装配体是不能用这个语句,但是,我在用你发表的那个随机改变颜色宏,装配体中也能改变零件颜色,是你因为 ...

有用就最好不过了
作者: tg000057    时间: 2021-1-26 11:06
借花献佛的把宏贴出来,原贴就是Allate大大的,只是我要的要求是要删除特征颜色后再上色,所以要求有变,还是Allate大大给的语句,增加一条删除此零件文档中的所有显示状态和外观,然后我把它代进去,并加到执行历遍装配体零件上色的语句前,这样零件,和装配体都可以使用了!


补充内容 (2021-1-26 14:26):
文件包放在10楼了。
作者: Allate    时间: 2021-1-26 13:44
别这样,我也只是个初学者。
那个随机上色的,之前粗略改制的,非常粗糙,现在重改了一次,有兴趣可以重新下载。
作者: tg000057    时间: 2021-1-26 14:25
修改后的包。

随意改变颜色.rar

(9.84 KB, 下载次数: 292


作者: tg000057    时间: 2021-1-26 14:35
Allate 发表于 2021-1-26 13:44
别这样,我也只是个初学者。
那个随机上色的,之前粗略改制的,非常粗糙,现在重改了一次,有兴趣可以重新 ...

我才刚开始接触这个东西,所以很多都不懂,全靠都是论坛里学,和自己摸索的,正准备系统的去学习一下。
后面的那个颜色改变宏我刚对比了一下,原理是一样的,只是逻辑方式改变了一下,我也把那条删除颜色的语句加上,完美运行!
作者: tg000057    时间: 2021-1-30 16:39
Allate 发表于 2021-1-26 13:44
别这样,我也只是个初学者。
那个随机上色的,之前粗略改制的,非常粗糙,现在重改了一次,有兴趣可以重新 ...

你好,这个随机上色宏出了点问题,能帮忙看一下吗?

根据你的提示,我把  删除显示状态的外观  的那句加上去后,随机上色是运行得没问题,但是,后加的这一句估把之前设置好的材质属性删除,就是变成材质未定义了,这样运行肯定不行的了,有没有其他语句单单是去颜色,不删除材质的?
或者说,有没有语句,在 删除显示状态的外观 之前读取材质,之后再把材质付予上去。
作者: Allate    时间: 2021-1-30 17:29
tg000057 发表于 2021-1-30 16:39
你好,这个随机上色宏出了点问题,能帮忙看一下吗?

根据你的提示,我把  删除显示状态的外观  的那句 ...
这样吧,你随便发个零件出来,具体问题具体分析。
作者: tg000057    时间: 2021-1-31 00:49
Allate 发表于 2021-1-30 17:29
哦,这样吧,你随便发个零件给我吧,邮箱
这个最好是具体问题具体分析。

刚发了,连同那个 宏一起发了,
零件是用sw2017建设的,运行宏后,设计树那里的材质看似的没变,实际是被删除的了,文件-属性里可以看到,已变成材质未定义了,设计树那里要刷新或重开才会显示材质未定义。

最好有办法,只删除外观,不删除材质。
其次可以,提取当前材质,删除所有显示状态,连同材质删除,再付予刚提取的材质,再更改颜色。
谢谢大大了
作者: Allate    时间: 2021-1-31 08:46
不知道你具体的情况,有时候的建议不一定是有效的,或者可以这样一试。


作者: tg000057    时间: 2021-1-31 12:01
Allate 发表于 2021-1-31 08:46
不知道你具体的情况,有时候的建议不一定是有效的,或者可以这样一试。

看来只能重新写材质,

还想请问你一下有个语句不懂:
写入材质用:swDoc.SetMaterialPropertyName2, “写入配置”,“材质库路径”,“材质名称”
而获取当前材质用这个:swDoc.GetMaterialPropertyName2,
这条要样才能把材质参数获取过来?
作者: tg000057    时间: 2021-1-31 12:26
Allate 发表于 2021-1-31 08:46
不知道你具体的情况,有时候的建议不一定是有效的,或者可以这样一试。

Dim configM            As String
Dim libraryM           As String
Dim MaterialM        As String
Dim aM        As String

       ....................


  MaterialM = swDoc.GetMaterialPropertyName2(aM, libraryM)              '获取当前材质名和材质库名
  
         configM = swApp.GetActiveConfigurationName(swDoc.GetPathName)         '获取零件当前配置名
         
         swDoc.RemoveAllDisplayStates                                          '删除所有显示状态和材质
         
         swDoc.SetMaterialPropertyName2 configM, libraryM, MaterialM           '更改当前配置的材质
         swDoc.SetMaterialPropertyName2 "默认", libraryM, MaterialM            '更改默认配置的材质

弄出来了,是这样子的,只是不懂那个aM表达的是什么,好像也没有值。
作者: Allate    时间: 2021-1-31 13:45
收到你发过来的文件了,测试过,就是要按我截图的那样操作就行。如果你没看懂,没关系,下载附件即可。

注:附件没能解决问题,已经删除。


作者: Allate    时间: 2021-1-31 13:55
tg000057 发表于 2021-1-31 12:01
看来只能重新写材质,

还想请问你一下有个语句不懂:

MName=swDoc.GetMaterialPropertyName2(“写入配置”,“材质库路径”)
swDoc.SetMaterialPropertyName2 “写入配置”,“材质库路径”,MName
不过其实不用这么折腾的,就我上面写的办法已经可以解决问题。
作者: tg000057    时间: 2021-1-31 14:48
Allate 发表于 2021-1-31 13:45
收到你发过来的文件了,测试过,就是要按我截图的那样操作就行。如果你没看懂,没关系,下载附件即可。

...

这个试过了,和我前面的那效果一样,设计树那里显示有材质(应该是没刷新到),但是属性里面显示未定义,关闭重新打开零件,设计树那里也显示未定义了。
作者: Allate    时间: 2021-1-31 17:25
仔细观察了一下你的那个零件,发现不用Part.RemoveAllDisplayStates,改为使用RemoveMaterialProperty的话,会更合理。
如果你更改不容易的话,可以下载附件。

楼主的零件.zip (121.37 KB, 下载次数: 213)
随意改变颜色_特别版2021-01-31.zip (10.76 KB, 下载次数: 300, 售价: 2 金币)

作者: tg000057    时间: 2021-2-6 22:59
谢谢Allate大神的耐心解答,这个是我的最终版本,能够保留材质不变,能在零件和装配体中使用。

随意改变颜色.rar

(10.31 KB, 下载次数: 184 售价: 2 金币


作者: Allate    时间: 2021-2-7 12:19
👍🏻你能搞定就好,我最近不用电脑,你能告诉我用的是哪个API么?
作者: tg000057    时间: 2021-2-7 14:08
Allate 发表于 2021-2-7 12:19
👍🏻你能搞定就好,我最近不用电脑,你能告诉我用的是哪个API么?

我电脑只装了sw2019,其他都没装,,,,,,,其实这宏也没改什么,还是那样,先提取材质的信息,再删除显示外观(连同材质也删除了),然后再还原材质,最后随机上色。。。。
作者: qweewq909    时间: 2021-2-11 10:29
Allate 发表于 2021-1-31 17:25
仔细观察了一下你的那个零件,发现不用Part.RemoveAllDisplayStates,改为使用RemoveMaterialProperty的话 ...

你这个特别版出来的结果偏暗。建议:3个颜色随机数取值后,
对较大的两个颜色数值进行如下计算:单色最大数值(好像是240还是360还是256来着)减去随机数值,差值乘以0.3,在加上颜色随机数值。结果作为颜色数值。
对最小的颜色数,乘以0.5,结果作为此颜色数值。这样可提高最终颜色饱和度,显得好看而不是灰蒙蒙的。
我用记事本打开了你的宏文件,发现里面的solidworks安装目录是在D盘,且是2017版。我的solidworks安装在C盘,且是2021版。你能改写下吗?

作者: Allate    时间: 2021-2-11 23:24
qweewq909 发表于 2021-2-11 10:29
你这个特别版出来的结果偏暗。建议:3个颜色随机数取值后,
对较大的两个颜色数值进行如下计算:单色最 ...

不是偏暗,是有机会出现偏暗的。我是拿网上的改的,自己很少用到,你这个建议挺好的,谢谢了。这个宏我是用SW2017编的,但不影响你的2021,同时也没有关于安装路径的要求,可能你这个看到的是我编写的软件状态,这就有点尴尬了…
作者: Allate    时间: 2021-2-21 11:51
tg000057 发表于 2021-2-7 14:08
我电脑只装了sw2019,其他都没装,,,,,,,其实这宏也没改什么,还是那样,先提取材质的信息,再删除 ...

奇怪,你这个回复一直没提示,现在才看到。

那样算起来也是殊途同归了。
作者: yp199827    时间: 2021-3-17 09:57
优秀优秀,学习学习
作者: guoliuan    时间: 2021-8-19 10:06
谢谢发布好软件

作者: liangguangdi    时间: 2021-8-19 14:39
下载学习,优秀
作者: jines5    时间: 2021-12-1 14:38
优秀,下载学习
作者: woodsli    时间: 2021-12-20 21:37
优秀优秀,学习学习
作者: woodsli    时间: 2021-12-20 21:39
下载学习
作者: yangbosnihc    时间: 2021-12-22 10:32
tg000057 发表于 2021-2-6 22:59
谢谢Allate大神的耐心解答,这个是我的最终版本,能够保留材质不变,能在零件和装配体中使用。

用不了,失败
作者: lhp521314    时间: 2022-1-8 15:31

下载学习
作者: 743837659    时间: 2022-1-13 16:08
SW机械工程师网,找到组织了!
作者: yangbosnihc    时间: 2022-2-16 18:37
tg000057 发表于 2021-2-6 22:59
谢谢Allate大神的耐心解答,这个是我的最终版本,能够保留材质不变,能在零件和装配体中使用。

哪一个才是最终版
作者: yangbosnihc    时间: 2022-2-16 18:41
Allate 发表于 2021-1-31 17:25
仔细观察了一下你的那个零件,发现不用Part.RemoveAllDisplayStates,改为使用RemoveMaterialProperty的话 ...

用不了,你这是SW2016版的
作者: qq5921    时间: 2022-3-5 17:38
有没有一个宏 能自己写进工艺,我们公司零件比较简单,比如铝的 都是本色阳极,链轮都是发黑,铁的都是镀镍,封板都是烤漆,能不能通过识别名称或者材质来自动配发工艺
作者: yun6yun7    时间: 2022-3-18 15:21
谢谢分享谢谢分享
作者: yun6yun7    时间: 2022-3-19 14:32
SW机械工程师网,找到组织了!
作者: fan03488    时间: 2022-4-3 10:50
楼主太有才了,膜拜中……
作者: fan03488    时间: 2022-4-3 11:01
Allate 发表于 2021-1-31 17:25
仔细观察了一下你的那个零件,发现不用Part.RemoveAllDisplayStates,改为使用RemoveMaterialProperty的话 ...

在装配体运行会把所有的零件标准件整体修改颜色,能否在装配体选中的零件改变颜色呢,未被选中的不修改
作者: hun517    时间: 2022-4-16 10:27
谢谢21楼。2018版已搞定
作者: yangkairuikk    时间: 2022-5-6 15:47
下载了,但是这随机颜色,零件多的话会有不是一种零件显示相同颜色
作者: zhangrunze    时间: 2022-5-13 08:11
不错的工具,感谢大家~
作者: hming235    时间: 2022-5-13 08:25
好东要,谢谢分享
作者: hming235    时间: 2022-5-14 14:52
谢谢分享,学习一下
作者: yangbosnihc    时间: 2022-5-26 15:12
求实体随机上色
作者: yangbosnihc    时间: 2022-5-26 15:12
求实体随机上色
作者: hhh001    时间: 2022-6-1 08:10
感谢楼主分享,很不错!
作者: 欢乐长驻    时间: 2022-6-3 13:39
谢谢楼主分享,不错
作者: wscgb123    时间: 2022-6-4 22:26
感谢楼主分享,很不错!
作者: haixue20    时间: 2022-6-16 09:07
谢谢分享,谢谢分享,
作者: 欢乐长驻    时间: 2022-6-16 14:42
谢谢分享,支持了
作者: panli1992    时间: 2022-9-26 17:55
谢谢分享谢谢分享
作者: leg0769    时间: 2022-9-28 10:19
谢谢分享谢谢分享
作者: l88369875    时间: 2022-12-3 11:30
谢  谢 分 享,N  B
作者: w50005    时间: 2022-12-13 11:32
谢谢分享谢谢分享
作者: w50005    时间: 2022-12-13 11:32
谢谢分享谢谢分享
作者: 1390878735    时间: 2023-2-9 10:55
顶一下,坐等高手!
作者: karmaing    时间: 2023-2-13 15:51
下载学习,优秀

作者: hlx9611    时间: 2023-3-10 14:30
可以用,螺丝上色不行
作者: yjc5829    时间: 2023-7-12 14:43
感谢分享
作者: 懒懒的高贵    时间: 2023-7-26 14:39
很不错,顶一下!
作者: llxxfflxf    时间: 2023-8-11 17:22
谢谢分享!!!!!
作者: fcSW工程师    时间: 2023-8-29 08:18
太有才了,膜拜中……
作者: heishalang    时间: 2023-11-8 14:14
优秀!非常好用
作者: 沉默的人    时间: 2023-11-23 11:59
好好学习,天天向上!
作者: 艺凡烽顺    时间: 2023-12-9 15:46
SolidWorks机械工程师网,顶一下。
作者: zwjmoon    时间: 2024-3-27 08:43
SolidWorks机械工程师网,顶一下。
作者: tommyshy    时间: 2024-3-29 13:24
感谢楼主分享,很不错!
作者: AndyLGP    时间: 2024-4-25 10:00
装配体可以使用吗?
作者: AndyLGP    时间: 2024-4-25 10:03
感谢楼主,大赞
作者: lgg1698    时间: 2024-12-9 11:30
tg000057 发表于 2021-1-26 14:25
修改后的包。

谢谢老板分享
作者: lgg1698    时间: 2024-12-9 11:32
tg000057 发表于 2021-1-26 14:25
修改后的包。

谢谢老板分享
作者: gjlyc19560    时间: 2024-12-28 11:59
我的sw2010怎么用不了啊?
作者: AndyLGP    时间: 2025-3-5 07:43
以前会弹出对话框,改颜色很方便
作者: pual11    时间: 2025-3-12 15:01
tg000057 发表于 2021-1-26 14:25
修改后的包。

测试可用 大赞一个 感谢老哥分享!!
作者: keepchanging    时间: 2025-4-15 08:58
大家都很厉害,刚接触一下sw,感觉动画功能比creo强。
作者: suetee    时间: 2025-5-9 13:48
好东西,努力学习学习!




欢迎光临 SolidWorks机械工程师网——最大的SolidWorks学习平台 (https://www.swbbsc.com/) Powered by Discuz! X3.2