start
using system;
using system.collections.generic;
using system.linq;
using system.text;
using winform = system.windows.forms;
using autodesk.revit.ui;
using autodesk.revit.db;
using autodesk.revit.attributes;
using autodesk.revit.db.mechanical;
using autodesk.revit.ui.selection;
using autodesk.revit.db.structure;
using autodesk.revit.db.extensiblestorage;
using autodesk.revit.db.plumbing;
using autodesk.revit.db.architecture;
using system.xml;
using selset = hongye.revit.public.selectset;
using autodesk.revit.db.electrical;
using system.diagnostics;
using system.security.cryptography;
using system.io;
namespace revitcodes
else}}
}}
}return bresult;
}///
///改變風管尺寸
///
///
///
///
public
static
void changeductsize(duct duct,
string swidth,
string sheight)
//////
改變管件尺寸
///
///
///
///
public
static
void changefittingsize(familyinstance fi,
double dwidth,
double dheight)
}
//////
是否需要變換
///
///
///
public
static
bool ischange(familyinstance fi)
return bchange;
}///
///取得管件的幾何體的方向面,管件族的幾何體,有三個。
///
///
///
public
static plana***ce getfittingsolid(familyinstance fi)
// plana***ce resultface =
null;
solid resultsolid =
null;
//options opt =
new options();
opt.computereferences =
true;
opt.detaillevel = autodesk.revit.db.detaillevels.medium;
//geometryelement e = fi.get_geometry(opt);
foreach (geometryobject obj
in e.objects)
}
}
if (issolid)
}
}
}
}
//找到截面
double darea = dwidth * dheight;
plana***ce sectionface =
null;
foreach (face face
in resultsolid.faces)
}
//找到與截面垂直的管件正面
foreach (face face
in resultsolid.faces)
else}}
}//
return resultface;
}///
///從框選元素中過濾出風管
///
///
///
public
static listgetductsfromelements(ilistlistelement)
}
return listduct;
}///
///從框選元素中過濾出管件
///
///
///
public
static listgetfittingsfromelements(ilistlistelement)
}
return listfitting;}}
//改變尺寸方法一
[transactionattribute(autodesk.revit.attributes.transactionmode.manual)]
public
class cmdchangesize1 : iexternalcommand
ts.commit();
//第二步,改變風管尺寸,如果不需要變換,變徑會自動消失。
ts.start();
foreach (duct duct
in listduct)
ts.commit();
//第三步,判斷風管與管件之間是否仍然存在變徑,如果存在則寬度互換,再次改變風管尺寸。
ts.start();
foreach (familyinstance fi
in listfi)
}
}
ts.commit();
//pf.normal.angleto
return result.succeeded;}}
//改變尺寸方法二
[transactionattribute(autodesk.revit.attributes.transactionmode.manual)]
public
class cmdchangesize2 : iexternalcommand
}
else}}
ts.commit();
return result.succeeded;}}
}url:
如何用API從風管型別獲取風管型別的截面形狀
現在revit沒有開放直接可用的api從ducttype來獲取管道型別的形狀。本文給出了乙個替代解決辦法來獲取。思路是這樣的 從風管型別獲取與風管型別關聯的彎頭族型別,然後開啟這個彎頭族,在從開啟的族文件中獲取連線件ductconnector的截面形狀。這個事可以工作的。但是效率不是很高,因為需要開...
Revit API 日誌檔案 journal
journal 是 revit 乙個非常神奇的功能。當你在操作 revit 的時候,實際上,revit 會默默地把你的操作變成程式。而這個程式,可以回放。關於日誌檔案 日誌檔案可以捕捉從軟體啟動到停止這段時間內,軟體在 revit 會話期間所執行的操作。這些文字檔案可用來解決該軟體的技術問題。每次使...
Revit開發管道風管分段
revit2017的api 裡提供了水管和風管分段的方法,如果開發者在要寫分段的功能就大大的方便了 主要是提供了 plumbingutils pipe分段 mechanicalutils duct分段 兩個類下面是個小測試 reference r uidoc.selection.pickobject...