一、Revit拉伸介绍
拉伸是最容易创建的形状。可以在工作平而上绘制形状的二维轮廓,然后拉伸该轮廓使其与绘制它的平面垂直。根据描述,拉伸操作需要三个输入:
①工作平面;
②工作平面上的二维轮廊(必须闭合);
③拉伸的长度。
在界面上,如要拉伸墙到弧形屋顶,操作的大体步骤如下图。
①:选择工作平面
②:选择一个绘制屋顶的视图
③:切换至北立面,确定绘制标高为“标高2”,无偏移。
④:用“起点-终点-半径弧”工具创建拉伸屋顶的轮廓,最后“完成编辑模式”。
private Autodesk.Revit.ApplicationServices.Application m_revit;
private Document m_familyDocument; // 已获得族文档的实例
// 创建工作平面的函数,输入为平面的原点和法向量
internal SketchPlane CreateSketchPlane(Autodesk.Revit.DB.XYZ normal, Autodesk.Revit.DB.XYZ origin)
{
// 首先创建几何平面
Plane geometryPlane = m_revit.Create.NewPlane(normal, origin);
if (null == geometryPlane)
{
return null;
}
// 根绝几何平面创建工作平面
SketchPlane plane = SketchPlane.Create(m_familyDocument, geometryPlane);
if (null == plane)
{
return null;
}
return plane;
}
// 创建用于拉伸的轮廓线
private CurveArrArray CreateExtrusionProfile()
{
// 轮廓线可以包括一个或者多个闭合的轮廓,所以最后返回是CurveArrArray
CurveArrArray curveArrArray = new CurveArrArray();
CurveArray curveArray1 = new CurveArray();
// 创建一个正方体的轮廓线,先创建点,再创建线,最后组合成轮廓。
Autodesk.Revit.DB.XYZ p0 = Autodesk.Revit.DB.XYZ.Zero;
Autodesk.Revit.DB.XYZ p1 = new Autodesk.Revit.DB.XYZ(10, 0, 0);
Autodesk.Revit.DB.XYZ p2 = new Autodesk.Revit.DB.XYZ(10, 10, 0);
Autodesk.Revit.DB.XYZ p3 = new Autodesk.Revit.DB.XYZ(0, 10, 0);
Line line1 = Line.CreateBound(p0, p1);
Line line2 = Line.CreateBound(p1, p2);
Line line3 = Line.CreateBound(p2, p3);
Line line4 = Line.CreateBound(p3, p0);
curveArray1.Append(line1);
curveArray1.Append(line2);
curveArray1.Append(line3);
curveArray1.Append(line4);
curveArrArray.Append(curveArray1);
return curveArrArray;
}
private void CreateExtrusion(Autodesk.Revit.Creation.FamilyItemFactory familyCreator)
{
// 调用函数创建拉伸的轮廓线和工作平面
CurveArrArray curveArrArray = CreateExtrusionProfile();
SketchPlane sketchPlane = CreateSketchPlane(XYZ.BasisZ, XYZ.Zero);
// 调用API创建拉伸(实心正方体)
Extrusion rectExtrusion = familyCreator.NewExtrusion(true, curveArrArray, sketchPlane, 10);
// 可能我们会希望把拉伸体移动到希望的位置上
XYZ transPoint1 = new XYZ(-16, 0, 0);
ElementTransformUtils.MoveElement(m_familyDocument, rectExtrusion.Id, transPoint1);
}
② SketchPlane••用来获取草图中的工作平面。
=========【更多高级应用请关注公众号】========
==================================