C# 如何在revit api中删除两个玻璃墙之间的间隙
我正在Revit中进行一个项目,需要创建四面墙,其中两面是基本墙,另外两面是玻璃墙(玻璃墙在Revit中称为幕墙-如果我错了,请更正)。C# 如何在revit api中删除两个玻璃墙之间的间隙,c#,revit-api,C#,Revit Api,我正在Revit中进行一个项目,需要创建四面墙,其中两面是基本墙,另外两面是玻璃墙(玻璃墙在Revit中称为幕墙-如果我错了,请更正)。 我能够做到这一点,但输出存在一些问题。 以下是我的代码: 这里我得到了四点 double width = UnitUtils.ConvertToInternalUnits(2500, DisplayUnitType.DUT_MILLIMETERS); double depth = UnitUtils.ConvertToInternalUnits(12
我能够做到这一点,但输出存在一些问题。
以下是我的代码:
这里我得到了四点
double width = UnitUtils.ConvertToInternalUnits(2500, DisplayUnitType.DUT_MILLIMETERS);
double depth = UnitUtils.ConvertToInternalUnits(1200, DisplayUnitType.DUT_MILLIMETERS);
List<XYZ> corners = new List<XYZ>(4);
corners.Add(XYZ.Zero);
corners.Add(new XYZ(width, 0, 0));
corners.Add(new XYZ(width, depth, 0));
corners.Add(new XYZ(0, depth, 0));
我创建玻璃墙的代码如下:
WallType walltype = wall.WallType;
var newWallType = walltype.Duplicate(wallName)
var compStruct = newWallType.GetCompoundStructure();
var wallLayers = compStruct.GetLayers();
//add materials
compStruct.SetLayers(wallLayers);
newWallType.SetCompoundStructure(compStruct);
wall.WallType = newWallType;
List<WallType> wallTypeList = new FilteredElementCollector(doc).OfClass(typeof(WallType)).OfType<WallType>().ToList();
WallType walltype = null;
foreach (var wt in wallTypeList)
{
if (wt.Kind == WallKind.Curtain){
walltype = wt;
break;
}
}
var newWallType = walltype.Duplicate(wallName) as WallType;
wall.WallType = newWallType;
List-wallTypeList=new-FilteredElementCollector(doc).OfClass(typeof(WallType)).OfType().ToList();
WallType WallType=null;
foreach(墙类型列表中的var wt)
{
如果(wt.Kind==墙类窗帘){
墙型=重量;
打破
}
}
var newWallType=walltype.Duplicate(wallName)作为walltype;
wall.WallType=newWallType;
在开始编程之前,请研究最佳实践和最佳工作流,以在用户界面中手动解决此问题 通常,如果Revit产品中没有通过用户界面手动提供的功能,Revit API也不会提供该功能 因此,您应该研究最佳工作流和最佳实践,以便首先通过用户界面手动完成手头的任务 为此,请与经验丰富的应用工程师、产品使用专家或产品支持人员进行讨论和分析 一旦你把那部分整理好,是时候进入编程环境了
这里有更多的建议。看起来应该切换彩色箭头。如果查看“属性”面板,它会向您显示右侧高亮显示的墙是幕墙。
List<WallType> wallTypeList = new FilteredElementCollector(doc).OfClass(typeof(WallType)).OfType<WallType>().ToList();
WallType walltype = null;
foreach (var wt in wallTypeList)
{
if (wt.Kind == WallKind.Curtain){
walltype = wt;
break;
}
}
var newWallType = walltype.Duplicate(wallName) as WallType;
wall.WallType = newWallType;