Application: GenericStructuralConnection
Revit Platform: All
Revit Version: 2017.0
First Released For: 2017.0
Programming Language: C#
Skill Level: Beginning
Category: Structure
Type: ExternalCommand

Subject: Generic structural connection
Summary: 
Demonstrates basic Create Read Update Delete operations on a generic / detailed structural connection

Classes:
Autodesk.Revit.UI.IExternalCommand
Autodesk.Revit.UI.Selection.ISelectionFilter
Autodesk.Revit.DB.ElementTransformUtils
Autodesk.Revit.DB.ExtensibleStorage.Entity
Autodesk.Revit.DB.ExtensibleStorage.Schema
Autodesk.Revit.DB.Structure.StructuralConnectionHandler
Autodesk.Revit.DB.Structure.StructuralConnectionHandlerType

Project Files: 
Command.cs 
This file contains the command class which inherits from interface IExternalCommand and implements the Execute method.

CommandOptions.cs
This file contains an enum for user commands.

GenericStructuralConnectionOps.cs
This file contains a class which exposes a collection of static methods used in basic generic structural connection operations.

DetailedStructuralConnectionOps.cs
This file contains a class which exposes a collection of static methods used in basic detailed structural connection operations

StructuralConnectionSelectionFilter.cs
This file contains a class that implements an ISelectionFilter for use in selection operations.

StructualConnectionSelectionUtils.cs
This file contains methods for selecting proper elements for the structural connection.

StructuralConnectionForm.cs
This file contains a form used to prompt for the user command.

Description: 
This sample provides following functionalities.
-	Create, Read, Update, Delete generic structural connections.
-	Create, change, copy, match properties, reset detailed structural connections.

Instructions: 
Open Revit application and create a new structural analysis project or open an existing one. 
Make sure that the “Structural connection” and all its subcategories are visible in the current view. For this open the “Visibility/Graphics Overrides" dialog form the view properties palette.

In the current project you should have some structural elements that are valid structural connection inputs (framings, columns, walls, floors or foundations).
Execute the command (from the Add-ins tab).
Select one option from the dialog and press Ok.

1.	Create generic structural connection.
a.   Execute the command.
b.   Select some adjacent structural elements that we want to connect.
Expected result: A generic structural connection is created for the selected structural elements.

2.	Delete generic structural connection.
a.	Execute the command.
b.	Select some structural connection elements in the current project.
Expected result: The structural connections should get erased and the former connected elements should be independent.

3.	Read generic structural connection information.
a.	Execute the command.	
b.	Select a structural connection element.
Expected result: A dialog displaying connection information should appear on screen. 

4.	Update generic structural connection information.
a.	Execute the command.
b.	Select a connection when prompted.
c.	Select an element / elements to add to the existing connection. The elements should respect distance restrictions.
Expected result: The structural connection is updated to include the additional selected elements.

The following commands demonstrate detailed structural connections usage.
For this you need to have the Steel Connection add-in installed.
You also need to change the detail level to Fine in order to see the results.

5.	Create detailed structural connection.
a.	Execute the command.
b. 	Select a structural column and an adjacent structural framing.
Expected result: A detailed structural connection (clip angle) should be created.

6.	Copy detailed structural connection.
a.	Select a detailed connection together with its input elements.
b.	Execute the command.
Expected result: The structural connection and the connected elements should be copied to another place in the current project. 

7.	Match properties on a detailed structural connection.
a.	Execute the command.
b.	Select the source detailed structural connection.
c.	Select a similar type detailed structural connection that should match the source connection.
Expected result: The properties of the destination connection should be matched to the source one. 

8.	Change detailed structural connection.
a.	Execute the command.
b.	Select a detailed clip angle structural connection.
Expected result: The type and graphic representation of the detailed structural connection should change from “clip angle” to “shear plate”.

9.	Reset detailed structural connection.
a.	Execute the command.
b.	Select the detailed structural connection.
Expected result: The type and graphic representation of the detailed structural connection should change from “clip angle” to generic connection.