Referenceplane是参照平面,Reference Line是参照线。它们是辅助绘图的重要工具, 在族的创建过程中经常使用。
一、参照平面
参照平面可以定位和驱动族模型。在大多数的族模板中,已经默认有三个参照平面,分别为X,Y和Z平面方向,其交点是坐标原点(0, 0, 0)。这三个参照平面默认被固定锁住,并且不能被删除。
一般情况下不要去解锁和移动这三个参照平面,否则可能导致所创建族原点不在(0,0,0)点,无法在项目文档中正确使用。
参照平面也通常与参数标注结合使用,将实体的一面与参照平而对齐并锁住,它就能驱动实体模型了。
创建参照平面可以使用Autodesk.Revit.Creation.ItemFactoryBase实用类下的两个重载方法,如下表。
方法 |
描述 |
public ReferencePlane NewReferencePlane(DB.XYZ bubbleEnd, DB.XYZ freeEnd, DB.XYZ cutVec, View pView); |
使用两点、切向量和视图创建一个新的参考平面的实例。切向量应该垂直于两点向量。 |
public ReferencePlane NewReferencePlane2(DB.XYZ bubbleEnd, DB.XYZ freeEnd, DB.XYZ thirdPnt, View pView); |
使用三点和视图创建一个新的参考平面的实例 |
在族文档中创建了一个名字为“MyReferencePlane”的参照平面:
public void CreatReferencePlane(Autodesk.Revit.DB.Document doc)
{
if (!doc.IsFamilyDocument)
return;
using (Transaction transaction = new Transaction(doc, "Editing Family"))
{
transaction.Start();
XYZ bubbleEnd = new XYZ(0, 5, 5);
XYZ freeEnd = new XYZ(5, 5, 5);
XYZ cutVector = XYZ.BasisY;
View view = doc.ActiveView;
ReferencePlane referencePlane = doc.FamilyCreate.NewReferencePlane(bubbleEnd,freeEnd, cutVector, view);
referencePlane.Name = "MyReferencePlane";
transaction.Commit();
}
}
注意:参照平面的名字不能重复,但是可以重命名。创建好之后,可以得到一些在图形建模中比较常用的数据,如方向(Direction )、法向量(Normal )、平面(piane ),以及其几何引用(Reference)等。
二、参照线
参照线和参考平面的功能基本相同,它主要实现角度参变。参照线的形状既可以是直线,也可以是其他曲线,在API中,可以使用ChangeToReferenceLine方法从模型曲线转变成参照线,代码如下:
public void ChangeModelCurveToReferenceLine(Autodesk.Revit.DB.Document doc, ElementId modelCurveId)
{
ModelCurve modelCurve = doc.GetElement(modelCurveId) as ModelCurve;
using (Transaction transaction = new Transaction(doc, "Change model curve to reference line."))
{
transaction.Start();
modelCurve.ChangeToReferenceLine();
transaction.Commit();
}
}
虽然参照线是由模型曲线转变来 的,但是参照线仍然是模型曲线,它的 元素ID也没有改变。可以从文档中 把模型曲线过滤出来,通过查看它的 IsReferenceLine属性,可以发现参照线的这个属性返回的是True,即为参照线。
=========【更多高级应用请关注公众号】========
![](http://img.e-com-net.com/image/info8/2804034989844876bfe73c018eae5521.jpg)
==================================
参照线和参考平面的功能蕋本相同,它主要实现角度参变。参照线的形状既可以是直 线,也町以是其他曲线,在API中,可以使用ChangeToReferenceLine方法从模型曲线转变 成参照线,见代码片段3-30。
代码片段3 3〇:元素编辑
-一
1
L
—-
public void ChangeModelCurveToReferenceLine()
{
Document doc = this.ActiveUIDocument.Document;
ModelCurve modelCurve = doc.GetElement(new Elementld(2910)) as ModelCurve; using(Transaction transaction = new Transaction(docJ ^Change model curve to reference line/’))
{
transaction*Start(); modelCurve.ChangeToReferenceLine(); transaction.Commit();
上面的示例中,ID为2910的元素是当前族文档中的一根模型弧线,把它变成参照线后 如图3-18所示,图上半部分的线为原 来的模型曲线,下半部分的线为转变 后的参照线。
虽然参照线是由模型曲线转变来 的,但是参照线仍然是模型曲线,它的 元素ID也没有改变。可以从文档中 把模型曲线过滤出来,通过查看它的 IsReferenceLine属性,可以发现参照 线的这个属性返回的是True,即为参
昭线
3)草图平面(Sketchplane)和草 图(Sketch)
草图编辑在Revit®中被广泛用于 创建各种元素,包括绘制和修改模型 的形状。没有用于创建元素的绘制形 状的绘画也属于草图编辑,例如,用鼠 标移动的操作画一根曲线,在已经创
建好的楼板上绘制褶皱来修改楼板的几何形状等。
草图编辑在用户界面上有专门的窗口区域,不同的元素提供不同的绘制草图的工具集,
标准的工具集一•般有两种:
•绘制形状的工具——直线,曲线,圆,多边形,椭圆,样条曲线。 •拾取已有几何图形来创建形状的工具——线,面拾取等。
图3-19为模型线的绘制草图工具集。
草图编辑需要在一个表面上绘制形状,当这个表面为平而 时称之为草图平面(SketchPlane)。草图平面也可以理解成以 下几种情形:
•用户界面的工作平面或者详图元素的视图平面。
•标高或者其他的由草图编辑工具所决定的平面。
•元素约束条件所决定的表面。
•鼠标光标所在区域的一个几何面。
草图平面在API中被用于创建草图相关的元素,如模型
线;或者用于创建拥有草图属性的元素,如构建的实体。草图平面可以从已存在的元素或者
从几何面、平面创建。 注意:
①
创建元素时传入的草图平面未必就是这个元素的实际草图平面,如果传入的草图平 面已经被其他用途使用了,Revit®就会寻找或者创建一个新的在几何上对等的草图平面。
②
一些草图平面只适合于用在创建详图元素上,比如那些从详图曲线获取到的草图平 面,当被用在其他类型的元素上时,将会导致创建失败。
创建草图平面的方法在Autodesk. Revit. DB. SketchPlane类里,三个重载方法如表 3-11所示。
代码片段3_31从文档中找到名字为“Ref. Level”的标高,以此创建了一个新的草图平 面,然后用几何点为(0, 0, 0)到点(10, 10, 〇)的直线创建了一条模型曲线,见图3_20。
代码片段3, 3丨:元素编辑
public void CreateModelCurve()
{
、、乂,.
Document doc = this.ActiveUIDocument.Document;
//在族文档中找到名字为〃Ref • Level"的标高
FilteredElementCollector collector = new FilteredElementCollector(doc); collector = collector • Of Category (BuiltlnCategory • OST一Levels); var levelElements = from element in collector where element. Name = = "Ref • Level" select element;
List< Autodesk.Revit.DB.Element> levels = levelElements•ToList< Autodesk.Revit* DB*Element> (); if(levels•Count < = 0) return;
Level ref Level = levels[0] as Level;
//创违一条几何直线,一个基于标窃的草图平面,然后专这个审图平面上创亨一条模型线. using(Transaction trans = new TransactionCdoc, ^Create model line."))
trans.Start();
Line line = Line.CreateBound(XYZ.Zeroj new XYZ(10> 10j 0));
SketchPlane sketchPlane = SketchPlane.Create(doc> refLevel.Id); ModelCurve modelLine = doc.FamilyCreate.NewModelCurve(line> sketchPlane); trans.Commit();
图3-20在草图平而上创建模型曲线(直线)
代码片段3_32创建一个原点为坐标原点(0, 〇, 〇),法向蛩为(0, 0, 1)的几何平面,然 后用这个几何平面创建了对应的草图平面,再在这个草图平面上创建了一个圆心为(〇, 〇, 〇),半径为5的圆形的模型线。
代码片段3-32:元素编辑
public void CreateSketchPlaneByPlane()
{
Document doc = this.ActiveUIDocument.Document; using(Transaction trans = new Transaction(doc,Create model arc."))
{
trans.Start();
Plane plane = this.Application.Create.NewPlaneCXYZ.BasisZj XYZ.Zero); SketchPlane sketchPlane = SketchPlane.Create(doc^ plane);
Arc arc = Arc.Create(plane, 5, 0, Math.PI * 2);
ModelCurve modelCircle = doc.FamilyCneate.NewModelCurveCarc, sketchPlane); trans.Commit();
代码的效果如图3-21所示。
^一-,一^
从一个几何平面的引用来创建草图平面的方
|
法和上面两个示例类似,需要在文档中找到一个
,
!
\
几何平面,例如,一个几何实体的平面
;
\
(PlanarFace. Reference),然后将该平面的引用传(
I
^
入即可。
/
丨丨
草图(Sketch)是个抽象的概念,由两个最基
I
•
本的属性构成:草图平面(SketchPlane)和轮廓\
\
(Profile)。在UI用户界面上,进人草图编辑的绘 \
|
/
图区域后,草图平面就默认设置好了,用户只需要 \
J
使用草图编辑工具绘制轮廊就可以;API中则需
|
^
要用户创建或者确定草图平面,再提供相应的轮
^
廊。上面的两个示例中的端点为〇),0,()靡10,則一21在草图平面上创建模型曲线(圆) 10, 〇)的直线(line);圆心为(0, 〇, 〇)和半径为5
的圆形(arc)就可以理解为对应的轮廓。
图3-22左边部分是族文档中的一个拉伸体(Extrusion),右边部分是这个拉伸体的轮 廊,为四根首尾相连的直线构成的线组。
API从文档中取到ID为3388的拉伸体及其草图的示例参见代码片段3-33。
代码片段3-33:元素编辑
public void 6etSketchFromExtrusion()
Document doc = this.ActiveUIDocument.Document;
Extrusion extrusion = doc.6etElement(new Elementld(3388)) as Extrusion; SketchPlane sketchPlane = extrusion .Sketch.SketchPlane;
CurveArrArray sketchProfile = extrusion.Sketch.Profile;
Revit®中的三维模型,如拉伸(Extrusion)、融合(Blend )、旋转(Revolution )、放样 (Sweep)、放样融合(Sw印tBlend),都使用到了草图。不但在创逮好的模型中可以获取到它 的草图(Sketch属性),而且在创建过程中(比如NewExtunsion等方法)也耑要使用到草图 平面和轮廊。关于三维模型的创建和使用方法(详细介绍参见第7章)。