using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using System;
namespace ChangChunTest
{
[TransactionAttribute(TransactionMode.Manual)]
class Class9 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
double h = 6000 / 304.8;//长度
double radius = 1000 / 304.8;
Extrusion extrusion = null;
bool IsSolid = false;
using (Transaction trans = new Transaction(doc, "Cylinder"))
{
trans.Start();
// 定义轮廓集合
CurveArrArray curveArrArray = new CurveArrArray();
CurveArray curveArray1 = new CurveArray();
// 创建平面轮廓
XYZ p0 = new XYZ(0, 0, 0);
XYZ p1 = new XYZ(1, 0, 0);
XYZ p3 = new XYZ(0, 1, 0);
double startAngle = 0;
double endAngle =2* Math.PI;
Arc arc = Arc.Create(p0, radius, startAngle, endAngle, p1, p3);
curveArray1.Append(arc);
curveArrArray.Append(curveArray1);
//定义草图平面
Plane plane = Plane.CreateByNormalAndOrigin(new XYZ(0, 0, 1), XYZ.Zero);
SketchPlane sketchPlane = SketchPlane.Create(doc, plane);
// 创建圆柱体拉伸
extrusion = doc.FamilyCreate.NewExtrusion(IsSolid, curveArrArray, sketchPlane, h);
trans.Commit();
}
using (Transaction trans2 = new Transaction(doc, "Cylinder-DIM"))
{
trans2.Start();
Reference refe = null;
FamilyManager m_familyMgr = doc.FamilyManager;
bool isInstance = false;
// FamilyParameter paramTw = m_familyMgr.AddParameter("半径R测试", BuiltInParameterGroup.PG_GEOMETRY, ParameterType.Length, isInstance);
foreach (CurveArray item in extrusion .Sketch.Profile)
{
foreach (var curve in item)
{
if (curve is Arc)
{
Arc arc = curve as Arc;
refe = arc.Reference;
break;
}
}
}
Dimension dimensionRadus = doc.FamilyCreate.NewRadialDimension(doc.ActiveView, refe, new XYZ(1, 0, 0));
// dimensionRadus.FamilyLabel = paramTw;
dimensionRadus.FamilyLabel = m_familyMgr.get_Parameter("半径R测试");
trans2.Commit();
}
return Result.Succeeded;
}
}
}

