您好,登录后才能下订单哦!
这篇文章主要介绍了Revit怎么布置支吊架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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怎么布置支吊架”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。