1.获取选中cad图层的名称
/// <summary>
/// 获取选中图层的名称
/// </summary>
/// <param name="doc"></param>
/// <param name="reference"></param>
/// <returns></returns>
public string GetLayerName(Document doc,Reference reference)
{
string name = null;
Element element = doc.GetElement(reference);
GeometryElement geoElem = element.get_Geometry(new Options());//几何图元
GeometryObject geoObj = element.GetGeometryObjectFromReference(reference);//几何对象
Category targetCategory = null;
ElementId graphicsStyleId = null;
if (geoObj.GraphicsStyleId != ElementId.InvalidElementId)
{
graphicsStyleId = geoObj.GraphicsStyleId;
GraphicsStyle gs = doc.GetElement(geoObj.GraphicsStyleId) as GraphicsStyle;//获得所选对象图形样式
if (gs != null)
{
targetCategory = gs.GraphicsStyleCategory;//图层
name = gs.GraphicsStyleCategory.Name;//图层名字
}
}
return name;
}
2.隐藏或者显示图层
/// <summary>
/// 隐藏或者显示图层
/// </summary>
/// <param name="doc"></param>
/// <param name="reference"></param>
/// <param name="bl">tr是显示 false是隐藏</param>
public void VisLayer(Document doc, Reference reference,bool bl)
{
Element element = doc.GetElement(reference);
GeometryElement geoElem = element.get_Geometry(new Options());//几何图元
GeometryObject geoObj = element.GetGeometryObjectFromReference(reference);//几何对象
Category targetCategory = null;
ElementId graphicsStyleId = null;
if (geoObj.GraphicsStyleId != ElementId.InvalidElementId)
{
graphicsStyleId = geoObj.GraphicsStyleId;
GraphicsStyle gs = doc.GetElement(geoObj.GraphicsStyleId) as GraphicsStyle;//获得所选对象图形样式
if (gs != null)
{
targetCategory = gs.GraphicsStyleCategory;//图层
#if RVT2016
doc.ActiveView.SetVisibility(targetCategory, bl);
#elif RVT2018
doc.ActiveView.SetCategoryHidden(targetCategory.Id, bl);
#endif
}
}
}