Revit API改變風管及管件尺寸

2021-09-06 14:02:14 字數 3484 閱讀 8719

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...