Creates a new Truss.
Namespace: Autodesk.Revit.DB.Structure
Assembly: RevitAPI (in RevitAPI.dll) Version: 23.0.0.0 (23.1.0.0)
Since:
2014
Syntax
Examples
CopyC#
Truss CreateTruss(Autodesk.Revit.DB.Document document,
FamilyInstance column1, FamilyInstance column2)
{
Truss truss = null;
using (Transaction transaction = new Transaction(document, "Add Truss"))
{
if (transaction.Start() == TransactionStatus.Started)
{
XYZ origin = new XYZ(0, 0, 0);
XYZ xDirection = new XYZ(1, 0, 0);
XYZ yDirection = new XYZ(0, 1, 0);
XYZ zDirection = new XYZ(0, 0, 1);
Plane plane = Plane.Create(new Frame(origin, xDirection, yDirection, zDirection));
SketchPlane sketchPlane = SketchPlane.Create(document, plane);
XYZ centerPoint1 = null;
XYZ centerPoint2 = null;
Location loc1 = column1.Location;
if (loc1 is LocationPoint)
centerPoint1 = (loc1 as LocationPoint).Point;
else if (loc1 is LocationCurve)
centerPoint1 = ((loc1 as LocationCurve).Curve as Line).GetEndPoint(0);
Location loc2 = column2.Location;
if (loc2 is LocationPoint)
centerPoint1 = (loc2 as LocationPoint).Point;
else if (loc2 is LocationCurve)
centerPoint1 = ((loc2 as LocationCurve).Curve as Line).GetEndPoint(0);
XYZ startPoint = new XYZ(centerPoint1.X, centerPoint1.Y, 0);
XYZ endPoint = new XYZ(centerPoint2.X, centerPoint2.Y, 0);
Autodesk.Revit.DB.Line baseLine = null;
try
{
baseLine = Line.CreateBound(startPoint, endPoint);
}
catch (System.ArgumentException)
{
throw new Exception("Selected columns are too close to create truss.");
}
Autodesk.Revit.DB.View view = document.ActiveView;
FilteredElementCollector collector = new FilteredElementCollector(document);
collector.OfClass(typeof(FamilySymbol));
collector.OfCategory(BuiltInCategory.OST_Truss);
TrussType trussType = collector.FirstElement() as TrussType;
if (null != trussType)
{
truss = Truss.Create(document, trussType.Id, sketchPlane.Id, baseLine);
transaction.Commit();
}
else
{
transaction.RollBack();
throw new Exception("No truss types found in document.");
}
}
}
return truss;
}
CopyVB.NET
Private Function CreateTruss(document As Autodesk.Revit.DB.Document, column1 As FamilyInstance, column2 As FamilyInstance) As Truss
Dim truss__1 As Truss = Nothing
Using transaction As New Transaction(document, "Add Truss")
If transaction.Start() = TransactionStatus.Started Then
Dim origin As New XYZ(0, 0, 0)
Dim xDirection As New XYZ(1, 0, 0)
Dim yDirection As New XYZ(0, 1, 0)
Dim zDirection As New XYZ(0, 0, 1)
Dim planeFrame As New Autodesk.Revit.DB.Frame(origin, xDirection, yDirection, zDirection)
Dim plane As Plane = Autodesk.Revit.DB.Plane.Create(planeFrame)
Dim sketchPlane__2 As SketchPlane = SketchPlane.Create(document, plane)
Dim locFrame1 As LocationCurve = TryCast(column1.Location, LocationCurve)
Dim centerPoint1 As XYZ = TryCast(locFrame1.Curve, Line).GetEndPoint(0)
Dim locFrame2 As LocationCurve = TryCast(column2.Location, LocationCurve)
Dim centerPoint2 As XYZ = TryCast(locFrame2.Curve, Line).GetEndPoint(0)
Dim startPoint As New XYZ(centerPoint1.X, centerPoint1.Y, 0)
Dim endPoint As New XYZ(centerPoint2.X, centerPoint2.Y, 0)
Dim baseLine As Autodesk.Revit.DB.Line = Nothing
Try
baseLine = Line.CreateBound(startPoint, endPoint)
Catch generatedExceptionName As System.ArgumentException
Throw New Exception("Selected columns are too close to create truss.")
End Try
Dim view As Autodesk.Revit.DB.View = document.ActiveView
Dim collector As New FilteredElementCollector(document)
collector.OfClass(GetType(FamilySymbol))
collector.OfCategory(BuiltInCategory.OST_Truss)
Dim trussType As TrussType = TryCast(collector.FirstElement(), TrussType)
If trussType IsNot Nothing Then
truss__1 = Truss.Create(document, trussType.Id, sketchPlane__2.Id, baseLine)
transaction.Commit()
Else
transaction.RollBack()
Throw New Exception("No truss types found in document.")
End If
End If
End Using
Return truss__1
End Function
Exceptions
See Also