嗨,我有一个创建多个工作表的宏,并具有名称,编号,工作表类别。最后一个是我自己的项目参数。
我可以使用名称和编号成功创建工作表,但是我很难将CSV文件中的值添加到项目参数“SD_Sheet Category”。下面是一些代码争取,以帮助解释。
Public Module mSheetCreator
Public Structure structSheet
Public sheetNum As String
Public sheetName As String
Public sortCategory As String
End Structure
然后我有一个函数读取CSV文件并执行以下操作:
Try
currentRow = MyReader.ReadFields()
'create temp sheet
Dim curSheet As New structSheet
curSheet.sheetNum = currentRow(0)
cursheet.sheetName = currentRow(1)
curSheet.sortCategory = currentRow(4)
'add sheet to list
sheetList.Add(curSheet)
然后我有一个执行以下操作的事务:
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)
m_vs.Parameter("SD_Sheet Category").Set(CStr(curSheet.sortCategory))
End If
m_vs.Name = curSheet.sheetName
m_vs.SheetNumber = curSheet.sheetNum
问题是这段代码:
m_vs.Parameter("SD_Sheet Category").Set(CStr(curSheet.sortCategory))
一旦我构建解决方案,我收到一条警告,说这是“从'String'隐式转换为'Autodesk.Revit.DB.BuiltInParameter'”
当我在Revit中运行代码时会产生错误
“从字符串'SD_Sheet Category'转换为'Integer'类型无效”
它会创建工作表但忽略CSV文件中的所有信息。我知道其余的代码工作,因为我删除了这个特定的代码行,所以我知道它不是问题
有什么建议??
我相信,从特定版本的Revit API开始,您无法使用.Parameter(“name”)
因为可能有两个具有相同名称的参数。
所以你需要做更多的事情
Dim cat as Parameter
Cat = m_vs.GetParameters(“sd_sheet category”)。First()Cat.Set(CSTR(cursht.sortCategory))
祝好运!