zoukankan      html  css  js  c++  java
  • Revit API批量布置函数doc.Create.NewFamilyInstances();

    start
    using ACreat = Autodesk.Revit.Creation;
    //批量布置doc.Create.NewFamilyInstances();
    [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 sel = uiDoc.Selection;

            Transaction ts = new Transaction(doc, "http://revit.5d6d.com");
            try
            {
                ts.Start();
                //找一个管件
                FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
                IList<Element> collection = collector.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_DuctFitting).ToElements();
                FamilySymbol familySymbol = collection[0as FamilySymbol;
                //区域布置
                PickedBox pb = sel.PickBox(PickBoxStyle.Directional, "请选择区域");
                List<XYZ> listXYZ = new List<XYZ>();//判断一些布置点
                double dDistance = 3;//间距
                XYZ xyzStart = pb.Min;//Max右下点Min左上点,暂时这样理解。
                bool bWhile = true;
                while (bWhile)
                {
                    xyzStart += new XYZ(dDistance, -dDistance, 0);
                    if (xyzStart.X > pb.Max.X || xyzStart.Y < pb.Max.Y)
                        bWhile = false;
                    else
                        listXYZ.Add(xyzStart);
                }
                //批量布置
                List<ACreat.FamilyInstanceCreationData> fiCreationDatas = new List<ACreat.FamilyInstanceCreationData>();
                foreach (XYZ item in listXYZ)
                {
                    ACreat.FamilyInstanceCreationData fiCreationData =
                        new ACreat.FamilyInstanceCreationData(item, familySymbol, familySymbol.Level, StructuralType.NonStructural);
                    if (null != fiCreationData)
                    {
                        fiCreationDatas.Add(fiCreationData);
                    }
                }
                doc.Create.NewFamilyInstances(fiCreationDatas);

                ts.Commit();
            }
            catch (Exception ex)
            {
                ts.RollBack();
            }

            return Result.Succeeded;
        }
    }
    url:http://greatverve.cnblogs.com/p/revit-api-NewFamilyInstances.html
  • 相关阅读:
    对TCP/IP协议的理解
    自己想到的几道Java面试题
    Java双重循环实现任意字符串中提取数字子串
    Spring data jpa 依赖配置
    spring data jpa sql
    spring boot 依赖配置
    Freemarker模板和依赖
    spring Data solr依赖文件 和xml配置文件
    根据mysql数据库 定义solr Schema.xml中配置业务域
    自定义solr域中的配置
  • 原文地址:https://www.cnblogs.com/greatverve/p/revit-api-NewFamilyInstances.html
Copyright © 2011-2022 走看看