You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:57:01