Revit二次開發,求任意一點到直線的垂直交點座標

2021-10-25 11:26:12 字數 1174 閱讀 2937

題目:已知空間任意兩點a、b形成一條直線,求空間第3點在該條直線上的垂直交點座標。可能字面描述是不好理解的,請看圖。

情況1:

如上圖,已經a點b點,求空間c點在ab直線上的垂直座標h點。ch直線將會垂直於ab直線。

情況2:

如上圖,ab所連成的線段,會有延長線,c點是ab線的延長線進行垂直後相交 得到的h點。ch直線將會垂直於ab直線。

解答:先宣告一條無限延長線ab:

autodesk.revit.db.line ab = autodesk.revit.db.line.createunbound(pointa, pointb);
求出一條垂直於該ab線的法線向量:

//求ab線的單位

xyz normal = ab.direction.normalize();

xyz dir = new xyz(0, 0, 1);

//求垂直於ab線的法線

xyz cross = normal.crossproduct(dir);

通過該法線建立乙個虛的d點:

//隨意生成該線上的乙個點,當成乙個虛的d點

xyz pointd = pointc + cross.multiply(10);

autodesk.revit.db.line cd = autodesk.revit.db.line.createbound(pointc, pointd);

最後求出ab線和cd的交點h即可。

看下效果圖,假設abc三點座標如下,則h點的座標如下圖:

Revit二次開發 初學

前言 由於工作需要,近期開始學習revit二次開發知識。學習的同時將學習過程與小夥伴們一起分享,希望後來的小夥伴在看到我的學習筆記的時候有所幫助。說明由於revit的版本在不斷更新中,所以我在學習revit的時候選擇了從revit自帶的幫助檔案開始學習,不同版本的revit,就看相應的help檔案。...

Revit二次開發 Revit擴充套件儲存資料

revit二次開發過程中,需要將相關資訊儲存到rvt檔案中,再次開啟rvt的時候,可以通過讀取這些資訊,知道當前構件的基本狀態,或者將乙個特殊的資訊儲存到rvt檔案中,從revit2012開始引入了擴充套件儲存這個新技術,就是可以把一些資料儲存在revit中的某乙個物件上。且這個儲存操作,只能通過程...

Revit二次開發 分割族

如有不明白,請qq254033230詢問。其實在revit裡是不存在分割族的概念。對於基於線形的族,截面沿線都是一樣,要想達到分割的狀態,只需要把族基於線的那條線變短,然後再在分割點複製乙個新的族即可。過程是先獲得線的均分點,然後把族的線縮短,接著再複製族,即可變成均分的效果。主要方法見 priva...