我正在为Revit 2019创建插件,并想获取Wall Category的所有参数。我已经过滤了墙,然后访问墙的参数。但是我没有得到诸如“材料:名称,材料:面积,材料:体积”之类的参数
我尝试了以下代码
ElementFilter wall = new ElementCategoryFilter(BuiltInCategory.OST_Walls);
ICollection<Element> walls = new
FilteredElementCollector(doc).WherePasses(wall).ToElements();
string prompt = "Parameters";
foreach (Element e in walls)
{
ParameterSet pSet = e.Parameters;
foreach (Parameter p in pSet)
{
prompt += (p.Definition as
InternalDefinition).BuiltInParameter.ToString();
prompt += Environment.NewLine;
}
break;
}
}
我也尝试了以下方法:
IList<Parameter> orderedParameters = e.GetOrderedParameters();
还有这个:
ParameterMap parameterMap = e.ParametersMap;
我想获取所有参数,包括时间表和起飞参数。
我没有得到突出显示的参数。
答案 0 :(得分:0)
我不知道某些特定于元素的参数,例如foreach (var file in filesCopy)
{
if (file.FileName.EndsWith(".zip"))
{
using (ZipArchive zipFile = new ZipArchive(file.InputStream))
{
foreach (ZipArchiveEntry entry in zipFile.Entries)
{
if (entry.Name.EndsWith(".bin"))
{
// Some code left out
}
}
}
}
}
,Area
和As Paint
,但至少其中一些参数可以通过获取墙的材质和还可以访问材质的参数,而不仅仅是访问墙。
答案 1 :(得分:0)
WallType type = WallTypes.ElementAt(0) as WallType;
WallType newType = type.Duplicate(name) as WallType;
CompoundStructure cs = type.GetCompoundStructure();
CompoundStructure wallComPound = newType.GetCompoundStructure();
foreach (CompoundStructureLayer layer in wallComPound.GetLayers())
{
layer.Width = value ;
wallComPound.SetLayerWidth(layer.LayerId, layer.Width);
break;
}
newType.SetCompoundStructure(wallComPound);
此演示是更改墙的宽度,如果我正确理解您的要求,您想要获取材质参数,在墙中,您应该获取墙类型,然后您应该获取化合物结构,在此,您可以获得边界信息。由几层信息组成。希望它对您有所帮助!
答案 2 :(得分:0)
您可以从墙上获取此信息,无需访问参数。
foreach (Element e in walls)
{
double area = e.GetMaterialArea();
double volume = e.GetMaterialVolume();
//Get the category material
Material mat = e.Category.Material;
}
如果要获取材料的所有信息,可以使用GetMaterialIds()
foreach(ElementId id in e.GetMaterialIds())
{
Material mat = doc.GetElement(id) as Material;
//Get data from material...
}
有关更多信息,请检查api。