Revit二开之修改线条样式
一、背景
本人在网上查询通过C#修改线条样式时,发现大家在C#中通过RGB三原色的方法来创建样式的,并没有通过直接检索Revit已有样式来对线条赋予样式的方法。这里将自己研究的方法总结下来,供大家参考。
二、思路
- 如何检索Revit中已有的线条样式
- 如何将自己需要的样式赋予线条
- 关键词:GraphicsStyle,LineStyle
三、修改线条样式实例
这里通过在revit中绘制一条模型线,然后将其样式设置为我们自己定义的红色。
我们可以发现已有的线样式在revit的其他设置里面
图1
点开发现有很多样式,这里,我们自己定义了红色样式
图2
接着上代码:
[Transaction(TransactionMode.Manual)]
public class ChangeLineStyle : IExternalCommand
{
Result IExternalCommand.Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;//得到当前文档
Category lineCat = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines);//获得设置里面的线(如图1)
CategoryNameMap subcats = lineCat.SubCategories; //得到这个线下面所有的线样式(如图2右)
Category setstyle = null;
foreach (Category lineStyle in subcats)
{
if (lineStyle.Name == "红色") setstyle = lineStyle;////通过样式名称,查找我们自己设定的样式
}
ModelLine modelLine = doc.GetElement(new ElementId(1203613)) as ModelLine; //这个是我们自己绘制的模型线的ID
Transaction trans = new Transaction(doc, "修改线条颜色");
trans.Start();
modelLine.LineStyle = setstyle.GetGraphicsStyle(GraphicsStyleType.Projection);//修改这条模型线的样式
trans.Commit();
return Result.Succeeded; //结果如图二左
}
}
四、注意事项
- 自己通过代码设置样式并不直观,不如在Revit中直接设置好,然后使用;
- 此方法不仅适用于模型线修改,还适用于具有LineStyle属性的其它线修改。