【发布时间】:2020-08-27 21:13:21
【问题描述】:
我正在 Revit 中进行一个项目,我需要创建四面墙,其中两面是基本墙,另外两面是玻璃墙(玻璃墙在 revit 中称为幕墙 - 如果我错了请纠正我) .
我能够做到这一点,但输出存在一些问题。
以下是我的代码:
在这里我得到了四分。
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));
在这里,我根据点绘制墙。
这里levelBottomId是底层
for (int i = 0; i < 4; ++i)
{
Line line = Line.CreateBound(corners[i], corners[3 == i ? 0 : i + 1]);
Wall wall = Wall.Create(doc, line, levelBottomId, false);
//add materials to walls to create basic wall or glass wall as per condition
}
我创建基本墙体材料的代码如下:
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;
- 墙体相互接触不留空隙,但2个幕墙之间或基础墙与幕墙之间存在小间隙。我怎样才能消除差距?
- 我是否必须添加另一个系列或其他东西作为它们之间的连接器 玻璃墙和基本墙或两个玻璃墙之间以保持连接。
- 我创建玻璃墙的方法是否正确,这可能是导致问题的原因?
【问题讨论】:
-
看起来你的彩色箭头应该切换了。如果您查看属性面板,它会显示右侧突出显示的墙壁是幕墙。