SolidWorks二次开发---简单的参数化示例

参数化设计? 我们看下百度的解释
在这里插入图片描述
哇,好像没几个字,你会了吗?
在这里插入图片描述
我用小白的口气解释一下: 就像我有个生产苹果的机器 ,你想要苹果的时候告诉我你想要多大的苹果就行。 这里面苹果的大小就是一个参数。小朋友 可能 只要直径10cm的苹果就能吃饱,但是大人就得要直径20cm的苹果。所以这个生产苹果的机器 就只需要这一个参数就行了。
这就参数化设计,元芳,你怎么看?
在SolidWorks中做参数化开发有不同的方式,大多都采用先建立好一套初始模型,然后通过程序 修改参数来得到新的模型,从而完成设计。
当然也有些是直接采用api接口直接进行绘制的,这种就相对来说比较复杂,不适合大量的操作。

下面我们就用一个简单的例子,来实战一下:

我们先弄一个简单的界面,里面有一些参数:
其实就是一个零件上有很多个小孔, 通过些小孔控制整个零件的尺寸,来设计零件。
在这里插入图片描述
下面是主要的代码(Vb.net版本):

Function ModifyActionModel() As Boolean
        Try
            Dim swModel As ModelDoc2
            Dim swEqnMgr As EquationMgr

            Dim eqName As String

            swApp = GetObject(, "SldWorks.Application")
            swModel = swApp.ActiveDoc

            If swModel Is Nothing Then

                MsgBox("当前模型为空。请打开后重试")

            End If
			
			'通过这个属性来检查零件是否能通过工具修改
            Dim ActionPartCode = swModel.CustomInfo2("", "CodeID")
            If ActionPartCode = "B0000001" Then


            Else

                MsgBox("当前模型不是工具生成的零件,所以无法修改。")

                Return False

            End If
			
            swEqnMgr = swModel.GetEquationMgr
            ProgressStatus.Value = 40
            Dim str1 As String = """"
			'通过修改方程式来控制模型
            For i = 0 To swEqnMgr.GetCount - 1

                eqName = Mid(swEqnMgr.Equation(i), 1, (InStrRev(swEqnMgr.Equation(i), "=")) - 1)

                If InStr(eqName, Chr(34) & "circle_R" & Chr(34)) Then swEqnMgr.Equation(i) = """circle_R""= " & Val(txtR.Text)
                If InStr(eqName, Chr(34) & "number_X" & Chr(34)) Then swEqnMgr.Equation(i) = """number_X""= " & Val(cobXQty.Text)
                If InStr(eqName, Chr(34) & "number_Y" & Chr(34)) Then swEqnMgr.Equation(i) = """number_Y""= " & Val(cobYQty.Text)
                If InStr(eqName, Chr(34) & "circle_x" & Chr(34)) Then swEqnMgr.Equation(i) = """circle_x""= " & Val(txtLeft.Text)
                If InStr(eqName, Chr(34) & "circle_Y" & Chr(34)) Then swEqnMgr.Equation(i) = """circle_Y""= " & Val(txtRight.Text)
                If InStr(eqName, Chr(34) & "box_Height" & Chr(34)) Then swEqnMgr.Equation(i) = """box_Height""= " & Val(txtHeight.Text)
                If InStr(eqName, Chr(34) & "circle_Dim" & Chr(34)) Then swEqnMgr.Equation(i) = """circle_Dim""= " & Val(Double.Parse(txtR.Text) + Double.Parse(txtGap.Text))

            Next
            ProgressStatus.Value = 80
            Dim ret As Integer

            ret = swEqnMgr.EvaluateAll
            ret = swModel.ForceRebuild3(True) 'Rebuid model
            ProgressStatus.Value = 100
            Return True
        Catch ex As Exception
            Return False

        End Try

    End Function

在这里插入图片描述

这样就完成了设计,至于工具编程涉及的功能我之前 的博文中都有写到。
比如修改尺寸,属性 ,方程式,压缩特征等等。。。
在这里插入图片描述

posted @   painezeng  阅读(165)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2020-08-10 C# SolidWorks 二次开发 API ---遍历特定圆柱面进行处理
点击右上角即可分享
微信分享提示