Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在revit api中删除两个玻璃墙之间的间隙_C#_Revit Api - Fatal编程技术网

C# 如何在revit api中删除两个玻璃墙之间的间隙

C# 如何在revit api中删除两个玻璃墙之间的间隙,c#,revit-api,C#,Revit Api,我正在Revit中进行一个项目,需要创建四面墙,其中两面是基本墙,另外两面是玻璃墙(玻璃墙在Revit中称为幕墙-如果我错了,请更正)。 我能够做到这一点,但输出存在一些问题。 以下是我的代码: 这里我得到了四点 double width = UnitUtils.ConvertToInternalUnits(2500, DisplayUnitType.DUT_MILLIMETERS); double depth = UnitUtils.ConvertToInternalUnits(12

我正在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));
我创建玻璃墙的代码如下:

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;