[Revit二次开发] 批量生成类型

简析:

  通过现有的柱类型,复制此类型,生成不同尺寸的柱。

项目完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.Revit.Attributes;
using Autodesk.Revit.Creation;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Selection = Autodesk.Revit.UI.Selection.Selection;

namespace RevitCmd21
{
    [Transaction(TransactionMode.Manual)]
    [Journaling(JournalingMode.UsingCommandData)]
    [Regeneration(RegenerationOption.Manual)]

    public class CreateAGroupOfType : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIApplication uiapp = commandData.Application;
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Autodesk.Revit.DB.Document doc = uidoc.Document;
            Selection sel = uidoc.Selection;

            View acview = uidoc.ActiveView;


            TaskDialog.Show("tip", "hello");

            FilteredElementCollector collector = new FilteredElementCollector(doc);

            var symbols = collector.OfClass(typeof(FamilySymbol)).Where(m => m.Name.Contains("475 x 610mm"));

            var targetsymbol = symbols.First() as FamilySymbol;

            //var newsymbolName = "500 x 600mm";

            Transaction ts = new Transaction(doc, "fuzhileixing");
            ts.Start();

            for(int i = 100;i < 1000; i += 100)
            {
                var newsymbolName = $"HW{i} x {i}";
                if (!symbols.Select(m => m.Name).Contains(newsymbolName))
                {
                    var newtype = targetsymbol.Duplicate(newsymbolName);

                    newtype.LookupParameter("深度").Set(i / 304.8);
                    newtype.LookupParameter("偏移基准").Set(0 / 304.8);
                    newtype.LookupParameter("偏移顶部").Set(0 / 304.8);
                    newtype.LookupParameter("宽度").Set(i/ 304.8);

                    TaskDialog.Show("tip", "创建完成!");
                }
                else
                {
                    TaskDialog.Show("tip", "已经包含,不创建!");
                }
            }



            ts.Commit();

            return Result.Succeeded;
        }
    }
}

效果:

参考文献:

  https://ke.qq.com/course/334916 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值