使用多个项目参数从 Excel 创建 Revit 表格
Create Revit Sheets from Excel with multiple project parameters
您好,我有一个宏可以创建多个工作表,并且具有名称、编号、Sheet 类别。最后一个是我自己的项目参数。
我可以成功创建带有名称和编号的工作表,但我无法将 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))
我收到一条警告说这是一个 "implicit conversion from 'String' to 'Autodesk.Revit.DB.BuiltInParameter'"
一旦我构建解决方案
当我 运行 Revit 中的代码时,它会产生一个错误
"Conversion from string 'SD_Sheet Category" to type 'Integer' is not valid"
它创建工作表但忽略 CSV 文件中的所有信息。我知道其余代码可以正常工作,因为我删除了这行特定的代码,所以我知道这不是问题
有什么建议吗??
我相信对于特定版本的 Revit API 您不能使用 .Parameter(“name”)
因为可能有两个同名参数。
所以你需要做一些更像
Dim cat as Parameter
Cat = m_vs.GetParameters(“sd_sheet 类别”).First()
Cat.Set(CSTR(cursht.sortCategory))
祝你好运!
您好,我有一个宏可以创建多个工作表,并且具有名称、编号、Sheet 类别。最后一个是我自己的项目参数。
我可以成功创建带有名称和编号的工作表,但我无法将 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))
我收到一条警告说这是一个 "implicit conversion from 'String' to 'Autodesk.Revit.DB.BuiltInParameter'" 一旦我构建解决方案
当我 运行 Revit 中的代码时,它会产生一个错误
"Conversion from string 'SD_Sheet Category" to type 'Integer' is not valid"
它创建工作表但忽略 CSV 文件中的所有信息。我知道其余代码可以正常工作,因为我删除了这行特定的代码,所以我知道这不是问题
有什么建议吗??
我相信对于特定版本的 Revit API 您不能使用 .Parameter(“name”)
因为可能有两个同名参数。
所以你需要做一些更像
Dim cat as Parameter
Cat = m_vs.GetParameters(“sd_sheet 类别”).First() Cat.Set(CSTR(cursht.sortCategory))
祝你好运!