Add a line based detail family instance into the Autodesk Revit document,
using an line and a view where the instance should be placed.
Namespace: Autodesk.Revit.CreationAssembly: RevitAPI (in RevitAPI.dll) Version: 26.4.0.0 (26.4.0.0)
Syntax
C#
public FamilyInstance NewFamilyInstance(
Line line,
FamilySymbol symbol,
View specView
)
Parameters
- line Line
- The line location of family instance. The line must in the plane of the view.
- symbol FamilySymbol
- A family symbol object that represents the type of the instance that is to be inserted.
- specView View
- A 2D view in which to display the family instance.
Return Value
FamilyInstance
Exceptions
Remarks
This overload applies only to 2D family line based detail symbols.
The type/symbol that is used must be loaded into the document before this method is called.
Families and their symbols can be loaded using the Document.LoadFamily
or Document.LoadFamilySymbol methods.
Example
C#
void CreateDetailComponent(Autodesk.Revit.DB.Document document, View view)
{
if (view.ViewType == ViewType.Detail ||
view.ViewType == ViewType.DraftingView)
{
FamilySymbol symbol = null;
FilteredElementCollector fsCollector = new FilteredElementCollector(document);
fsCollector.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_DetailComponents);
ICollection<Element> collection = fsCollector.ToElements();
foreach (Element element in collection)
{
FamilySymbol current = element as FamilySymbol;
if (current.Family.FamilyPlacementType == FamilyPlacementType.CurveBasedDetail)
{
symbol = current;
break;
}
}
if (symbol != null)
{
XYZ start = view.Origin;
XYZ end = start + new XYZ(2, 0, 0);
Line line = Line.CreateBound(start, end);
FamilyInstance instance = document.Create.NewFamilyInstance(line, symbol, view);
}
}
}
VB
Private Sub CreateDetailComponent(document As Autodesk.Revit.DB.Document, view As View)
If view.ViewType = ViewType.Detail OrElse view.ViewType = ViewType.DraftingView Then
Dim symbol As FamilySymbol = Nothing
Dim fsCollector As New FilteredElementCollector(document)
fsCollector.OfClass(GetType(FamilySymbol)).OfCategory(BuiltInCategory.OST_DetailComponents)
Dim collection As ICollection(Of Element) = fsCollector.ToElements()
For Each element As Element In collection
Dim current As FamilySymbol = TryCast(element, FamilySymbol)
If current.Family.FamilyPlacementType = FamilyPlacementType.CurveBasedDetail Then
symbol = current
Exit For
End If
Next
If symbol IsNot Nothing Then
Dim start As XYZ = view.Origin
Dim [end] As XYZ = start + New XYZ(2, 0, 0)
Dim line__1 As Line = Line.CreateBound(start, [end])
Dim instance As FamilyInstance = document.Create.NewFamilyInstance(line__1, symbol, view)
End If
End If
End Sub
See Also
Reference