背景:衝突檢測完成後需要顯示相互碰撞的元素並截圖,因為會有房子、地面等等大的模型,所以經常會遇到元素被遮擋。
解決思路:
1、將專案的「視覺樣式」改為「隱藏線」模式(選中截圖時更清晰的顯示)、設定檢視方向為俯視(從上往下看)。
2、建立一條模型線用於檢測都有哪些遮擋元素,並將元素隱藏。
3、截圖後再把隱藏的元素顯示出來。
//設定專案視覺樣式
uidoc.activeview.get_parameter(builtinparameter.model_graphics).set(2);
//設定檢視為俯視
view3d view = uidoc.activeview as view3d;
view.orientto(-xyz.basisz);
//根據元素中點建立模型線,過濾出遮擋元素
xyz ptstart = null;
if(element.location is locationpoint)
else if(element.location is locationcurve)
else
xyz ptend = new xyz(ptstart.x,ptstart.y,ptstart.z + 100);
modelcurve mc = drawmodelcurve(doc,line.createbound(ptstart,ptend));
boundingboxxyz mcbox = mc.get_boundingboxxyz(doc.activeview);
outline ol = new outline(mcbox.min,mcbox.max);
boundingboxintersectsfilter boxfilter = new boundingboxintersectsfilter(ol);
filteredelementcollector fec = new filteredelementcollector(doc);
listids = fec.wherepasses(boxfilter).toelementids().tolist();
//設定遮擋元素隱藏
uidoc.activeview.hideelements(ids);
//截圖
imageexportoptions ieo = new imageexportoptions();
ieo.zoomtype = zoomtype.fittopage;
iep.exportrange = exportrange.visibleregionofcurrentview;
ieo.filepath = @"d:\";
ieo.glrandwfviewsfiletype = imagefiletype.jpegmedium;
ieo.shadowviewsfiletype = imagefiletype.jpegmedium;
doc.exportimage(ieo);
//顯示遮擋元素
uidoc.activeview.unhideelements(ids);
drawmodelcurve Revit二次開發 過濾元素
在revit二次開發中,過濾指定型別元素的需求是很常見的,比如說獲取標高 軸網 三維檢視 familysymbol等等,於是乎 元素過濾服務 public static class filterelementservice filteredelementcollector collector vie...
Revit二次開發 初學
前言 由於工作需要,近期開始學習revit二次開發知識。學習的同時將學習過程與小夥伴們一起分享,希望後來的小夥伴在看到我的學習筆記的時候有所幫助。說明由於revit的版本在不斷更新中,所以我在學習revit的時候選擇了從revit自帶的幫助檔案開始學習,不同版本的revit,就看相應的help檔案。...
Revit 二次開發 元素的所有面
需要傳入乙個 options的物件 開啟的方式 options options new options options.computereferences true 確定是否計算對幾何物件的引用 options.includenonvisibleobjects true 是否提取未設定為可見的元素幾...