使用revit api画垂直于风管的风管示例


复制代码 代码如下:

/// <summary>
/// 选择风管与风管外一点,画与风管垂直的风管。
/// </summary>
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmd : IExternalCommand
{
    public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
        UIApplication uiApp = cmdData.Application;
        Document doc = uiDoc.Document;
        Selection selection = uiDoc.Selection;

        Transaction ts = new Transaction(doc, "http://www.phpstudy.net");
        ts.Start();
        //得到一种风管类型
        DuctType ductType = null;
        FilteredElementCollector collector = new FilteredElementCollector(doc);
        collector.OfClass(typeof(DuctType));
        foreach (Element el in collector.ToElements())
        {
            ductType = el as DuctType;
            break;
        }
        //
        Reference refDuct = selection.PickObject(ObjectType.Element, "选择一根风管:");
        Duct duct = doc.GetElement(refDuct) as Duct;
        XYZ xyz = selection.PickPoint();//选择一点
        LocationCurve lCurve = duct.Location as LocationCurve;
        IntersectionResult interResult = lCurve.Curve.Project(xyz);//点在直线上的投影
        if (interResult != null)
        {
            doc.Create.NewDuct(xyz, interResult.XYZPoint, ductType);
        }
        ts.Commit();
        return Result.Succeeded;
    }
}


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3