BIM 软件小技巧: Revit如何提取轴线信息 在Revit里面如何提取当前视图中轴网的信息,例如名称,标高,坐标等等?这个问题在Revit编程时是非常典型的应用情况。找到目标对象,然后获取目标对象上的信息。找到目标对象需要使用Revit的过滤机制,最核心的也是比用的类就是FilteredElementCollector类,他提供了添加过滤条件的方法,并且提供方法来获取满足条件的对象集合。
BIM 软件小技巧: Revit如何提取轴线信息
在Revit里面如何提取当前视图中轴网的信息,例如名称,标高,坐标等等?
这个问题在Revit编程时是非常典型的应用情况。找到目标对象,然后获取目标对象上的信息。
找到目标对象需要使用Revit的过滤机制,最核心的也是比用的类就是FilteredElementCollector类,他提供了添加过滤条件的方法,并且提供方法来获取满足条件的对象集合。
获取对象信息需要用Revit类的属性以及Revit对象的参数值,还有从Element.Location属性获取对象的位置信息。
下面是实例代码如何获取上述信息。
[Transaction(TransactionMode.Manual)]
public class GetAllGrids : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
Application app = uiApp.Application;
UIDocument uiDoc = uiApp.ActiveUIDocument;
Document doc = uiDoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc,doc.ActiveView.Id);
collector.OfClass(typeof(Grid));
string sInfo = null;
foreach (Element elem in collector)
{
sInfo += "Name = " + elem.Name + ";";
Grid grid = elem as Grid;
LocationCurve locCurve = grid.Location as LocationCurve;
Curve cur = locCurve.Curve;
XYZ ptStart = cur.get_EndPoint(0);
XYZ ptEnd = cur.get_EndPoint(0);
}
TaskDialog.Show("Grid message", sInfo);
return Result.Succeeded;
}
}