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 @
2021-08-10 16:59
painezeng 阅读(
0) 评论(
0)
编辑
收藏
举报
来源