千家信息网

Revit怎么布置支吊架

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍了Revit怎么布置支吊架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Revit怎么布置支吊架文章都会有所收获,下面我们一起来看看吧。---------
千家信息网最后更新 2025年01月31日Revit怎么布置支吊架

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

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

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

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


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

给窗体加上代码:

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 listt = new List();

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

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怎么布置支吊架"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0