版权声明:本文为博主转载文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、Revit拉伸介绍
拉伸是最容易创建的形状。可以在工作平而上绘制形状的二维轮廓,然后拉伸该轮廓使其与绘制它的平面垂直。根据描述,拉伸操作需要三个输入:
①工作平面;
②工作平面上的二维轮廊(必须闭合);
③拉伸的长度。
在界面上,如要拉伸墙到弧形屋顶,操作的大体步骤如下图。
①:选择工作平面
②:选择一个绘制屋顶的视图
③:切换至北立面,确定绘制标高为“标高2”,无偏移。
④:用“起点-终点-半径弧”工具创建拉伸屋顶的轮廓,最后“完成编辑模式”。
二、使用Revit API创建拉伸体
在Revit API需要这三个输人来创建拉伸图元。创建拉伸图元的函数如下:
Autodesk.Revit.Creation.FamilyltemFactory 类:Extrusion NewExtrusion( bool isSolid,CurveArrArray profile,SketchPlanesketchPlane,double end)。
参数说明:
• isSolid:说明该拉伸是实体还是剪切体
• profile: —个平面上的二维轮廓(必须闭合)
• sketchPlane:工作平面
• end:拉伸长度
注意:
① 拉伸的方向由工作平面的法向量确定。
② API中,并不要求二维轮廊一定要在sketchPlane工作平面上(大多数情况下,二维轮廓是在工作平面上的),它们之间必须满足的是二维轮廓所在在平面和工作平面一定要平行。
代码:创建拉伸体。
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);
}
拉伸属性 ① IsSolid属性:该拉伸是实体还是剪切体。
② Sketch属性:拉伸的草图,包括拉伸的二维轮廓线和工作平面。
③ StartOffset和EndOffset:拉伸相对于工作平面的起始和终止偏移。草图(Sketch 类)
在Revit中,有一些图元是使用草图模式创建的,例如,工程文件中的楼板、天花板和族文件中的拉伸等。而草图模式是指Revit中的一种环境,使用该环境可绘制其尺寸或形状不能自动确定的图元。Sketch类就是用来访问它创建的草图,包括草图模式中绘制形状和工作平面。
Sketch类属性(只读):
① Profile:用来获取草图中的轮廊线。
② SketchPlane••用来获取草图中的工作平面。