Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”
生活随笔
收集整理的這篇文章主要介紹了
Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用ElementTransformUtils.MoveElement()移動元素,改變元素的Location屬性 [Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public?class?cmdMoveColumn?:?IExternalCommand
{
????public?Result?Execute(ExternalCommandData?cmdData,?ref?string?message,?ElementSet?elements)
????{
????????UIDocument?uiDoc?=?cmdData.Application.ActiveUIDocument;
????????Selection?selection?=?uiDoc.Selection;
????????Transaction?ts?=?new?Transaction(uiDoc.Document,?"move");
????????ts.Start();
????????//選擇一個(gè)管件,可以轉(zhuǎn)化為FamilyInstance
????????Reference?refelem?=?selection.PickObject(ObjectType.Element,?"選擇一個(gè)管件");
????????FamilyInstance?fi?=?uiDoc.Document.get_Element(refelem.ElementId)?as?FamilyInstance;
????????MoveColumn(uiDoc.Document,?fi);
????????ts.Commit();
????????return?Result.Succeeded;
????}
????public?void?MoveColumn(Document?doc,?FamilyInstance?column)
????{
????????LocationPoint?columnLocation?=?column.Location?as?LocationPoint;
????????XYZ?oldPlace?=?columnLocation.Point;
????????XYZ?newPlace?=?new?XYZ(10,?20,?30);
????????ElementTransformUtils.MoveElement(doc,?column.Id,?newPlace);
????????columnLocation?=?column.Location?as?LocationPoint;
????????XYZ?newActual?=?columnLocation.Point;
????????string?info?=?"Original?Z?location:"?+?oldPlace.Z?+
????????????"\nNew?Z?location:"?+?newActual.Z;
????????TaskDialog.Show("Revit",?info);
????}
????bool?MoveUsingLocationCurve(UIApplication?app,?Wall?wall)
????{
????????LocationCurve?wallLine?=?wall.Location?as?LocationCurve;
????????XYZ?translationVec?=?new?XYZ(10,?20,?0);
????????return?(wallLine.Move(translationVec));
????}
????void?MoveUsingCurveParam(UIApplication?app,?Wall?wall)
????{
????????LocationCurve?wallLine?=?wall.Location?as?LocationCurve;
????????XYZ?p1?=?XYZ.Zero;
????????XYZ?p2?=?new?XYZ(10,?20,?0);
????????Line?newWallLine?=?app.Application.Create.NewLineBound(p1,?p2);
????????wallLine.Curve?=?newWallLine;
????}
}from:http://revit.5d6d.com/thread-1206-1-1.html
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public?class?cmdMoveColumn?:?IExternalCommand
{
????public?Result?Execute(ExternalCommandData?cmdData,?ref?string?message,?ElementSet?elements)
????{
????????UIDocument?uiDoc?=?cmdData.Application.ActiveUIDocument;
????????Selection?selection?=?uiDoc.Selection;
????????Transaction?ts?=?new?Transaction(uiDoc.Document,?"move");
????????ts.Start();
????????//選擇一個(gè)管件,可以轉(zhuǎn)化為FamilyInstance
????????Reference?refelem?=?selection.PickObject(ObjectType.Element,?"選擇一個(gè)管件");
????????FamilyInstance?fi?=?uiDoc.Document.get_Element(refelem.ElementId)?as?FamilyInstance;
????????MoveColumn(uiDoc.Document,?fi);
????????ts.Commit();
????????return?Result.Succeeded;
????}
????public?void?MoveColumn(Document?doc,?FamilyInstance?column)
????{
????????LocationPoint?columnLocation?=?column.Location?as?LocationPoint;
????????XYZ?oldPlace?=?columnLocation.Point;
????????XYZ?newPlace?=?new?XYZ(10,?20,?30);
????????ElementTransformUtils.MoveElement(doc,?column.Id,?newPlace);
????????columnLocation?=?column.Location?as?LocationPoint;
????????XYZ?newActual?=?columnLocation.Point;
????????string?info?=?"Original?Z?location:"?+?oldPlace.Z?+
????????????"\nNew?Z?location:"?+?newActual.Z;
????????TaskDialog.Show("Revit",?info);
????}
????bool?MoveUsingLocationCurve(UIApplication?app,?Wall?wall)
????{
????????LocationCurve?wallLine?=?wall.Location?as?LocationCurve;
????????XYZ?translationVec?=?new?XYZ(10,?20,?0);
????????return?(wallLine.Move(translationVec));
????}
????void?MoveUsingCurveParam(UIApplication?app,?Wall?wall)
????{
????????LocationCurve?wallLine?=?wall.Location?as?LocationCurve;
????????XYZ?p1?=?XYZ.Zero;
????????XYZ?p2?=?new?XYZ(10,?20,?0);
????????Line?newWallLine?=?app.Application.Create.NewLineBound(p1,?p2);
????????wallLine.Curve?=?newWallLine;
????}
}from:http://revit.5d6d.com/thread-1206-1-1.html
總結(jié)
以上是生活随笔為你收集整理的Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SuSE 10 Enterprise 下
- 下一篇: 艾伟:尽可能摆脱对HttpContext