当导入或者链接CAD文件之后,一般我们在Revit里面选中该CAD,点击"导入实例”的“查询”,选中某个图元,就会弹出图层信息
那么API如何实现此功能呢?
本人刚开始并没有找到如何做到,后来偶然机会发现Line/GeometryObject类有个属性叫GraphicsStyleId,试了一下,答案就出来了。
那就是,
- 使用Selection.PickObject或Selection.PickObjects来选择链接文件里的对象获取到Reference
- 然后使用Element.GetGeometryObjectFromReference(Reference)获取几何信息,该几何信息是GeometryObject类,于是通过GraphicsStyleId就可以获取到GraphicsStyle,
- 最后通过GraphicsStyleId的GraphicsStyleCategory属性获得类别Category,Category.Name即是图层的名称
可以看看完整的代码:
var doc = commandData.Application.ActiveUIDocument.Document;
var uiSel = commandData.Application.ActiveUIDocument.Selection;
try
{
var reference = uiSel.PickObject(ObjectType.PointOnElement, "statusPrompt");
var element = doc.GetElement(reference);
var geoObj = element.GetGeometryObjectFromReference(reference);
if (geoObj.GraphicsStyleId != ElementId.InvalidElementId)
{
GraphicsStyle gs = doc.GetElement(geoObj.GraphicsStyleId) as GraphicsStyle;
if (gs != null)
{
var name = gs.GraphicsStyleCategory.Name;
}
}
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
}