转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/7846738
作者: 叶雄进 , Autodesk ADN
2012新增了样式创建功能,包括创建线型样式以及填充样式。这里重点说说线型样式的创建。
线型在Revit里有LinePatternElement类来表示。
private LinePatternElement CreateLinePatternElement(string patternName)
{
//Create list of segments which define the line pattern
List<LinePatternSegment> lstSegments = new List<LinePatternSegment>();
lstSegments.Add(new LinePatternSegment(LinePatternSegmentType.Dot, 0.0));
lstSegments.Add(new LinePatternSegment(LinePatternSegmentType.Space, 0.02));
lstSegments.Add(new LinePatternSegment(LinePatternSegmentType.Dash, 0.03));
lstSegments.Add(new LinePatternSegment(LinePatternSegmentType.Space, 0.02));
LinePattern linePattern = new LinePattern(patternName);
linePattern.SetSegments(lstSegments);
Transaction trans = new Transaction(doc);
trans.Start("Create a linepattern element");
LinePatternElement linePatternElement = LinePatternElement.Create(doc, linePattern);
trans.Commit();
return linePatternElement;
}
创建线型之后,可以把这个线型赋值给线样式。这里把一个线样式列表中的对象都进行修改线型。
LinePatternElement myLinePatternElement = CreateLinePatternElement("MyLinePattern");
foreach (ElementId typeId in lstGridTypeIds)
{
Element gridType = doc.GetElement(typeId);
//set the parameter value of End Segment Pattern
SetParameter("End Segment Pattern", myLinePatternElement.Id, gridType);
}
给线样式对象赋值,把线型对象的ElementId赋值给线样式对象。
private void SetParameter(string paramName, ElementId eid, Element elem)
{
foreach (Parameter param in elem.Parameters)
{
if (param.Definition.Name == paramName)
{
Transaction trans = new Transaction(doc);
trans.Start("Set parameter value");
param.Set(eid);
trans.Commit();
break;
}
}
}