Application: SinePlotter
Revit Platform: All
Revit Version: 2013.0
First Released For: 2013.0
Programming Language: C#
Skill Level: Medium
Category: Geometry, Families
Type: ExternalCommand and ExternalApplication

Subject: A simple sine curve demonstration
Summary: 
Array a series of prism family instances over a sine curve

Classes: 
Autodesk.Revit.UI.IExternalCommand
    Autodesk.Revit.UI.IExternalApplication

Project Files: 
Application.cs
It contains the class Application responsible to set up the user interface of the add in and handle the various user input.
Command.cs
It contains the class Command which inherits from interface IExternalCommand and implements the Execute method. The execute method aggregates the necessary input parameters from the user interface of the add in and calls the method from the FamilyInstance Plotter Class that arrays the family instances on a sine curve according to the input parameters.
FamilyInstancePlotter.cs 
It contains the methods that place instances of objects along a sine curve given the input parameters.

Description: 
This sample provides following functionalities.
-	Lets the user select property values to define a sine curve, namely period, amplitude and number of cycles as well as the number of partitions per sine wave that determines how many instances to be placed on the sine curve.
-	Lets the user select among 4 different types of prisms: cylinder prism, rectangle prism, iso triangle prism and regular polygon prism. The precondition is that these 4 types of prisms are loaded as family symbols in a Revit project file. Use the sample file included in the folder under the name “CurvePlottingSample.rvt”.
-   When the run button is pressed it arrays a series of the selected prism family instance on a sine curved defined by the user input parameters.

Instructions: 
Open Revit application using the “CurvePlottingSample.rvt” sample file.
1.	Type a double value in the period text field between 0.1 and 3.0.
2.	Type a double value in the cycles text field greater than 0.
3.	Type a double value in the amplitude text field between -4.0 and 4.0.
4.	Type a double value in the partitions text field greater than 0.
5.	Select a type of prism from the drop down menu.
6.	Press the run button.

Expected result: A number of instances of the selected prism is arrayed on a sine curve defined by the input user parameters.