如何用VBA实现SolidWorks与Excel双向参数交互及拉伸深度回写
SolidWorks与Excel双向参数交互:回写拉伸深度到Excel
已实现Excel向SolidWorks传递草图尺寸,但需要补充将SolidWorks中手动设置的拉伸深度回写到Excel的功能。以下是修改后的完整宏代码,添加了反向回写逻辑:
' C:\Users\Laptop\AppData\Local\Temp\swx3584\Macro1.swb ' ****************************************************************************** Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim myLength As Object, myLength2 As Object Dim myExtrudeDepth As Object ' 存储拉伸深度参数 Dim Value As Integer, Value2 As Integer Dim extrudeDepthMM As Double ' 存储转换为毫米的拉伸深度 'MAIN FUNCTION Sub TEST() 'Access active Solidworks and Excel files Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set xl = GetObject(, "Excel.Application") Set xlsh = xl.ActiveSheet '---------- 1. Excel → SolidWorks:传递草图尺寸 ---------- '读取Excel单元格值 Value = xlsh.Cells(2, 2) Value2 = xlsh.Cells(2, 1) '更新草图尺寸D1 Part.EditSketch Set myLength = Part.Parameter("D1@Sketch1") myLength.SystemValue = Value / 1000 ' 转米(SolidWorks内部单位) Part.SketchManager.InsertSketch True boolstatus = Part.EditRebuild3() '更新草图尺寸D2 Part.EditSketch Set myLength2 = Part.Parameter("D2@Sketch1") myLength2.SystemValue = Value2 / 1000 Part.SketchManager.InsertSketch True boolstatus = Part.EditRebuild3() '---------- 2. SolidWorks → Excel:回写拉伸深度 ---------- ' 获取拉伸特征的深度参数(替换为你的拉伸特征名称,比如"拉伸1") Set myExtrudeDepth = Part.Parameter("D1@拉伸1") ' 米转毫米 extrudeDepthMM = myExtrudeDepth.SystemValue * 1000 ' 写入Excel指定单元格(示例:C2) xlsh.Cells(2, 3).Value = extrudeDepthMM ' 可选:自动保存Excel ' xl.ActiveWorkbook.Save End Sub
关键注意事项:
- 拉伸特征名称匹配:代码中
"D1@拉伸1"的拉伸1需替换为你模型中实际的拉伸特征名称(查看SolidWorks特征树确认) - 单位转换:SolidWorks API返回的
SystemValue单位是米,需乘以1000转换为毫米后写入Excel - 单元格位置:示例写入C2单元格(
Cells(2,3)),可按需修改行号、列号 - 运行前提:确保Excel文件处于打开状态且未被锁定
内容的提问来源于stack exchange,提问作者JetskiS
相关产品推荐
相关产品推荐

