Untitled
unknown
plain_text
a month ago
2.3 kB
2
Indexable
import clr import sys from Autodesk.Revit.DB import * from pyrevit import revit, DB, forms # Add Excel interop clr.AddReference("Microsoft.Office.Interop.Excel") import Microsoft.Office.Interop.Excel as Excel # Select Excel file excel_path = forms.pick_file(file_ext='xlsx') if not excel_path: forms.alert("No Excel file selected!") sys.exit() # Open Excel excel_app = Excel.ApplicationClass() workbook = excel_app.Workbooks.Open(excel_path) sheet = workbook.Sheets[1] # Read Excel data data = [] row = 1 while True: row_data = [] col = 1 while True: cell_value = sheet.Cells(row, col).Value if cell_value is None: break row_data.append(cell_value) col += 1 if not row_data: break data.append(row_data) row += 1 # Close Excel workbook.Close(False) excel_app.Quit() # Clean up del excel_app # Verify data if not data or len(data) < 2: forms.alert("No valid data found in Excel!") sys.exit() # First row is headers headers = data[0] values = data[1:] # Get Revit Document doc = revit.doc # Transaction to create Key Schedule t = Transaction(doc, "Create Key Schedule from Excel") t.Start() try: # Define category for the schedule (e.g., Walls) category = DB.Category.GetCategory(doc, DB.BuiltInCategory.OST_Walls) # Create a key schedule key_schedule = ViewSchedule.CreateKeySchedule(doc, category.Id) # Add fields (headers from Excel) schedule_definition = key_schedule.Definition for header in headers: schedule_field = schedule_definition.AddField(ScheduleFieldType.Instance, ElementId.InvalidElementId) schedule_field.SetName(header) # Add rows (values from Excel) for value_row in values: schedule_instance = key_schedule.InsertRow(ScheduleRowType.Data) for col_index, value in enumerate(value_row): schedule_field = schedule_definition.GetField(col_index) key_schedule.SetCellText(schedule_instance, schedule_field.FieldId, str(value)) t.Commit() forms.alert("Key Schedule created successfully!") except Exception as e: t.RollBack() forms.alert(f"Error: {e}")
Editor is loading...
Leave a Comment