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

Revit宏创建图纸时设置SD_Sheet Category参数报错求助

解决Revit宏自定义项目参数赋值错误的问题

我来帮你搞定这个参数赋值的问题!你遇到的错误根源是调用Parameter()方法的方式不对,这个方法的字符串重载并不是用来查找自定义项目参数的,而是针对Revit内置参数(BuiltInParameter枚举)的。

错误原因解析

你写的m_vs.Parameter("SD_Sheet Category"),Revit会把这个字符串当成BuiltInParameter枚举的名称来解析,试图将其转换为对应的枚举整数值,但你的SD_Sheet Category是自定义项目参数,根本不在内置参数列表里,所以就会抛出“Conversion from string... to Integer is not valid”的错误,编译警告也提示了这个隐式转换的问题。

正确的解决方案

要获取自定义项目参数,你需要使用LookupParameter()方法,这个方法专门用来通过参数名称查找所有类型的参数(包括自定义参数、共享参数)。

另外,为了避免空引用异常,最好先检查获取到的参数是否存在,再调用Set()方法。

修正后的代码片段

把你事务中的错误代码行替换成下面的逻辑:

For Each curSheet As structSheet In sheetList
    Try
        If sheetType = "Placeholder Sheet" Then
            m_vs = ViewSheet.CreatePlaceholder(curDoc)
        Else
            m_vs = ViewSheet.Create(curDoc, tblock.Id)
            ' 获取自定义项目参数
            Dim categoryParam As Parameter = m_vs.LookupParameter("SD_Sheet Category")
            ' 检查参数是否存在且可编辑,再赋值
            If categoryParam IsNot Nothing AndAlso categoryParam.IsReadOnly = False Then
                categoryParam.Set(CStr(curSheet.sortCategory))
            End If
        End If
        m_vs.Name = curSheet.sheetName
        m_vs.SheetNumber = curSheet.sheetNum
    Catch ex As Exception
        ' 可添加错误日志或提示逻辑
        MsgBox($"处理图纸 {curSheet.sheetNum} 时出错: {ex.Message}")
    End Try
Next

额外注意事项

  • 参数名称匹配:确保LookupParameter()里的参数名称和你在Revit中定义的自定义参数名称完全一致,包括大小写、空格和特殊字符,Revit对参数名称是大小写敏感的。
  • 参数可编辑性:通过IsReadOnly检查参数是否允许修改,避免因为参数是只读状态导致赋值失败。

内容的提问来源于stack exchange,提问作者Simon Palmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:32:17