RevitAPI 之參照平面(Referenceplane)和參照線(Reference Line)

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,即爲參照線。


=========【更多高級應用請關注公衆號】========


==================================
































































































































































 
參照線和參考平面的功能蕋本相同,它主要實現角度參變。參照線的形狀既可以是直 線,也町以是其他曲線,在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章)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章