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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 705|回复: 3
打印 上一主题 下一主题

装配体材料栏设置自定义属性为“组件”报错

  [复制链接]

15

主题

139

帖子

53

金币

堂主

Rank: 4

积分
934

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

跳转到指定楼层
楼主
 楼主| 发表于 2024-4-22 08:02:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
装配体材料栏设置自定义属性为“组件”报错:点选装配体下面的自装配体或者选装配体自身时报错,点选装配体下的零件或者选择零件自身正常,报错语句为 Set swPart = swComp.GetModelDoc2,这个设定零件类型不正确吗,求大神修改成点选装配体另行也能设置。
Sub SetMaterial(materialName As String, customPropertyValue As String, _
                Optional red As Variant, Optional green As Variant, Optional blue As Variant, _
                Optional surfaceTreatment As String = "无")
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swPart As SldWorks.partDoc
    Dim swAssembly As SldWorks.AssemblyDoc
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim configName As String
    Dim databaseName As String

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    configName = ""
    databaseName = "SOLIDWORKS Materials"

    If swModel.GetType = swDocumentTypes_e.swDocPART Then ' 零件
        Set swPart = swModel
        ApplyMaterial swPart, materialName, customPropertyValue, surfaceTreatment

        If Not IsMissing(red) And Not IsMissing(green) And Not IsMissing(blue) Then
            ChangePartColor swModel, red / 255, green / 255, blue / 255
        End If

        MsgBox "已为零件设置材质为" & materialName & "并设置自定义属性。"

    ElseIf swModel.GetType = swDocumentTypes_e.swDocASSEMBLY Then ' 装配体
        Set swAssembly = swModel
        Set swSelMgr = swModel.SelectionManager

        Dim n As Integer
        n = swSelMgr.GetSelectedObjectCount2(-1)

        If n = 0 Then
            MsgBox "请选中零件后运行。", vbExclamation, "错误"
            Exit Sub
        End If

        Dim i As Integer
        For i = 1 To n
            Dim swComp As SldWorks.Component2
            Set swComp = swSelMgr.GetSelectedObjectsComponent4(i, -1)
            Set swPart = swComp.GetModelDoc2

            If Not swComp Is Nothing Then
                ApplyMaterial swPart, materialName, customPropertyValue, surfaceTreatment

                If Not IsMissing(red) And Not IsMissing(green) And Not IsMissing(blue) Then
                    ChangePartColor swPart, red / 255, green / 255, blue / 255
                End If
            End If
        Next i

        MsgBox "已为选中的零件设置材质为" & materialName & ""
    End If

End Sub

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

使用道具 举报

0

主题

33

帖子

70

金币

天使

Rank: 2Rank: 2

积分
171
QQ
沙发
发表于 2024-4-23 20:30:00 | 只看该作者
顶一下,坐等高手!
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

2

主题

370

帖子

6

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1472

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

板凳
发表于 2024-4-25 16:23:59 | 只看该作者
遍历批量设置才好
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

139

帖子

53

金币

堂主

Rank: 4

积分
934

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

地板
 楼主| 发表于 4 天前 | 只看该作者
求大神写个点击组件后把组件的自定义属性里的材料栏设置其材料为“组件”
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-4 20:41 , Processed in 0.160259 second(s), 34 queries .

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

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

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