Revit API建立乙個拷貝房間內物件布局命令

2022-02-11 17:59:51 字數 2215 閱讀 2578

本課程演示建立乙個拷貝房間內物件布局命令,完整演示步驟和**。這個命令把選中房間內的物件複製到其它選中的乙個或多個房間中,而且保持與源房間一致的相對位置。通過本講座使聽眾知道建立乙個二次開發程式很簡單,建立乙個實用的命令也很快。

//複製房間

[transactionattribute(autodesk.revit.attributes.transactionmode.manual)]

public

class cmdcopyroom : iexternalcommand

bool iselectionfilter.allowreference(reference reference, xyz position)

}public result execute(externalcommanddata commanddata, ref

1.選擇房間

請選擇房間

");//

reference refroom = sel.pickobject(objecttype.element, "請選擇房間");

room room = doc.getelement(refroom) as room;

//2.獲取目標房間的名稱

string roomname = room.get_parameter(builtinparameter.room_name).asstring();

string roomdepartment = room.get_parameter(builtinparameter.room_department).asstring();

string roomoccupancy = room.get_parameter(builtinparameter.room_occupancy).asstring();

//迴圈建立房間

boolean bcontinue = true;

while (bcontinue)

//捕獲右擊取消與esc

catch (autodesk.revit.exceptions.invalidoperationexception ex)

catch (exception)

//4.根據選中點,建立房間

transaction trans = new transaction(doc);

trans.start("

");room newroom = doc.create.newroom(doc.activeview.genlevel, new uv(point.x, point.y));

if (newroom == null)

//5.讀取房間的中心位置

geometryobjectarray geomobjectarray = newroom.closedshell.objects;

geometryobject geoobject = geomobjectarray.get_item(0);

solid roomsolid = geoobject as solid;

xyz centriod = roomsolid.computecentroid();

xyz roomcenter = new xyz(centriod.x, centriod.y, doc.activeview.genlevel.elevation);

//6.修改房間十字叉的位置

locationpoint roomlocation = newroom.location as locationpoint;

roomlocation.point = roomcenter;

//7.建立標籤,放在中心

roomtag tag = doc.create.newroomtag(newroom, new uv(roomcenter.x, roomcenter.y), doc.activeview);

//8.賦值三個引數值

newroom.get_parameter(builtinparameter.room_name).set(roomname);

newroom.get_parameter(builtinparameter.room_department).set(roomdepartment);

newroom.get_parameter(builtinparameter.room_occupancy).set(roomoccupancy);

trans.commit();

}return result.succeeded;}}

url:

實現乙個深拷貝

第一種 可以使用簡單的方法jsonconst person const copyperson json.parse json.stringify person 修改person內name屬性 person.name che console.log person console.log copyper...

深淺拷貝 拷貝乙個js的函式

深淺拷貝概念 實現方法鏈結 拷貝乙個js的函式function fun return後面必須多出乙個空格 var copy new function return fun.tostring 淺拷貝的方法object.assign 陣列中concat和slice方法var arr var target...

建立2個結構相同的表,並從乙個往另乙個拷貝記錄

該功能可以用於把本地access資料庫中的表,轉化成網上mysql中的表 create table xigongda chengji like xigongda tieyi 拷貝記錄 insert into xigongda chengji stu name,xiaoxue,parent name,...