獲取洞口邊界及在牆上開洞(Revit二次開發)
一、洞口類圖
二、獲取洞口邊界
如果是長方形邊界,使用BoundaryRect屬性,其他形狀邊界使用BoundaryCurves屬性。
方法示例:
private void GetBoundary(Opening opening)
{
if (opening.IsRectBoundary)
{
XYZ startPoint = opening.BoundaryRect[0];
XYZ endPoint = opening.BoundaryRect[1];
}
else {
foreach (Curve curve in opening.BoundaryCurves)
{
//遍歷Curve
}
}
}
三、其他屬性
- Host屬性可以獲得洞口的宿主元素。
- IsTransparentIn3D屬性返回是否在三維檢視透明,只能在族文件裡使用。
- IsTransparentlnElevation屬性返回是否在裡面檢視透明,只能在族文件裡使用。
四、建立洞口
API方法: NewOpening( Wall wall,XYZ pntStart, XYZ pntEnd),可以在牆上建立洞口,引數意義如下:
• wall:牆物件。
• pntStart:長方形的一個頂點。
• pntEnd:長方形的另一個對角的頂點。
在牆上開洞方法示例:
private void CreateOpening(Document RevitDoc, Wall wall)
{
LocationCurve locationCurve = wall.Location as LocationCurve;
Line location = locationCurve.Curve as Line;
XYZ startPoint = location.GetEndPoint(0);
XYZ endPoint = location.GetEndPoint(1);
Parameter wallHeightParameter = wall.get_Parameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM);
double wallHeight = wallHeightParameter.AsDouble();
XYZ delta = (endPoint - startPoint + new XYZ(0, 0, wallHeight)) / 3;
using (Transaction transaction = new Transaction(RevitDoc, "在牆上開洞"))
{
transaction.Start();
Opening opening = RevitDoc.Create.NewOpening(wall, startPoint + delta, startPoint + delta * 2);
transaction.Commit();
}
}
主程式呼叫:
Reference pickedRef = null;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;
UIApplication uiApp = commandData.Application;
Selection sel = uiApp.ActiveUIDocument.Selection;
pickedRef = sel.PickObject(ObjectType.Element, "選擇一個族例項");
Element elem1 = doc.GetElement(pickedRef);
Wall wall1 = elem1 as Wall;
try
{
CreateOpening(doc, wall1);
}
catch
{
}
return Result.Succeeded;
}
建立結果:
相關文章
- NX二次開發-建模-獲取面的相切曲面
- Revit二次開發-曲線三連:對curves進行排序排序
- Revit二次開發環境配置(Revit 2020 +Visual Studio 2019)開發環境
- 在防火牆上開發Oracle埠的問題防火牆Oracle
- Revit二次開發之“讓物件處於被選擇狀態”物件
- Revit獲取元素的巢狀族巢狀
- Voyager 的使用及二次開發
- Revit二次開發知識分享(八)控制顯示隱藏的圖元按鈕
- ecshop 二次開發及模板標籤
- linux在防火牆上開啟1521埠Linux防火牆
- ZStack原始碼剖析之二次開發——在Utility上堆程式碼原始碼
- 【AutoCAD .NET】如何在無邊界Hatch上選擇邊界點?
- 微信獲取二維碼開發
- 網管,你的防火牆上也有“洞”嗎(轉)防火牆
- Revit獲取元素Solid和計算包圍盒Solid
- 【iOS開發】獲取區域網IPiOS
- 網站修改二次開發,網站二次開發流程網站
- CentOS開啟防火牆及開放指定埠CentOS防火牆
- Dresdon二次開發
- ThinkS二次開發
- 人工智慧開發的道德邊界在哪裡? | CNCC 2019人工智慧
- AndroidStudio外掛GsonFormat解析及二次開發AndroidORM
- 微信開發示例(access_token的獲取)
- iOS開發 獲取圖片中的顏色iOS
- 綠盟NF防火牆,打造新一代邊界防護方案防火牆
- 在MDX中處理邊界情況
- SOLIDWORKS二次開發Solid
- ebs二次開發1
- ebs二次開發2
- ebs二次開發3
- ebs二次開發4
- ebs二次開發5
- ebs二次開發6
- ebs二次開發7
- 《超越邊界》
- NX二次開發-使用NXOPEN C++嚮導模板做二次開發C++
- 讓程式設計師跨界做設計,腦洞開的萬萬想不到程式設計師
- C#二次開發BIMFACE系列61 File Management檔案管理服務介面二次開發及實戰詳解C#