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
这样就完成了设计,至于工具编程涉及的功能我之前 的博文中都有写到。
比如修改尺寸,属性 ,方程式,压缩特征等等。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2020-08-10 C# SolidWorks 二次开发 API ---遍历特定圆柱面进行处理