namespace TestRevitSubFamilyLoad
{
using System.IO;
using System.Windows;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class Command : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var doc = commandData.Application.ActiveUIDocument.Document;
var familyFile = Path.Combine(
Path.GetDirectoryName(typeof(Command).Assembly.Location),
"Родительское семейство 1.rfa");
using var t = new Transaction(doc, nameof(TestRevitSubFamilyLoad));
t.Start();
doc.LoadFamily(familyFile, new FamilyLoadOptions(), out var family);
t.Commit();
return Result.Succeeded;
}
}
public class FamilyLoadOptions : IFamilyLoadOptions
{
public bool OnFamilyFound(bool familyInUse, out bool overwriteParameterValues)
{
overwriteParameterValues = true;
return true;
}
public bool OnSharedFamilyFound(
Family sharedFamily,
bool familyInUse,
out FamilySource source,
out bool overwriteParameterValues)
{
MessageBox.Show($"sharedFamily = {sharedFamily?.Name}");
source = FamilySource.Family;
overwriteParameterValues = true;
return true;
}
}
}