Revit二次開發 隱藏遮擋元素

2021-10-18 23:48:27 字數 1564 閱讀 5291

背景:衝突檢測完成後需要顯示相互碰撞的元素並截圖,因為會有房子、地面等等大的模型,所以經常會遇到元素被遮擋。

解決思路:

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 是否提取未設定為可見的元素幾...