public HangingPointLoadComposeBase(int i, int j, string orient, float[,] xLoad, float[,] yLoad, float[,] zLoad, string group, string link, List <HangingPointParas> pointsParas, HangingPointSettingParas raios, TowerTemplate template, List <StruCalsDicGroup> dicGrps) { iIndex = i; jIndex = j; orientation = orient; xLineLoad = xLoad; yLineLoad = yLoad; zLineLoad = zLoad; if (orient == "X") { lineLoad = xLoad; } else if (orient == "Y") { lineLoad = yLoad; } else { lineLoad = zLoad; } ratioParas = raios; towerTemplate = template; wireType = towerTemplate.Wires[i]; wd = towerTemplate.WorkConditionCombos[j]; StruCalsDicGroup dicGroup = new StruCalsDicGroup(); if (link.Contains("常规")) { pointParas = pointsParas.Where(item => item.WireType == wireType).First(); string vStr = pointParas.StringType.Contains("V") ? "V串" : pointParas.StringType; dicGroup = dicGrps.Where(item => item.Group == group && item.FixedType == vStr && item.Link == link).First(); } else if (link.Contains("转向")) { pointParas = pointsParas.Where(item => item.WireType == wireType).First(); dicGroup = dicGrps.Where(item => item.Group == group && item.Link == link).First(); } else { string wCC = template.WorkConditionCombos[jIndex].WorkConditionCode; string array = wCC.Substring(wCC.Length - 1); pointParas = pointsParas.Where(item => item.WireType == wireType && item.Array != null && item.Array.Contains(array)).First(); dicGroup = dicGrps.Where(item => item.Group == group && item.Link == link).First(); } option = dicGroup.Options.Where(item => item.Num == pointParas.PointNum).First(); dicComposeInfo = option.ComposrInfos.Where(item => item.Orientation == orientation).First().PointCompose; }
protected void SetParas(string link, string orientation) { StruCalsDicGroup dicGroup; //常规挂点 if (link.Contains("常规")) { //悬垂塔常规挂点XY和Z向分别来自NormalXYPoints和NormalZPoints if (!isTensionTower) { if (orientation == "X" || orientation == "Y") { pointParas = hpPointsParas.NormalXYPoints.Where(item => item.WireType == wireType).First(); } else { pointParas = hpPointsParas.NormalZPoints.Where(item => item.WireType == wireType).First(); } } //耐张塔常规导线挂点XYZ向全部来做NormalXYPoints, 常规跳线挂点XYZ向全部来做NormalZPoints else { if (!link.Contains("跳线")) { pointParas = hpPointsParas.NormalXYPoints.Where(item => item.WireType == wireType).First(); } else { pointParas = hpPointsParas.NormalZPoints.Where(item => item.WireType == wireType).First(); } } string vStr = pointParas.StringType.Contains("V") ? "V串" : pointParas.StringType; dicGroup = dicGroupOptions.Where(item => item.Group == group && item.FixedType == vStr && item.Link == link).First(); } //转向和过滑车挂点 else if (link.Contains("转向") || link.Contains("过滑车")) { //转向和过滑车挂点XYZ向都来自TurningPoints pointParas = hpPointsParas.TurningPoints.Where(item => item.WireType == wireType).First(); dicGroup = dicGroupOptions.Where(item => item.Group == group && item.Link == link).First(); } //吊装挂点 else { List <HangingPointParas> pointsParas; //悬垂塔吊装挂点XY和Z向分别来自InstallXYPoints和InstallZPoints //耐张塔跳线吊装挂点XY和Z向分别来自InstallXYPoints和InstallZPoints if (orientation == "X" || orientation == "Y") { pointsParas = hpPointsParas.InstallXYPoints; } else { pointsParas = hpPointsParas.InstallZPoints; } //吊装挂点会分a/b/c组,需要找到对应组别的挂点信息 string wCC = towerTemplate.WorkConditionCombos[jIndex].WorkConditionCode; string array = wCC.Substring(wCC.Length - 1); pointParas = pointsParas.Where(item => item.WireType == wireType && item.Array != null && item.Array.Contains(array)).First(); if (!isTensionTower) { //悬垂塔的吊装挂点全部按照I串 dicGroup = dicGroupOptions.Where(item => item.Group == group && item.Link == link).First(); } else { //耐张塔需要区分I串V串两种情况 string vStr = pointParas.StringType.Contains("V") ? "V串" : pointParas.StringType; dicGroup = dicGroupOptions.Where(item => item.Group == group && item.FixedType == vStr && item.Link == link).First(); } } option = dicGroup.Options.Where(item => item.Num == pointParas.PointNum).First(); dicComposeInfo = option.ComposrInfos.Where(item => item.Orientation == orientation).First().PointCompose; }
public static List <StruCalsDicGroup> Read(String path) { List <StruCalsDicGroup> groups = new List <StruCalsDicGroup>(); if (!File.Exists(path)) { return(groups); } XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode rootNode = doc.GetElementsByTagName("Root")[0]; if (rootNode == null) { return(groups); } foreach (XmlNode groupNode in rootNode.ChildNodes) { StruCalsDicGroup group = new StruCalsDicGroup() { Group = groupNode.Attributes["Group"].Value.ToString(), Name = groupNode.Attributes["Name"].Value.ToString(), Wire = groupNode.Attributes["Wire"].Value.ToString(), FixedType = groupNode.Attributes["FixedType"].Value.ToString(), ForceDirection = groupNode.Attributes["ForceDirection"].Value.ToString(), Link = groupNode.Attributes["Link"].Value.ToString() }; if (groupNode.Attributes["TWireNum"] != null) { group.TWireNum = groupNode.Attributes["TWireNum"].Value.ToString(); } group.Options = new List <StruCalsDicOption>(); foreach (XmlNode optNode in groupNode.ChildNodes) { StruCalsDicOption opt = new StruCalsDicOption() { Num = Convert.ToInt32(optNode.Attributes["挂点个数"].Value.ToString()), }; if (optNode.Attributes["左侧挂点"] != null) { opt.LeftPoints = Regex.Split(optNode.Attributes["左侧挂点"].Value.ToString().Trim(), "\\s+"); } if (optNode.Attributes["右侧挂点"] != null) { opt.RightPoints = Regex.Split(optNode.Attributes["右侧挂点"].Value.ToString().Trim(), "\\s+"); } if (optNode.Attributes["前侧挂点"] != null) { opt.FrontPoints = Regex.Split(optNode.Attributes["前侧挂点"].Value.ToString().Trim(), "\\s+"); } if (optNode.Attributes["后侧挂点"] != null) { opt.BackPoints = Regex.Split(optNode.Attributes["后侧挂点"].Value.ToString().Trim(), "\\s+"); } if (optNode.Attributes["中部挂点"] != null) { opt.CentralPoints = Regex.Split(optNode.Attributes["中部挂点"].Value.ToString().Trim(), "\\s+"); } opt.ComposrInfos = new List <StruCalsDicComposeInfo>(); foreach (XmlNode composeNode in optNode.ChildNodes) { StruCalsDicComposeInfo composeInfo = new StruCalsDicComposeInfo() { Orientation = composeNode.Attributes["方向"].Value.ToString() }; composeInfo.PointCompose = new List <string>(); for (int i = 1; i <= opt.Num; i++) { composeInfo.PointCompose.Add(composeNode.Attributes["点" + i.ToString()].Value.ToString()); } opt.ComposrInfos.Add(composeInfo); } group.Options.Add(opt); } groups.Add(group); } return(groups); }