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
  • 相关阅读:
    Nginx编译安装Lua模块
    Openresty =>nginx+lua
    windows下配置lua开发环境
    IntelljIdea安装nginx插件及单页面应用路由的nginx配置
    解决 start.spring.io 不能访问 使用阿里云国服链接替代
    Lua入门教程
    数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析
    前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
    Java死锁排查和Java CPU 100% 排查的步骤整理
    Windows平台安装配置Hadoop
  • 原文地址:https://www.cnblogs.com/greatverve/p/revit-api-NewFamilyInstances.html
Copyright © 2011-2022 走看看