AnalyticalLinkCreate Method |
Creates a new instance of a AnalyticalLink element between two Hubs.
Namespace: Autodesk.Revit.DB.StructureAssembly: RevitAPI (in RevitAPI.dll) Version: 27.0.4.0 (27.0.4.0)
Syntaxpublic static AnalyticalLink Create(
Document doc,
ElementId type,
ElementId startHubId,
ElementId endHubId
)
Public Shared Function Create (
doc As Document,
type As ElementId,
startHubId As ElementId,
endHubId As ElementId
) As AnalyticalLink
public:
static AnalyticalLink^ Create(
Document^ doc,
ElementId^ type,
ElementId^ startHubId,
ElementId^ endHubId
)
static member Create :
doc : Document *
type : ElementId *
startHubId : ElementId *
endHubId : ElementId -> AnalyticalLink Parameters
- doc Document
-
Document to which new AnalyticalLink should be added.
- type ElementId
-
AnalyticalLinkType for the new AnalyticalLink.
- startHubId ElementId
-
Hub at start of AnalyticalLink.
- endHubId ElementId
-
Hub at end of AnalyticalLink.
Return Value
AnalyticalLink
The newly created AnalyticalLink instance.
Exceptions| Exception | Condition |
|---|
| ArgumentException |
startHubId is not a valid Hub ID for an AnalyticalLink element.
-or-
endHubId is not a valid Hub ID for an AnalyticalLink element.
-or-
Thrown if startHubId or endHubId do not represent ids of Hubs.
-or-
Thrown if startHubId == endHubId.
-or-
Thrown if type does not represent an id of an AnalyticalLinkType.
|
| ArgumentNullException |
A non-optional argument was null
|
Examplepublic void CreateLink(Document doc, AnalyticalElement fi1, AnalyticalElement fi2)
{
FilteredElementCollector hubCollector = new FilteredElementCollector(doc);
hubCollector.OfClass(typeof(Hub));
ICollection<Element> allHubs = hubCollector.ToElements();
FilteredElementCollector linktypeCollector = new FilteredElementCollector(doc);
linktypeCollector.OfClass(typeof(AnalyticalLinkType));
ElementId firstLinkType = linktypeCollector.ToElementIds().First();
ElementId startHubId = GetHub(fi1.Id, allHubs);
ElementId endHubId = GetHub(fi2.Id, allHubs);
Transaction tran = new Transaction(doc, "Create Link");
tran.Start();
AnalyticalLink createdLink = AnalyticalLink.Create(doc, firstLinkType, startHubId, endHubId);
tran.Commit();
}
private ElementId GetHub(ElementId hostId, ICollection<Element> allHubs)
{
foreach (Element ehub in allHubs)
{
Hub hub = ehub as Hub;
ConnectorManager manager = hub.GetHubConnectorManager();
ConnectorSet connectors = manager.Connectors;
foreach (Connector connector in connectors)
{
ConnectorSet refConnectors = connector.AllRefs;
foreach (Connector refConnector in refConnectors)
{
if (refConnector.Owner.Id == hostId)
{
return hub.Id;
}
}
}
}
return ElementId.InvalidElementId;
}
See Also