完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費領(lǐng)取會員

NULL

ad.jpg

二次開發(fā)教程:Revit開發(fā)獲取梁的寬和高

發(fā)布于:2019-08-23 17:02:31

網(wǎng)友投稿

更多

在Revit里梁的寬和高一般都會有對應(yīng)的參數(shù),要獲取大多數(shù)情況可以使用GetParameter,


但這個參數(shù)名稱是用戶自己定義的,不同的梁對應(yīng)的參數(shù)名不一樣,所以可以考慮通過梁的截面Face來獲取


            FamilyInstance inst = doc.GetElement(uidoc.Selection.PickObject(ObjectType.Element)) as FamilyInstance;

            Line loc = (inst.Location as LocationCurve).Curve as Line;

            XYZ dir = loc.Direction;

            Options opts = new Options();

            GeometryElement gelem = inst.get_Geometry(opts);

            foreach(GeometryObject gobj in gelem)

            {

                GeometryInstance gins = gobj as GeometryInstance;

                if(gins!=null)

                {

                    GeometryElement ge = gins.GetInstanceGeometry();

                    foreach(GeometryObject go in ge)

                    {

                        Solid solid = go as Solid;

                        if(solid!=null&& solid.Volume>0)

                        {

                            foreach(Face face in solid.Faces)

                            {

                                XYZ faceDir = face.ComputeNormal(new UV());

                                if(faceDir.IsAlmostEqualTo(dir)||faceDir.IsAlmostEqualTo(-dir))

                                {

                                    BoundingBoxUV uvBox = face.GetBoundingBox();

                                    XYZ min = face.Evaluate(uvBox.Min);

                                    XYZ max = face.Evaluate(uvBox.Max);

                                    double h = Math.Abs(max.Z - min.Z);

                                    double l = max.DistanceTo(min);

                                    double w = Math.Sqrt(l * l - h * h);                                    

                                    MessageBox.Show("H" + Math.Round(h * 304.8).ToString() + "\n" + "W" + Math.Round(w * 304.8).ToString());

                                    break;

                                }

                            }

                        }

                    }

                }

            }

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標題-1.jpg

上一篇:二次開發(fā)教程:WPF 使用net 資源多語言

下一篇:二次開發(fā)教程:Revit開發(fā)之快捷鍵相關(guān)類

60acb4e0ef112.png