温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Revit怎么布置支吊架

发布时间:2022-03-21 14:54:29 来源:亿速云 阅读:207 作者:iii 栏目:大数据

这篇文章主要介绍了Revit怎么布置支吊架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Revit怎么布置支吊架文章都会有所收获,下面我们一起来看看吧。

------------------------------------我是思路-----------------------------

  1. 选择布置支吊架的距离

  2. 选择要布置支吊架的管子


Revit怎么布置支吊架

我们先添加一个窗体,粗略设计一下窗体,大概就上面这样吧!

给窗体加上代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace zpx123

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        public void textBox1_TextChanged(object sender, EventArgs e)

        {

            string str = textBox1.Text;

        }

        private void button1_Click(object sender, EventArgs e)

        {

            this.DialogResult = DialogResult.OK;

        }

        public string Number

        {

            get { return textBox1.Text; }//获得文本框里返回的值

        }

        private void Form1_Load(object sender, EventArgs e)

        {

        }

    }

}


        正经的代码咯:  

           double number = 0;

            int number1 = 0;

            zpx123.Form1 form = new zpx123.Form1();

            form.ShowDialog();

            if (form.DialogResult == DialogResult.OK)

            {

                string str = form.Number;

              //为了防止用户乱输入发生错误,我习惯踹一脚

             try

                {

                    number1 = Convert.ToInt32(str);

                    number = number1/304.8;

                }

                catch

                {

                    MessageBox.Show("请输入正确的数字");

                }

            }

//通过以上这些就可以获得用户输入的数值了

            ElementId id = null;

            FilteredElementCollector faa = new FilteredElementCollector(doc);

            faa.OfClass(typeof(FamilyInstance));//收集族类型

            foreach (FamilyInstance fa in faa)

            {

                if (fa.GetParameters("族与类型")[0].AsValueString().Contains("支吊架"))

                {

                    id = fa.Symbol.Id;

                }

            }

            FamilySymbol fas = doc.GetElement(id) as FamilySymbol;

            Selection ree = uiDoc.Selection;

            Reference re = ree.PickObject(ObjectType.Element);

            Element elem = doc.GetElement(re);

            Pipe pipe = elem as Pipe;

            LocationCurve curve = pipe.Location as LocationCurve;

            XYZ start = curve.Curve.GetEndPoint(0);//获取管道的起点

            XYZ end = curve.Curve.GetEndPoint(1);//获得管道的终点

            double a = start.X ;

            double b = start.Y ;

            double zz = start.Z ;

            double c = end.X ;

            double d = end.Y ;

            //以上是获得管道起点和终点的xyz的值

            double xy = start.DistanceTo(end) ;//求距离

            int gs = (int)((xy / number));//求要放几个支吊架

           double y = (number * (d - b)) / Math.Sqrt((c - a) * (c - a) + (d - b) * (d - b)) ;

           double x = (number * (c - a)) / Math.Sqrt((c - a) * (c - a) + (d - b) * (d - b)) ;

           //以上为数学公式

            List<FamilyInstanceCreationData> listt = new List<FamilyInstanceCreationData>();

            //用来存储一系列的管道坐标的集合

            for (double j = 0; j < gs; j ++)

            {

               double A = a + x;

                double B = b + y;

                listt.Add(new FamilyInstanceCreationData(new XYZ(A, B, zz), fas, StructuralType.NonStructural));//把坐标放到集合里

                a = A;

                b = B;

            }

            doc.Create.NewFamilyInstances2(listt);//创建支吊架

            ts.Commit();

            return Result.Succeeded;

        }

    }

}

(代码有点长,我试了一下,截屏没办法把代码都截进去,只能分成几个图片了)

Revit怎么布置支吊架

Revit怎么布置支吊架

Revit怎么布置支吊架


效果展示:

Revit怎么布置支吊架

点击完成,选择管道。

Revit怎么布置支吊架

Revit怎么布置支吊架

Revit怎么布置支吊架

关于“Revit怎么布置支吊架”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Revit怎么布置支吊架”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI