獲取洞口邊界及在牆上開洞(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;
}
建立結果:
相關文章
- Revit二次開發環境配置(Revit 2020 +Visual Studio 2019)開發環境
- NX二次開發-建模-獲取面的相切曲面
- Revit二次開發-曲線三連:對curves進行排序排序
- Revit獲取元素的巢狀族巢狀
- 在平時開發的時候,你有考慮過邊界問題嗎?說說你對邊界的理解!
- Voyager 的使用及二次開發
- Revit獲取元素Solid和計算包圍盒Solid
- Revit二次開發知識分享(八)控制顯示隱藏的圖元按鈕
- ZStack原始碼剖析之二次開發——在Utility上堆程式碼原始碼
- 人工智慧開發的道德邊界在哪裡? | CNCC 2019人工智慧
- 【AutoCAD .NET】如何在無邊界Hatch上選擇邊界點?
- AndroidStudio外掛GsonFormat解析及二次開發AndroidORM
- CentOS開啟防火牆及開放指定埠CentOS防火牆
- CAD二次開發——在CAD中建立直線
- iOS開發-獲取rootViewController的正確方式iOSViewController
- 網站修改二次開發,網站二次開發流程網站
- kubernetes 二次開發
- SOLIDWORKS二次開發Solid
- Dresdon二次開發
- 夢想cad在網頁開發時如何獲取圖層操作的資訊網頁
- C#二次開發BIMFACE系列61 File Management檔案管理服務介面二次開發及實戰詳解C#
- SOLIDWORKS二次開發形式Solid
- NX二次開發-使用NXOPEN C++嚮導模板做二次開發C++
- 綠盟NF防火牆,打造新一代邊界防護方案防火牆
- 怎麼在ajax外邊使用ajax裡面在後端獲取的資料後端
- 《超越邊界》
- OpenHarmony開發筆記:獲取原始碼(repo安裝)筆記原始碼
- 突破設計邊界,盡在AutoCAD2020!
- 二分查詢左邊界,右邊界,>=,>,<=,<
- 在零程式碼開發平臺上如何開發應用程式
- [開源地址] 放棄Flink,.NET5.0開發CSharpFlink,簡要設計、部署及二次開發說明。CSharp
- UG二次開發筆記筆記
- 基於 solox 二次開發
- SOLIDWORKS二次開發介紹Solid
- 開發及上線中的注意事項
- 防火牆在RAC上的配置防火牆
- 小說APP原始碼開發,支援二次開發功能APP原始碼
- Solon Aop 特色開發(1)注入或手動獲取配置