Revit二次開發 軸網快速標註

2021-09-24 20:20:25 字數 1677 閱讀 4911

通過revit二次開發實現對平行軸網的快速標註。互動操作是框選軸網->點選尺寸標註出現的位置->生成兩道尺寸標註。

要達到設想的結果一些地方需要特殊考慮:

框選操作容易誤選軸網,起碼要把與所選軸網不平行的軸網過濾出來。選用了第二步操作所選點的最近軸網作為軸網平行的參考基準。遍歷所有框選的軸網,如果軸網與基準軸網的向量相同或相反,則判定為平行軸網;

外側的尺寸標註需要標識最外側的兩根軸網,取得外側兩根軸網的方法也比較簡單,遍歷軸網,判斷另外的軸網是否都在這根軸網的左邊,或者都不在這根軸網的左邊,即可獲得最外側的兩根軸網;

在不同的檢視比例下,尺寸標註的字型高度是不一樣的,所以需要讀取字型高度,根據當前檢視的比例,計算出內側尺寸標註的合適位置。

以下**:

class qgriddimension : iexternalcommand

}if (dimtype != null)}}

//獲得內側尺寸標註的引用

foreach (grid g in linegrid)

}//獲取外側尺寸標註的引用

foreach (reference refgrid in referencearray1)

}if (i == 0 || i == referencearray1.size - 1)

}//計算尺寸標註位置

xyz linedir = referenceline.direction.crossproduct(new xyz(0, 0, 1));

xyz point_s = referenceline.getendpoint(0);

xyz point_e = referenceline.getendpoint(1);

if (point_s.distanceto(selpoint) > point_e.distanceto(selpoint))

xyz offsetdir = point_e - point_s;

double lenght = dimtype.get_parameter(builtinparameter.text_size).asdouble();

line line_o = line.createunbound(selpoint, linedir);

line line_i = line.createunbound(selpoint + offsetdir.normalize() * lenght * activeview.scale * 1.9, linedir);

//建立尺寸標註

using (transaction tran = new transaction(document, "軸網尺寸標註"))}}

else

return result.succeeded;

}bool pointontheleft(xyz point1, xyz point2, xyz point)

return false;}}

internal class gridfilter : iselectionfilter

return false;

}public bool allowreference(reference reference, xyz position)

}

Revit二次開發 所有管道和軸網建立標註

篩選當前檢視中所有的管道和軸網,建立橫向和縱向的尺寸標註,拾取乙個點作為橫向和縱向尺寸標註放置位置 filteredelementcollector collector new filteredelementcollector doc,doc.activeview.id elementcategor...

Revit二次開發 初學

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

Revit二次開發 在軸網相交處建立柱子

寫在前面,要做到如圖的樣子。因為對revit軟體的使用根本不熟,所以遇到了很多問題,在這裡先羅列一下,萬一有跟我相同疑問的同學也可以互相交流一下。首先目的是在軸線的交點處建立柱子 第一步 在revit裡面畫上測試 的圖 幾條相交的軸線 第二步 寫 思路 1.獲取軸線的交點 1 獲取軸網 grid類 ...