這篇文章主要介紹了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怎么布置支吊架”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道。
網站題目:Revit怎么布置支吊架
網頁鏈接:http://m.newbst.com/article34/gdcgse.html
成都網站建設公司_創新互聯,為您提供自適應網站、商城網站、手機網站建設、移動網站建設、微信公眾號、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