不知道大家有多少人和小編同樣每天加班4-5小時還走不了的加班狗。。。。。。最主要是。。。。。。。。微信
好了,言歸正傳,進入咱們這期的主題——利用Revit二次開發如何建立樓板spa
建立樓板的第一種方法:NewFloor(CurveArray profile, bool structural)這個方法比較簡單就不說了,咱們來講第二種方法:NewFloor(CurveArray profile, floorType, level, bool structural)和前幾期相似,咱們須要去把這四個條件集齊這樣就能夠建立出咱們想要的樓板了:.net
1.CurveArray profile。這是曲線的一個組合,和牆的集合有所不一樣要用Append來添加而不是add了,具體以下:blog
CurveArray cu = new CurveArray();開發
cu.Append(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(100, 0, 0)));get
cu.Append(Line.CreateBound(new XYZ(100, 0, 0), new XYZ(0, 100,0)));it
cu.Append(Line.CreateBound(new XYZ(0, 100, 0), new XYZ(0, 0, 0)));io
2.floorType。咱們須要建立樓板的類型:class
if (wa.GetParameters("默認的厚度")[0].AsValueString()=="225")//找到板厚爲225的板foreach
{
fl = wa;
}
3.level。要建立樓板所在的標高,和牆同樣小編在這就不重複了。
4. bool structural。是不是結構,這回咱們選個true,也和牆相似小夥伴能夠去看前面幾期哦。
咱們來組合比較一下和建立牆的方法不一樣(1)在於建立牆時咱們須要的是牆類型和標高的ID而樓板則要的不是ID而是類型,本質上是同樣的;(2)建立軸線、標高、牆create一下就好而板則須要doc.create。下邊上代碼:
FilteredElementCollector fil = new FilteredElementCollector(doc);
fil.OfClass(typeof(Level));
FilteredElementCollector fill = new FilteredElementCollector(doc);
fill.OfClass(typeof(FloorType));
FloorType fl = null;
Level le= null;
foreach (FloorType wa in fill)//查找板的類型
{
if (wa.GetParameters("默認的厚度")[0].AsValueString() == "225")//找到板厚爲225的板
{
fl= wa;
}
}
CurveArray cu = new CurveArray();
cu.Append(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(100, 0, 0)));//線條
cu.Append(Line.CreateBound(new XYZ(100, 0, 0), new XYZ(0, 100, 0)));
cu.Append(Line.CreateBound(new XYZ(0, 100, 0), new XYZ(0, 0, 0)));
foreach (Level ll in fil)//找標高
{
if (ll.Name.Contains("一層"))//找到一層標高
{
le = ll;
}
}
Floor fll = doc.Create.NewFloor(cu, fl, le, true);
效果:
看到咱們寫true後結構和啓用分析模型就會被勾選(固然通常狀況咱們是false,由於分析模型會使得模型比較卡)
最後但願你們能夠睡眠良好,財富自由,永不加班。
本文分享自微信公衆號 - 精講Revit二次開發(HelloRevit)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。