Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”

使用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();

        
//选择一个管件,可以转化为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(102030);
        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(10200);
        
return (wallLine.Move(translationVec));
    }
    
void MoveUsingCurveParam(UIApplication app, Wall wall)
    {
        LocationCurve wallLine 
= wall.Location as LocationCurve;
        XYZ p1 
= XYZ.Zero;
        XYZ p2 
= new XYZ(10200);
        Line newWallLine 
= app.Application.Create.NewLineBound(p1, p2);
        wallLine.Curve 
= newWallLine;
    }
}
from:http://revit.5d6d.com/thread-1206-1-1.html
posted @ 2011-08-27 13:03  大气象  阅读(1651)  评论(2编辑  收藏  举报
http://www.tianqiweiqi.com