失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SolidWorks二次开发---简单的参数化示例

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

时间:2023-05-24 06:26:39

相关推荐

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

参数化设计? 我们看下百度的解释

哇,好像没几个字,你会了吗?

我用小白的口气解释一下: 就像我有个生产苹果的机器 ,你想要苹果的时候告诉我你想要多大的苹果就行。 这里面苹果的大小就是一个参数。小朋友 可能 只要直径10cm的苹果就能吃饱,但是大人就得要直径20cm的苹果。所以这个生产苹果的机器 就只需要这一个参数就行了。

这就参数化设计,元芳,你怎么看?

在SolidWorks中做参数化开发有不同的方式,大多都采用先建立好一套初始模型,然后通过程序 修改参数来得到新的模型,从而完成设计。

当然也有些是直接采用api接口直接进行绘制的,这种就相对来说比较复杂,不适合大量的操作。

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

我们先弄一个简单的界面,里面有一些参数:

其实就是一个零件上有很多个小孔, 通过些小孔控制整个零件的尺寸,来设计零件。

下面是主要的代码(版本):

Function ModifyActionModel() As BooleanTryDim swModel As ModelDoc2Dim swEqnMgr As EquationMgrDim eqName As StringswApp = GetObject(, "SldWorks.Application")swModel = swApp.ActiveDocIf swModel Is Nothing ThenMsgBox("当前模型为空。请打开后重试")End If'通过这个属性来检查零件是否能通过工具修改Dim ActionPartCode = swModel.CustomInfo2("", "CodeID")If ActionPartCode = "B0000001" ThenElseMsgBox("当前模型不是工具生成的零件,所以无法修改。")Return FalseEnd IfswEqnMgr = swModel.GetEquationMgrProgressStatus.Value = 40Dim str1 As String = """"'通过修改方程式来控制模型For i = 0 To swEqnMgr.GetCount - 1eqName = 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))NextProgressStatus.Value = 80Dim ret As Integerret = swEqnMgr.EvaluateAllret = swModel.ForceRebuild3(True) 'Rebuid modelProgressStatus.Value = 100Return TrueCatch ex As ExceptionReturn FalseEnd TryEnd Function

这样就完成了设计,至于工具编程涉及的功能我之前 的博文中都有写到。

比如修改尺寸,属性 ,方程式,压缩特征等等。。。

如果觉得《SolidWorks二次开发---简单的参数化示例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。