private WallType DuplicateWallType(WallType wallType, Document doc) { WallType newWallType; //Select the wall type in the document IEnumerable <WallType> _wallTypes = from elem in new FilteredElementCollector(doc).OfClass(typeof(WallType)) let type = elem as WallType where type.Kind == WallKind.Basic select type; List <string> wallTypesNames = _wallTypes.Select(o => o.Name).ToList(); if (!wallTypesNames.Contains("newWallTypeName")) { newWallType = wallType.Duplicate("newWallTypeName") as WallType; } else { newWallType = wallType.Duplicate("newWallTypeName2") as WallType; } CompoundStructure cs = newWallType.GetCompoundStructure(); IList <CompoundStructureLayer> layers = cs.GetLayers(); int layerIndex = 0; foreach (CompoundStructureLayer csl in layers) { double layerWidth = csl.Width * 2; if (cs.GetRegionsAssociatedToLayer(layerIndex).Count == 1) { try { cs.SetLayerWidth(layerIndex, layerWidth); } catch { throw new ErrorMessageException(Tools.LangResMan.GetString("roomFinishes_verticallyCompoundError", Tools.Cult)); } } else { throw new ErrorMessageException(Tools.LangResMan.GetString("roomFinishes_verticallyCompoundError", Tools.Cult)); } layerIndex++; } newWallType.SetCompoundStructure(cs); return(newWallType); }
private WallType CreateNewWallType(WallType wallType) { WallType newWallType; List <string> wallTypesNames = _wallTypes.Select(o => o.Name).ToList(); if (!wallTypesNames.Contains("newWallTypeName")) { newWallType = wallType.Duplicate("newWallTypeName") as WallType; } else { newWallType = wallType.Duplicate("newWallTypeName2") as WallType; } CompoundStructure cs = newWallType.GetCompoundStructure(); IList <CompoundStructureLayer> layers = cs.GetLayers(); int layerIndex = 0; foreach (CompoundStructureLayer csl in layers) { double layerWidth = csl.Width * 2; if (cs.GetRegionsAssociatedToLayer(layerIndex).Count == 1) { try { cs.SetLayerWidth(layerIndex, layerWidth); } catch { throw new ErrorMessageException(Tools.LangResMan.GetString("roomFinishes_verticallyCompoundError", Tools.Cult)); } } else { throw new ErrorMessageException(Tools.LangResMan.GetString("roomFinishes_verticallyCompoundError", Tools.Cult)); } layerIndex++; } newWallType.SetCompoundStructure(cs); return(newWallType); }