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

在这里插入图片描述

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

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paine Zeng

如果对有帮助,请我喝咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值