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

转载于:https://www.cnblogs.com/greatverve/p/revit-api-NewFamilyInstances.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值