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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6816|回复: 30
打印 上一主题 下一主题

还原零件颜色

  [复制链接]

6

主题

25

帖子

381

金币

堂主

Rank: 4

积分
836

最佳新人活跃会员宣传达人

跳转到指定楼层
楼主
 楼主| 发表于 2022-7-13 11:22:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

   经典图书
网上有个随意改变颜色的宏,用完后零件变的五颜六色了。可以方便评审时对零件进行区分。但是如果想要还原颜色为材质原本设置的颜色。需要自行打开零件删除,有点麻烦。所以写了个零件颜色还原为原有材质的宏。有这种需求的可以下载试试。

零件颜色还原.rar

(7.6 KB, 下载次数: 121 售价: 10 金币

随意改变颜色后,去除颜色

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

5

主题

131

帖子

97

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1975

最佳新人活跃会员热心会员宣传达人灌水之王

来自 2#
发表于 2022-7-14 08:01:15 | 只看该作者
试用了,没成功,零件材质是都删除了,但没替换成原有材质
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

6

主题

25

帖子

381

金币

堂主

Rank: 4

积分
836

最佳新人活跃会员宣传达人

来自 3#
 楼主| 发表于 2022-7-14 09:44:16 | 只看该作者

   经典图书
尴尬,有个bug,里面有个Ubound函数给写成Lbound了。
将改好后的宏从新给出。这次的没有密码。

补充内容 (2022-7-15 13:48):
从API帮助里面复制的一段获取材质数据路径的代码里面的bug
SOLIDWORKS API Help
Get Material Database Paths of Document Example (VBA)
This example shows how to get the paths and names of the material da...

零件颜色还原.rar

(10.85 KB, 下载次数: 107

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

143

帖子

99

金币

堂主

Rank: 4

积分
896

最佳新人活跃会员热心会员宣传达人灌水之王

地板
发表于 2022-7-13 12:17:34 | 只看该作者
嗯 能用到。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

25

帖子

381

金币

堂主

Rank: 4

积分
836

最佳新人活跃会员宣传达人

5#
 楼主| 发表于 2022-7-14 09:38:20 | 只看该作者

   经典案例图书

Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim Components          As Variant
Dim SingleComponent     As Variant
Dim Ret                 As Variant
Dim swFeat              As SldWorks.Feature
Dim swSubFeat           As SldWorks.Feature
Dim dbs As Variant


Sub main()

    'On Error Resume Next
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    dbs = swApp.GetMaterialDatabases
    If swModel.GetType() = 1 Then                       '如果当前文件是零件
        ReturnColor swModel
    ElseIf swModel.GetType() = 2 Then                   '如果当前文件是装配体
        Components = swModel.GetComponents(False)
        For Each SingleComponent In Components
            Set swModel = SingleComponent.GetModelDoc()
            If swModel.GetType() = 1 Then
                ReturnColor swModel
                'MsgBox "子零件体"
            Else
            'MsgBox "子装配体"
            End If
        Next
    Else                                                '如果当前文件是工程图
        MsgBox "请打开一个零件或者装配体。"
    End If
   
End Sub

'将颜色应用原有材质的颜色
Public Function ReturnColor(swDoc As PartDoc)


Dim sMatDB As String, Material As String, sMaterialDB_path As String, Configuration_Name As String
    Set swFeat = swDoc.FirstFeature
    While Not swFeat Is Nothing
        swFeat.RemoveMaterialProperty
        Set swSubFeat = swFeat.GetFirstSubFeature
        While Not swSubFeat Is Nothing
            swSubFeat.RemoveMaterialProperty
            Set swSubFeat = swSubFeat.GetNextSubFeature
        Wend
        Set swFeat = swFeat.GetNextFeature
    Wend

Configuration_Name = swDoc.GetActiveConfiguration.Name
Material = swDoc.GetMaterialPropertyName2(Configuration_Name, sMatDB)

For i = 0 To UBound(dbs)
    If StrComp(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB)), sMatDB) = 0 Then
        sMaterialDB_path = dbs(i)
    End If
Next i

'赋予零件材质默认的颜色
If Material <> "" Then
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, ""
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, Material
Else
    '下面这句是将没有赋予材质的零件的颜色删除,如果不想让给没有材质的零件删除颜色,可以注释掉这一句
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, ""
End If
    swDoc.EditRebuild
End Function

评分

参与人数 1威望 +5 金币 +52 贡献 +5 收起 理由
洪七公 + 5 + 52 + 5 赞一个!

查看全部评分

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

25

帖子

381

金币

堂主

Rank: 4

积分
836

最佳新人活跃会员宣传达人

6#
 楼主| 发表于 2022-7-14 11:03:32 | 只看该作者
,有个位置写错了,Ubound写成Lbound了。重新发一下代码
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

