Revit API元素镜像MirrorElement

本文详细介绍了在Revit中使用自定义命令镜像墙体的过程,包括选取墙面、获取法线、计算UV坐标和镜像平面等关键步骤。
这里涉及到一些专业术语Face,Plane,UV,还没搞清楚,暂时记录下来。
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public   class  cmdMirrorWall : IExternalCommand
{
    
public  Result Execute(ExternalCommandData cmdData,  ref   string  msg, ElementSet elements)
    {
        UIDocument uiDoc 
=  cmdData.Application.ActiveUIDocument;

        Transaction ts 
=   new  Transaction(uiDoc.Document,  " http://revit.5d6d.com " );
        ts.Start();

        Reference reference 
=  uiDoc.Selection.PickObject(ObjectType.Element,  " 选择一面墙 " );
        Wall wall 
=  uiDoc.Document.GetElement(reference)  as  Wall;
        MirrorWall(uiDoc.Document, wall);

        ts.Commit();

        
return  Result.Succeeded;
    }
    
private   void  MirrorWall(Document doc, Wall wall)
    {
        Reference reference 
=  HostObjectUtils.GetSideFaces(wall, ShellLayerType.Exterior).First();
        Face face 
=  wall.GetGeometryObjectFromReference(reference)  as  Face;
        UV bboxMin 
=  face.GetBoundingBox().Min;
        Plane plane 
=   new  Plane(face.ComputeNormal(bboxMin), face.Evaluate(bboxMin).Add( new  XYZ( 10 10 0 )));
        ElementTransformUtils.MirrorElement(doc, wall.Id, plane);
    }
}
from: http://revit.5d6d.com/thread-1274-1-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值