阅读笔记 | Autodesk Revit二次开发基础教程 |

2020-01-22  本文已影响0人  GuYJ

元素

一、Element类的解析

1.1 继承关系

所有的族、族类型、族实例都是继承Element

1.2 属性

1.3 方法

Document document = commandData.Application.ActiveUIDocument.Document;
Element element = document.GetElement(new ElementId(183554));

AnalyticalModel analyticalModel = element.GetAnalyticalModel();
if (analyticalModel.IsSingleCurve())
{
    Curve curve = analyticalModel.GetCurve();
}
else if (analyticalModel.IsSinglePoint())
{
    XYZ p = analyticalModel.GetPoint();
}
else
{
    IList<Curve> curves = analyticalModel.GetCurves(AnalyticalCurveType.ActiveCurves);
}

return Result.Succeeded;

二、获取元素

2.1 通过ID获取元素

UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
Element element = doc.GetElement(new ElementId(30));
Level level = element as Level;

通过Document类的GetElement方法获取ElementId对象得到元素的实例,再通过as关键字转型为所需元素类型,该方法缺点是,用户必须知道元素ID及类型才行

2.2 通过过滤器获取元素

2.2.1 过滤器步骤
  1. 创建收集器
  2. 创建过滤器
  3. 调用收集器的WherePasses函数对元素进行过滤,可连续调用
  4. 遍历收集器,获取想要的元素
2.2.2 收集器

FilteredElementCollector类

2.2.3 元素过滤器

元素过滤器层次:

2.3 通过选择获取元素

UIDocument uiDoc = commandData.Application.ActiveUIDocument;
ICollection<ElementId> collection = uiDoc.Selection.GetElementIds();
foreach (ElementId id in collection)
{
    TaskDialog.Show("Infomation", id.IntegerValue.ToString());
}

通过UIDocument中Selection.GetElementIds方法获取选中元素的id集合,并且可以通过ElementId下的IntegerValue属性获取id编号

三、编辑元素参数

3.1 参数分类

3.2 参数编辑

四、编辑元素

4.1 移动

移动的三种方法

4.2 旋转

旋转的两种方法

4.3 镜像

通过ElementTransformUtils类下的MirrorElement()/MirrorElements()方法

4.4 删除

方法

UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;

//删除一面墙
Wall wall = doc.GetElement(new ElementId(184163)) as Wall;
using (Transaction tran = new Transaction(doc, "Delete the Wall"))
{
    tran.Start();
    ICollection<ElementId> deletedElements = doc.Delete(wall.Id); 
    tran.Commit();
}

//删除多面墙
List<ElementId> elementsToDelete = new List<ElementId>();
using (Transaction tran = new Transaction(doc, "Delete the Wall"))
{
    tran.Start();
    foreach (var elementId in uiDoc.Selection.GetElementIds())
    {
        elementsToDelete.Add(elementId);
    }
    ICollection<ElementId> deletedElements = doc.Delete(elementsToDelete);
    tran.Commit();
}

return Result.Succeeded;

4.5 组合

通过doc.Create.NewGroup()方法生成一个组合,方法返回Group类型
通过Group对象的GroupType.Name属性修改组合的名称

UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;

//组合
List<ElementId> elementsToGroup = new List<ElementId>();
using (Transaction tran = new Transaction(doc, "Group"))
{
    tran.Start();
    foreach (var elementId in uiDoc.Selection.GetElementIds())
    {
        elementsToGroup.Add(elementId);
    }
    Group group = doc.Create.NewGroup(elementsToGroup);
    group.GroupType.Name = "MyGroup";
    tran.Commit();
}

return Result.Succeeded;

4.6 阵列

上一篇 下一篇

猜你喜欢

热点阅读