Revit API元素镜像MirrorElement
2011-10-10 10:41
169 查看
这里涉及到一些专业术语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
[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
相关文章推荐
- RevitAPI: 如何获取MirrorElement函数镜像之后的结果元素
- Revit API 开发 (6): 判断 element 的 geometry 是否相交?
- Revit API 进阶之隐藏Element用户可见参数.
- Revit API取得全部元素
- Revit API布置喷头(放置任何元素的方法类似)
- revit api选择Element上的点画线
- RevitAPI之镜像(Mirror)一个元素
- ElementTraversal API的元素遍历
- 关于Revit API修改元素参数的问题?
- Revit API过滤元素类别(FamilySymbol与FamilyInstance)
- 【Revit API】创建工作集并将element加入工作集中
- Revit API 开发 (4): 如何判断一个构件,element,在某个视图中的可见性?
- Revit API 开发 (2): 显示选中的图元(element)
- RevitAPI之在机械设备和风管终端间创建风管系统
- 11.求二元查找树的镜像[MirrorOfBST]
- Revit API遍历全部风管,找到与风管相关的墙开洞(向量计算)
- API创建员工Element
- leetcode_27. Remove Element 不允许创建新列表,直接在列表原地删除指定元素
- 【Python】selenium调用IE11浏览器,报错“找不到元素”NoSuchWindowException: Message:Unable to find element on closed window