public class SchelVent : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
try
{
UIDocument uiDocument = commandData.Application.ActiveUIDocument;
ScheduleCreationUtility utility = new ScheduleCreationUtility();
utility.CreateAndAddSchedule(uiDocument);
return Result.Succeeded;
}
catch (Exception ex)
{
message = ex.Message;
return Result.Failed;
}
}
}
class ScheduleCreationUtility
{
private static BuiltInParameter[] addedParameters = new BuiltInParameter[7]; //{ BuiltInParameter.ALL_MODEL_MARK };
public void CreateAndAddSchedule(UIDocument uiDocument)
{
TransactionGroup tGroup = new TransactionGroup(uiDocument.Document, "Create schedule");
tGroup.Start();
ViewSchedule schedules = CreateSchedule(uiDocument);
tGroup.Assimilate();
}
private ViewSchedule CreateSchedule(UIDocument uiDocument)
{
Document document = uiDocument.Document;
Transaction t = new Transaction(document, "Create Schedules");
t.Start();
//IList<ElementId> categories = new List<ElementId>;
//categories.Add(new ElementId(BuiltInCategory.OST_DuctCurves));
//categories.Add(new ElementId(BuiltInCategory.OST_DuctFitting));
//categories.Add(new ElementId(BuiltInCategory.OST_DuctAccessory));
//categories.Add(new ElementId(BuiltInCategory.OST_DuctTerminal));
//categories.Add(new ElementId(BuiltInCategory.OST_MechanicalEquipment));
//categories.Add(new ElementId(BuiltInCategory.OST_FlexDuctCurves));
ViewSchedule schedule = ViewSchedule.CreateSchedule(document,
new ElementId(BuiltInCategory.OST_DuctCurves),
ElementId.InvalidElementId);
foreach (SchedulableField schedulableField in schedule.Definition.GetSchedulableFields())
{
ScheduleField field = schedule.Definition.AddField(schedulableField);
}
t.Commit();
uiDocument.ActiveView = schedule;
return schedule;
}
private bool ShouldBeAdded(ElementId parameterId)
{
foreach (BuiltInParameter bip in addedParameters)
{
if (new ElementId(bip) == parameterId)
return true;
}
return false;
}
}