AnalyticalLink.Create
Method
Description:
Creates a new instance of a AnalyticalLink element between two Hubs.
Creates a new instance of a AnalyticalLink element between two Hubs.
Syntax
Examples
public void CreateLink(Document doc, AnalyticalElement fi1, AnalyticalElement fi2)
{
FilteredElementCollector hubCollector = new FilteredElementCollector(doc);
hubCollector.OfClass(typeof(Hub)); //Get all hubs
ICollection<Element> allHubs = hubCollector.ToElements();
FilteredElementCollector linktypeCollector = new FilteredElementCollector(doc);
linktypeCollector.OfClass(typeof(AnalyticalLinkType));
ElementId firstLinkType = linktypeCollector.ToElementIds().First(); //Get the first analytical link type.
// Get hub Ids from two selected family instance items
ElementId startHubId = GetHub(fi1.Id, allHubs);
ElementId endHubId = GetHub(fi2.Id, allHubs);
Transaction tran = new Transaction(doc, "Create Link");
tran.Start();
//Create a link between these two hubs.
AnalyticalLink createdLink = AnalyticalLink.Create(doc, firstLinkType, startHubId, endHubId);
tran.Commit();
}
//Get the first Hub on a given AnalyticalModel element
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;
}
Parameters
Parameter | Type | Description |
---|---|---|
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
Type | Description |
---|---|
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 |