gpt4 book ai didi

c# - Revit,如何在选定的墙中获取位置、长度和高度

转载 作者:行者123 更新时间:2023-11-30 21:13:48 25 4
gpt4 key购买 nike

我有这段代码,但我不知道如何显示我选择的墙的位置、高度和长度:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
namespace PickSelectionFiltered
{
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]

public class Class1: IExternalCommand
{
public class MySelectionFilter : ISelectionFilter
{
Document m_doc = null;

public bool AllowElement(Element element)
{
return element is Wall;
}
public bool AllowReference(Reference refer, XYZ point)
{
GeometryObject geoObject =
m_doc.GetElement(refer)
.GetGeometryObjectFromReference(refer);
return geoObject != null && geoObject is Face;
}
}


public Result Execute(ExternalCommandData commandData,
ref string message, ElementSet elements)
{
//Get application and document objects
UIDocument uidoc = commandData.Application.ActiveUIDocument;

try
{
while (true)
{
Reference selRef =
uidoc.Selection.PickObject(ObjectType.Element,
new MySelectionFilter(), "select a room");
/*
* Add the code to get position, lenght and height
* */
}

} catch (Autodesk.Revit.Exceptions.OperationCanceledException) { }

return Result.Succeeded;
}
}
}

最佳答案

墙的位置基于它的驱动曲线,从墙上获得的 LocationCurve:

Wall wall = document.GetReference(setRef) as Wall;
if (wall != null)
{
LocationCurve locationCurve = wall.Location as LocationCurve;
XYZ endPoint0 = locationCurve.Curve.get_EndPoint[0];
XYZ endPoint1 = locationCurve.Curve.get_EndPoint[1];
}

墙的长度是从墙的参数中得到的:

BuiltInParameter.CURVE_ELEM_LENGTH

墙的宽度是从墙类型的参数中获取的:

BuiltInParameter.WALL_ATTR_WIDTH_PARAM

这适用于标准墙,不适用于幕墙和叠层墙等特殊墙类型。

关于c# - Revit,如何在选定的墙中获取位置、长度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com