如何通过VBA在SolidWorks中创建2个边线法兰
SolidWorks VBA 批量生成边线法兰解决方案
核心思路
将原单边线处理逻辑改为循环遍历所有选中边线,为每条边线单独生成法兰轮廓草图后,将边线与对应草图批量存入数组,传入InsertSheetMetalEdgeFlange2接口即可实现一次性生成多个边线法兰。
修改后完整代码
Sub Bends_2() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swEdge As SldWorks.Edge Dim swFeature As SldWorks.Feature Dim swEntity As SldWorks.Entity Dim swSketch As SldWorks.Sketch Dim swSketchLine As SldWorks.SketchLine Dim swStartPoint As SldWorks.SketchPoint Dim swEndPoint As SldWorks.SketchPoint ' 移除固定长度数组定义,改为后续动态声明 Dim aFlangeEdges() As SldWorks.Edge Dim aSketchFeats() As SldWorks.Sketch Dim vFlangeEdges As Variant Dim vSketchFeats As Variant Dim bValue As Boolean Dim dAngle As Double Dim dLength As Double Dim vSketchSegments As Variant Dim selCount As Long Dim i As Long ' 连接到SOLIDWORKS Set swApp = Application.SldWorks ' 获取活动文档 Set swModel = swApp.ActiveDoc ' 获取选择管理器 Set swSelMgr = swModel.SelectionManager ' 校验选中对象数量 selCount = swSelMgr.GetSelectedObjectCount2(-1) If selCount < 1 Then MsgBox "请先选中至少1条钣金边线", vbExclamation Exit Sub End If ' 动态定义数组长度 ReDim aFlangeEdges(selCount - 1) ReDim aSketchFeats(selCount - 1) ' 设置角度和长度 dAngle = (90# / 180#) * 3.1415926535897 dLength = 25 / 1000 swModel.ShowNamedView2 "*Trimetric", -1 swModel.ViewZoomtofit2 ' 循环处理所有选中边线 For i = 1 To selCount ' 获取当前选中边线 Set swEdge = swSelMgr.GetSelectedObject6(i, -1) ' 为边线法兰插入草图 Set swFeature = swModel.InsertSketchForEdgeFlange(swEdge, dAngle, False) ' 选中特征 bValue = swFeature.Select2(False, 0) ' 进入草图编辑模式 swModel.EditSketch ' 获取活动草图 Set swSketch = swModel.GetActiveSketch2 ' 将边线添加到草图 Set swEntity = swEdge ' 选中边线 bValue = swEntity.Select4(False, Nothing) ' 引用边线到草图 bValue = swModel.SketchManager.SketchUseEdge(False) ' 获取生成的草图线段 vSketchSegments = swSketch.GetSketchSegments Set swSketchLine = vSketchSegments(0) ' 获取线段起止点 Set swStartPoint = swSketchLine.GetStartPoint2 Set swEndPoint = swSketchLine.GetEndPoint2 ' 创建额外线段定义草图轮廓 swModel.SetAddToDB True swModel.SetDisplayWhenAdded False swModel.CreateLine2 swStartPoint.X, swStartPoint.Y, 0#, swStartPoint.X, swStartPoint.Y + dLength, 0# swModel.CreateLine2 swStartPoint.X, swStartPoint.Y + dLength, 0#, swEndPoint.X, swStartPoint.Y + dLength, 0# swModel.CreateLine2 swEndPoint.X, swEndPoint.Y, 0#, swEndPoint.X, swEndPoint.Y + dLength, 0# ' 重置设置 swModel.SetDisplayWhenAdded True swModel.SetAddToDB False ' 提交草图修改 swModel.InsertSketch2 True ' 将当前边线和草图存入数组 Set aFlangeEdges(i - 1) = swEdge Set aSketchFeats(i - 1) = swSketch Next i ' 数组转Variant类型传入接口 vFlangeEdges = aFlangeEdges vSketchFeats = aSketchFeats ' 批量创建边线法兰 Set swFeature = swModel.FeatureManager.InsertSheetMetalEdgeFlange2((vFlangeEdges), (vSketchFeats), 128, dAngle, 0.7 / 1000, swFlangePositionTypes_e.swFlangePositionTypeMaterialInside, dLength, swSheetMetalReliefTypes_e.swSheetMetalReliefNone, 0#, 0#, 0#, swFlangeDimTypes_e.swFlangeDimTypeInnerVirtualSharp, Nothing) End Sub
使用说明
- 打开目标钣金零件,选中需要生成边线法兰的2条(或更多)边线
- 运行宏即可一次性生成所有参数统一的边线法兰
- 如需修改法兰角度、长度、折弯参数,直接修改代码中对应变量值即可
内容的提问来源于stack exchange,提问作者white_flag
相关产品推荐
相关产品推荐

