static Blend CreateBlend( Document doc )
{
Debug.Assert( doc.IsFamilyDocument,
"this method will only work in a family document" );
Application app = doc.Application;
Autodesk.Revit.Creation.Application creApp
= app.Create;
Autodesk.Revit.Creation.FamilyItemFactory factory
= doc.FamilyCreate;
double startAngle = 0;
double midAngle = Math.PI;
double endAngle = 2 * Math.PI;
XYZ xAxis = XYZ.BasisX;
XYZ yAxis = XYZ.BasisY;
XYZ center = XYZ.Zero;
XYZ normal = -XYZ.BasisZ;
double radius = 0.7579;
//Arc arc1 = creApp.NewArc( center, radius, startAngle, midAngle, xAxis, yAxis ); // 2013
//Arc arc2 = creApp.NewArc( center, radius, midAngle, endAngle, xAxis, yAxis ); // 2013
Arc arc1 = Arc.Create( center, radius, startAngle, midAngle, xAxis, yAxis ); // 2014
Arc arc2 = Arc.Create( center, radius, midAngle, endAngle, xAxis, yAxis ); // 2014
CurveArray baseProfile = new CurveArray();
baseProfile.Append( arc1 );
baseProfile.Append( arc2 );
// create top profile:
CurveArray topProfile = new CurveArray();
bool circular_top = false;
if( circular_top )
{
// create a circular top profile:
XYZ center2 = new XYZ( 0, 0, 1.27 );
//Arc arc3 = creApp.NewArc( center2, radius, startAngle, midAngle, xAxis, yAxis ); // 2013
//Arc arc4 = creApp.NewArc( center2, radius, midAngle, endAngle, xAxis, yAxis ); // 2013
Arc arc3 = Arc.Create( center2, radius, startAngle, midAngle, xAxis, yAxis ); // 2014
Arc arc4 = Arc.Create( center2, radius, midAngle, endAngle, xAxis, yAxis ); // 2014
topProfile.Append( arc3 );
topProfile.Append( arc4 );
}
else
{
// create a skewed rectangle top profile:
XYZ[] pts = new XYZ[] {
new XYZ(0,0,3),
new XYZ(2,0,3),
new XYZ(3,2,3),
new XYZ(0,4,3)
};
for( int i = 0; i < 4; ++i )
{
//topProfile.Append( creApp.NewLineBound( // 2013
topProfile.Append( Line.CreateBound( // 2014
pts[0 == i ? 3 : i - 1], pts[i] ) );
}
}
//Plane basePlane = creApp.NewPlane( normal, center ); // 2016
Plane basePlane = Plane.CreateByNormalAndOrigin( normal, center ); // 2017
//SketchPlane sketch = factory.NewSketchPlane( basePlane ); // 2013
SketchPlane sketch = SketchPlane.Create( doc, basePlane ); // 2014
Blend blend = factory.NewBlend( true,
topProfile, baseProfile, sketch );
return blend;
}