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

如何通过SolidWorks API修改草图线长 运行报对象变量未设置错误

SolidWorks VBA修改草图尺寸报对象变量未设置错误

问题描述

通过VBA代码修改SolidWorks草图内直线长度时,在swDim.SetSystemValue3行触发运行时错误:

Object variable or With block variable not set(对象变量或With块变量未设置)
SolidWorks运行界面:
SolidWorks运行界面截图
问题复现代码:

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    swModel.AddConfiguration3 "test", Empty, Empty, 0
    
    Dim swDim As SldWorks.Dimension
    
    Set swDim = swModel.Parameter("D1.@Szkic1")
    
    swDim.SetSystemValue3 0.005, swThisConfiguration, Empty  '(报错行)
    
    swModel.ForceRebuild3 True

End Sub

报错原因

报错的核心是swDim对象值为Nothing,对空对象调用方法必然触发该类错误。swModel.Parameter()返回空的常见原因:

  • 参数字符串格式错误:传入的"D1.@Szkic1"在D1和@之间多了多余的句点,SolidWorks尺寸参数的标准命名格式为<尺寸编号>@<所属特征名>,不存在多余分隔符。
  • 名称拼写不匹配:SolidWorks参数名严格匹配字符内容,不同语言版本默认草图命名不同:中文环境默认草图名为草图1,英文环境为Sketch1,波兰语等本地化版本才会使用Szkic1命名,只要实际尺寸名、草图名和代码传入值有一个字符不匹配,就无法获取到目标参数。
  • 目标草图处于压缩状态、或当前激活的文档不是尺寸所属的模型文档,也会导致参数读取失败。

修复方案

  1. 先获取准确的参数全名:进入目标草图的编辑状态,双击需要修改的直线尺寸,直接复制左侧属性面板显示的完整尺寸名称,不要手动输入避免拼写错误。
  2. 替换代码中Parameter()方法的传入值,增加空值校验逻辑提前拦截异常,修正后可正常运行的代码如下:
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    ' 校验是否存在激活的模型文档
    If swModel Is Nothing Then
        MsgBox "请先打开需要修改的目标零件/装配体文档"
        Exit Sub
    End If
    
    swModel.AddConfiguration3 "test", Empty, Empty, 0
    
    Dim swDim As SldWorks.Dimension
    ' 替换为实际复制的完整尺寸名,不要加多余字符
    Set swDim = swModel.Parameter("D1@Szkic1")
    
    ' 校验是否成功获取尺寸对象
    If swDim Is Nothing Then
        MsgBox "未匹配到目标尺寸,请检查尺寸名、草图名拼写是否正确"
        Exit Sub
    End If
    
    ' 注意:SetSystemValue3 传入的长度单位为米,0.005对应5mm
    swDim.SetSystemValue3 0.005, swThisConfiguration, Empty
    
    swModel.ForceRebuild3 True
End Sub

内容的提问来源于stack exchange,提问作者Szymon Tolko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:48:45