组合Group
- 创建Group
document.Create NewGroup(ICollection); - 解组Group对象的方法
ICollection UngroupMembers();
注意:
- 成组前的id和解组后的id是不一样的
- 当元素在一个组合里面的时候,它们不能单独被移动或者旋转。
创建组
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using pro.util;
using System.Collections.Generic;
using System.Linq;
namespace pro
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
UIDocument uIDocument = uiApp.ActiveUIDocument;
Document document = uIDocument.Document;
//选取元素
IList<Reference> references = uIDocument.Selection.PickObjects(Autodesk.Revit.UI.Selection.ObjectType.Element);
//转换
List<ElementId> ids = new List<ElementId>();
foreach (Reference reference in references)
{
ids.Add(reference.ElementId);
}
//创建组
using (Transaction transaction = new Transaction(document, "group"))
{
transaction.Start();
Group group = document.Create.NewGroup(ids);
transaction.Commit();
}
return Result.Succeeded;
}
}
}
解组
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using pro.util;
using System.Collections.Generic;
using System.Linq;
namespace pro
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
UIDocument uIDocument = uiApp.ActiveUIDocument;
Document document = uIDocument.Document;
//创建组
using (Transaction transaction = new Transaction(document, "group"))
{
transaction.Start();
Group group = document.GetElement(new ElementId(338415)) as Group;
List<ElementId> ids2 = group.UngroupMembers().ToList();
transaction.Commit();
}
return Result.Succeeded;
}
}
}
重用组
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace pro
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
UIDocument uIDocument = uiApp.ActiveUIDocument;
Document document = uIDocument.Document;
//创建组
using (Transaction transaction = new Transaction(document, "group"))
{
transaction.Start();
GroupType groupType = document.GetElement(new ElementId(338416)) as GroupType;
XYZ point = uIDocument.Selection.PickPoint();
document.Create.PlaceGroup(point, groupType);
transaction.Commit();
}
return Result.Succeeded;
}
}
}
点击一个位置,放置这个组
也可以使用过滤器
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Collections.Generic;
using System.Linq;
namespace pro
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
UIDocument uIDocument = uiApp.ActiveUIDocument;
Document document = uIDocument.Document;
using (Transaction transaction = new Transaction(document, "group"))
{
transaction.Start();
//使用过滤器
FilteredElementCollector elements1 = new FilteredElementCollector(document);
List<GroupType> groupTypes = elements1.OfClass(typeof(GroupType)).Cast<GroupType>().ToList();
//第一种方法
//GroupType group Type= groupTypes.Where(x=>x.Name.Equals("组 2")).FirstOrDefault();
//第二种方法
GroupType groupType = null;
foreach (GroupType groupType2 in groupTypes)
{
if (groupType2.Name.Equals("组 2"))
{
groupType = groupType2;
break;
}
}
XYZ point = uIDocument.Selection.PickPoint();
document.Create.PlaceGroup(point, groupType);
transaction.Commit();
}
return Result.Succeeded;
}
}
}
修改组名只需要在上面代码加上
把组 2 改成 组 10
//修改组名
groupType.Name = "组 10";