Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”
使用ElementTransformUtils.MoveElement()移动元素,改变元素的Location属性
from:http://revit.5d6d.com/thread-1206-1-1.html
[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();
//选择一个管件,可以转化为FamilyInstance
Reference refelem = selection.PickObject(ObjectType.Element, "选择一个管件");
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;
}
}
[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();
//选择一个管件,可以转化为FamilyInstance
Reference refelem = selection.PickObject(ObjectType.Element, "选择一个管件");
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;
}
}
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。