25

帖子

381

金币

堂主

Rank: 4

积分
836

最佳新人活跃会员宣传达人

7#
 楼主| 发表于 2022-7-14 11:04:23 | 只看该作者

   经典案例图书
Sub main()

    On Error Resume Next
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    dbs = swApp.GetMaterialDatabases
    If swModel.GetType() = 1 Then                       '如果当前文件是零件
        ReturnColor swModel
    ElseIf swModel.GetType() = 2 Then                   '如果当前文件是装配体
        Components = swModel.GetComponents(False)
        For Each SingleComponent In Components
            Set swModel = SingleComponent.GetModelDoc()
            If swModel.GetType() = 1 Then
                ReturnColor swModel
                'MsgBox "子零件体"
            Else
            'MsgBox "子装配体"
            End If
        Next
    Else                                                '如果当前文件是工程图
        MsgBox "请打开一个零件或者装配体。"
    End If
   
End Sub

'将颜色应用原有材质的颜色
Public Function ReturnColor(swDoc As PartDoc)


Dim sMatDB As String, Material As String, sMaterialDB_path As String, Configuration_Name As String
    Set swFeat = swDoc.FirstFeature
    While Not swFeat Is Nothing
        swFeat.RemoveMaterialProperty
        Set swSubFeat = swFeat.GetFirstSubFeature
        While Not swSubFeat Is Nothing
            swSubFeat.RemoveMaterialProperty
            Set swSubFeat = swSubFeat.GetNextSubFeature
        Wend
        Set swFeat = swFeat.GetNextFeature
    Wend

Configuration_Name = swDoc.GetActiveConfiguration.Name
Material = swDoc.GetMaterialPropertyName2(Configuration_Name, sMatDB)

For i = 0 To UBound(dbs)
    If StrComp(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB)), sMatDB) = 0 Then
        sMaterialDB_path = dbs(i)
    End If
Next i

'赋予零件材质默认的颜色
If Material <> "" Then
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, ""
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, Material
Else
    '下面这句是将没有赋予材质的零件的颜色删除,如果不想让给没有材质的零件删除颜色,可以注释掉这一句
    swDoc.SetMaterialPropertyName2 Configuration_Name, sMaterialDB_path, ""
End If
    swDoc.EditRebuild
End Function
[/code]
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

675

帖子

972

金币

传奇

Rank: 8Rank: 8

积分
6125

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

8#
发表于 2022-7-14 16:32:32 | 只看该作者
谢谢分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

2010

帖子

2045

金币

传奇

Rank: 8Rank: 8

积分
9302

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

9#
发表于 2022-7-15 00:32:19 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

35

主题

301

帖子

1607

金币

传奇

Rank: 8Rank: 8

积分
4802

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

10#
发表于 2022-7-15 11:45:30 | 只看该作者

   经典图书
高手,密密麻麻的代码中u和l写错还能够发现。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

75

帖子

176

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
370
QQ
11#
发表于 2022-7-18 10:55:54 | 只看该作者
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

96

帖子

383

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1681

最佳新人活跃会员热心会员宣传达人

12#
发表于 2022-7-22 15:00:37 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

39

帖子

245

金币

堂主

Rank: 4

积分
507

最佳新人活跃会员宣传达人

13#
发表于 2022-7-31 00:24:14 | 只看该作者
出现错误提示

0YM]}(2~YG($)J}S{Z)I6I2.png
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

268

帖子

732

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2755

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

14#
发表于 2022-12-3 10:44:35 | 只看该作者
楼主辛苦了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

104

帖子

25

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
454

最佳新人活跃会员热心会员宣传达人

15#
发表于 2022-12-6 16:08:37 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

如果是装配体有颜色,就无法删除了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

104

帖子

284

金币

堂主

Rank: 4

积分
602

最佳新人活跃会员热心会员宣传达人

16#
发表于 2022-12-16 17:09:17 | 只看该作者

   经典案例图书
好好学习,天天向上!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

104

帖子

284

金币

堂主

Rank: 4

积分
602

最佳新人活跃会员热心会员宣传达人

17#
发表于 2022-12-17 17:57:47 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

活到老学到老!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

50

帖子

921

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2413

最佳新人活跃会员宣传达人

18#
发表于 2023-1-15 11:25:10 | 只看该作者

   经典案例图书
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

263

帖子

257

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2376

最佳新人活跃会员热心会员宣传达人灌水之王

19#
发表于 2023-1-15 11:44:39 | 只看该作者
多谢楼主热心分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

28

帖子

13

金币

天使

Rank: 2Rank: 2

积分
108

最佳新人活跃会员

20#
发表于 2023-1-17 13:41:24 | 只看该作者
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2025-5-22 11:55 , Processed in 0.466977 second(s), 28 queries , Memcache On.

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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