通過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類 ...