public override void Command2(SubMenuBase menu) { var saveFileDialog = new Microsoft.Win32.SaveFileDialog() { Filter = "Result Files (*.calc)|*.calc", }; if (saveFileDialog.ShowDialog() != true) { return; } GlobalInfo globalInfo = GlobalInfo.GetInstance(); //StruCalsParas中塔位数据,是在点击这个塔位的页面后才加载的GlobalInfo中, //下面代码针对的是,没有打开这个塔位的页面而直接进行计算的情况 if (globalInfo.StruCalsParas.Where(item => item.TowerName == ((SubMenuBase)menu).Title && item.SequenceName == ((StrCalsModuleSubMenu)menu).Sequence).Count() <= 0) { if (((StrCalsModuleSubMenu)menu).Sequence == "") { ProjectUtils.GetInstance().ReadStruCalsTowerParas(((SubMenuBase)menu).Title); } else { ProjectUtils.GetInstance().ReadStruCalsTowerParas(((SubMenuBase)menu).Title, ((StrCalsModuleSubMenu)menu).Sequence); } } StruCalsParasCompose paras = globalInfo.StruCalsParas.Where(para => para.TowerName == ((SubMenuBase)menu).Title && para.SequenceName == ((StrCalsModuleSubMenu)menu).Sequence).FirstOrDefault(); if (paras == null) { return; } ConvertSpecToWorkCondition(paras.Template, paras.WorkConditions, true); string path = saveFileDialog.FileName.Substring(0, saveFileDialog.FileName.Length - 5); for (int i = 0; i < paras.HPSettingsParas.Count(); i++) { LoadComposeBase loadCompose; if (paras.BaseParas.Type == TowerTypeEnum.LineTower) { loadCompose = new LoadComposeLineTower(paras.BaseParas, paras.LineParas.ToArray(), paras.HPSettingsParas[i], paras.Template, paras.ElectricalLoadFilePath); } else if (paras.BaseParas.Type == TowerTypeEnum.LineCornerTower) { loadCompose = new LoadComposeLineCornerTower(paras.BaseParas, paras.LineParas.ToArray(), paras.HPSettingsParas[i], paras.Template, paras.ElectricalLoadFilePath); } //剩下的都属于耐张塔 else { loadCompose = new LoadComposeTensionTower(paras.BaseParas, paras.LineParas.ToArray(), paras.HPSettingsParas[i], paras.Template, paras.ElectricalLoadFilePath); } paras.ResultPointLoad.AddRange(loadCompose.LoadCaculate(path)); } }
/// <summary> /// 结构计算中塔位的参数来源两个: /// 1 新增塔位,在增加新塔时,已经将数据加入到globalInfo, /// 2 原来已有塔位,塔位数据是逐步加载的,只有在需要查看这个塔位时,才会去配置文件中读取到 /// 针对这两种情况,首先在globalInfo中找到对应的数据; /// 如果找不到,要从配置文件中将相应塔位数据读取到globalInfo中 /// </summary> /// <param name="towerName"></param> protected virtual void InitializeData(string towerName) { var globalInfo = GlobalInfo.GetInstance(); string sequence = ""; if (towerName.Contains("*")) { int pos = towerName.IndexOf('*'); TowerName = towerName.Substring(0, pos); sequence = towerName.Substring(pos + 1); } else { TowerName = towerName; } if (globalInfo.StruCalsParas.Where(item => item.TowerName == towerName).Count() <= 0) { if (sequence == "") { ProjectUtils.GetInstance().ReadStruCalsTowerParas(towerName); } else { ProjectUtils.GetInstance().ReadStruCalsTowerParas(towerName, sequence); } } int index = globalInfo.StruCalsParas.FindIndex(para => para.TowerName == towerName && para.SequenceName == sequence); if (index < 0) { return; } struCalsParas = globalInfo.StruCalsParas[index]; }
public StruTemplateEditViewModel(TowerTemplate template, bool isReadOnly = true) { oldName = template.Name; oldType = template.TowerType; _template = template; IsReadOnly = isReadOnly; #region 导地线的初始化 TemplateWire wire = new TemplateWire(); wire.Wire = new string[16]; List<Column> wireColumns = new List<Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Name", Header = "序号", AllowEditing = (!isReadOnly).ToString(), }, }; if (template.Wires != null) { for(int i = 0; i < template.Wires.Count; i++) { WireNum++; wire.Wire[i] = template.Wires[i]; wireColumns.Add(new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Wire[" + i.ToString() + "]", Header = (i + 1).ToString(), AllowEditing = (!isReadOnly).ToString(), }); SetWireVisbility(WireNum); } } Wires = new ObservableCollection<TemplateWire>(); Wires.Add(wire); WireColumns = new ObservableCollection<Column>(wireColumns); #endregion #region 工况的初始化 TemplateWorkCondition workCondition = new TemplateWorkCondition(); workCondition.WorkCondition = new string[16]; List<Column> workConditionColumns = new List<Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Name", Header = "序号", AllowEditing = (!isReadOnly).ToString(), }, }; if (template.WorkConditongs != null) { for (int i = 0; i < template.WorkConditongs.Count; i++) { WorkConditionNum++; workCondition.WorkCondition[i] = template.WorkConditongs[i+1]; workConditionColumns.Add(new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WorkCondition[" + i.ToString() + "]", Header = (i + 1).ToString(), AllowEditing = (!isReadOnly).ToString(), }); } } WorkConditions = new ObservableCollection<TemplateWorkCondition>(); WorkConditions.Add(workCondition); WorkConditionColumns = new ObservableCollection<Column>(workConditionColumns); #endregion #region 工况的初始化 WorkConditionCombos = new ObservableCollection<WorkConditionComboSpec>(StruCalsParasCompose.ConvertTemplateToSpec(template)); //List<Column> workConditionComboColumns = new List<Column>(); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "Index", // Header = "序号", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "IsCalculate", // Header = "选择与否", // Width = "2*", // AllowEditing = (!isReadOnly).ToString(), //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "WorkConditionCode", // Header = "工况", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "TensionAngleCode", // Header = "张力角", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), // Visible = "{Binding IsTensionAngleVisible}" //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "VertialLoadCode", // Header = "垂直载荷", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), // Visible = "{Binding IsVertialLoadCodeVisible}" //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "WindDirectionCode", // Header = "风向", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), //}); //for (int i = 0; i < template.Wires.Count; i++) //{ // workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "Wire" + (i + 1).ToString(), // Header = template.Wires[i], // Width = "*", // AllowEditing = (!isReadOnly).ToString(), // }); //} //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "WorkCode", // Header = "工况代码", // Width = "*", // AllowEditing = (!isReadOnly).ToString(), //}); //workConditionComboColumns.Add(new HeaderColumn() { // Settings = SettingsType.Binding, // FieldName = "WorkComment", // Header = "注释", // Width = "6*", // AllowEditing = (!isReadOnly).ToString(), //}); //WorkConditionComboColumns = new ObservableCollection<Column>(workConditionComboColumns); #endregion }
public override void Command3(SubMenuBase menu) { var loadFileDialog = new Microsoft.Win32.OpenFileDialog() { Filter = "Load Files (*.load)|*.load", }; if (loadFileDialog.ShowDialog() != true) { return; } string stQtPath = GlobalInfo.GetInstance().GetSmartTowerPath(); if (stQtPath == null || stQtPath == "") { MessageBox.Show(" 请设置SmartTower程序的路径!"); return; } if (!File.Exists(stQtPath)) { MessageBox.Show("无法找到SmartTower,请设置它的路径!"); return; } string stConsolePath = stQtPath.Substring(0, stQtPath.LastIndexOf("\\")) + "\\" + ConstVar.SmartTowerConsoleName; if (!File.Exists(stConsolePath)) { return; } string mode = GlobalInfo.GetInstance().GetSmartTowerMode().ToString(); GlobalInfo globalInfo = GlobalInfo.GetInstance(); if (globalInfo.StruCalsParas.Where(item => item.TowerName == ((SubMenuBase)menu).Title && item.SequenceName == ((StrCalsModuleSubMenu)menu).Sequence).Count() <= 0) { if (((StrCalsModuleSubMenu)menu).Sequence == null) { ProjectUtils.GetInstance().ReadStruCalsTowerParas(((SubMenuBase)menu).Title); } else { ProjectUtils.GetInstance().ReadStruCalsTowerParas(((SubMenuBase)menu).Title, ((StrCalsModuleSubMenu)menu).Sequence); } } StruCalsParasCompose paras = globalInfo.StruCalsParas.Where(para => para.TowerName == ((SubMenuBase)menu).Title && para.SequenceName == ((StrCalsModuleSubMenu)menu).Sequence).FirstOrDefault(); if (paras == null) { return; } string path = paras.FullStressTemplatePaths[0]; if (!File.Exists(path)) { return; } SmartTowerInputGenerator.InputGenerator(loadFileDialog.FileName, path); string stParas = path + " " + mode; //string stParas1 = "C:\\Users\\zhifei\\Desktop\\测试\\StruCals\\直线塔7\\满应力分析\\Z31.dat 0"; //0: 正常计算 1:基础作用力BetaZ=1 2:基础作用力betaZ=-1/2+1 不容许有空格 ProcessStartInfo startInfo = new ProcessStartInfo(stConsolePath, stParas); //startInfo.UseShellExecute = false; //startInfo.CreateNoWindow = true; Process process = new Process(); process.StartInfo = startInfo; process.Start(); process.WaitForExit(); //} TowerMemberBLL memberBLL = new TowerMemberBLL(); string outPath = path.Substring(0, path.LastIndexOf(".")) + ".out"; paras.ResultFullStess = memberBLL.TextFileReadAll(outPath).ToList(); }
protected HangingPoint(string title, StruCalsParasCompose calsParas) { Title = title; Template = calsParas.Template; HPSetitingParas = calsParas.HPSettingsParas.Where(item => item.HangingPointSettingName == title).FirstOrDefault(); BaseParas = calsParas.BaseParas; NormalXYPoints = new ObservableCollection <HangingPointParas>(HPSetitingParas.NormalXYPoints); NormalZPoints = new ObservableCollection <HangingPointParas>(HPSetitingParas.NormalZPoints); InstallXYPoints = new ObservableCollection <HangingPointParas>(HPSetitingParas.InstallXYPoints); InstallZPoints = new ObservableCollection <HangingPointParas>(HPSetitingParas.InstallZPoints); TurningPoints = new ObservableCollection <HangingPointParas>(HPSetitingParas.TurningPoints); VStrings = new ObservableCollection <VStringParas>(HPSetitingParas.VStrings); List <string> normalSource = new List <string> { "无跳线", "常规", "悬臂", "I串", "V1", "V2", "V3" }; List <Column> normalXYColumns = new List <Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Index", Header = "序号" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WireType", Header = "项目" }, new ComboColumn() { Settings = SettingsType.Combo, FieldName = "StringType", Header = "串型", Source = normalSource } }; NormalXYColumns = new ObservableCollection <Column>(normalXYColumns); int hpNum = GetMaxHPNum(HPSetitingParas.NormalXYPoints); if (hpNum == 0) { hpNum = 1; } for (int i = 0; i < hpNum; i++) { AddNormalXYPoint(); } List <Column> normalZColumns = new List <Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Index", Header = "序号" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WireType", Header = "项目" }, new ComboColumn() { Settings = SettingsType.Combo, FieldName = "StringType", Header = "串型", Source = normalSource } }; NormalZColumns = new ObservableCollection <Column>(normalZColumns); hpNum = GetMaxHPNum(HPSetitingParas.NormalZPoints); if (hpNum == 0) { hpNum = 1; } for (int i = 0; i < hpNum; i++) { AddNormalZPoint(); } List <Column> installXYColumns = new List <Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Index", Header = "序号" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WireType", Header = "项目" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Array", Header = "组数" } }; InstallXYColumns = new ObservableCollection <Column>(installXYColumns); hpNum = GetMaxHPNum(HPSetitingParas.InstallXYPoints); if (hpNum == 0) { hpNum = 1; } for (int i = 0; i < hpNum; i++) { AddInstallXYPoint(); } List <Column> intallZColumns = new List <Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Index", Header = "序号" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WireType", Header = "项目" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Array", Header = "组数" } }; InstallZColumns = new ObservableCollection <Column>(intallZColumns); hpNum = GetMaxHPNum(HPSetitingParas.InstallZPoints); if (hpNum == 0) { hpNum = 1; } for (int i = 0; i < hpNum; i++) { AddInstallZPoint(); } List <Column> turningColumns = new List <Column>() { new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Index", Header = "序号" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "WireType", Header = "项目" }, new HeaderColumn() { Settings = SettingsType.Binding, FieldName = "Angle", Header = "方向角" } }; TurningColumns = new ObservableCollection <Column>(turningColumns); hpNum = GetMaxHPNum(HPSetitingParas.TurningPoints); if (hpNum == 0) { hpNum = 1; } for (int i = 0; i < hpNum; i++) { AddTurningPoint(); } }
public static HangingPoint Create(string title, StruCalsParasCompose calsParas) { return(ViewModelSource.Create(() => new HangingPoint(title, calsParas))); }
public void TestMethod01_StruCalsParasSerializer() { var saveFileDialog = new Microsoft.Win32.SaveFileDialog() { Filter = "XML Files (*.xml)|*.xml", }; if (saveFileDialog.ShowDialog() != true) { return; } StruCalseBaseParas formulaParas = new StruCalseBaseParas(); formulaParas.Type = TowerTypeEnum.LineTower; formulaParas.LoadRatio = 1; //结构重要性系数 formulaParas.R1Install = 1f; formulaParas.R0Normal = 1.1f; //荷载分项系数 formulaParas.RGBad = 1.3f; formulaParas.RGGood = 1.05f; formulaParas.RQ = 1.5f; //formulaParas.RGCheck01 = 1.3f; //可变荷载组合系数 formulaParas.VcFNormal = 1.1f; formulaParas.VcFInstall = 0.95f; formulaParas.VcFBroken = 0.95f; formulaParas.VcFUnevenIce = 0.95f; formulaParas.VcFCheck = 0.8f; //其他参数 formulaParas.WindAdjustFactor = 1.3f; formulaParas.OtherWindAdjustFactor = 0.95f; formulaParas.DynamicCoef = 1.2f; formulaParas.AnchorWindCoef = 0.8f; formulaParas.AnchorGravityCoef = 0.8f; formulaParas.AnchorAngle = 25f; StruLineParas[] lineParas = new StruLineParas[] { new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 4, AnchorTension = 61.20f, PulleyTensionDif = 0, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 4, AnchorTension = 61.20f, PulleyTensionDif = 0, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f }, new StruLineParas { HoistingCoef = 2.5f, WireExtraLoad = 8, AnchorTension = 375.23f, PulleyTensionDif = 50, DrawingCoef = 1.3f } }; List <HangingPointParas> normalList = new List <HangingPointParas>() { new HangingPointParas() { Index = 1, WireType = "左地", StringType = "常规", Points = new string[] { "91", "93" } }, new HangingPointParas() { Index = 2, WireType = "右地", StringType = "常规", Points = new string[] { "90", "92" } }, new HangingPointParas() { Index = 3, WireType = "左上导", StringType = "I串", Points = new string[] { "291" } }, new HangingPointParas() { Index = 4, WireType = "右上导", StringType = "I串", Points = new string[] { "290" } }, new HangingPointParas() { Index = 5, WireType = "左中导", StringType = "I串", Points = new string[] { "671", "673" } }, new HangingPointParas() { Index = 6, WireType = "右中导", StringType = "I串", Points = new string[] { "670", "672" } }, new HangingPointParas() { Index = 7, WireType = "左下导", StringType = "I串", Points = new string[] { "1111", "1113" } }, new HangingPointParas() { Index = 8, WireType = "右下导", StringType = "I串", Points = new string[] { "1110", "1112" } }, }; List <HangingPointParas> installList = new List <HangingPointParas>() { new HangingPointParas() { Index = 1, WireType = "左上导", Array = "第a组", Points = new string[] { "1", "2" } }, new HangingPointParas() { Index = 2, WireType = "右上导", Array = "第a组", Points = new string[] { "3", "4" } }, new HangingPointParas() { Index = 3, WireType = "左中导", Array = "第a组", Points = new string[] { "11", "22" } }, new HangingPointParas() { Index = 4, WireType = "右中导", Array = "第a组", Points = new string[] { "33", "44" } }, new HangingPointParas() { Index = 5, WireType = "左下导", Array = "第a组", Points = new string[] { "111", "222" } }, new HangingPointParas() { Index = 6, WireType = "右下导", Array = "第a组", Points = new string[] { "333", "444" } }, }; HangingPointSettingParas ratioParas = new HangingPointSettingParas() { GCQ = 0.5f, GCH = 0.5f, GXN = -1, GXW = 2, DQWQ = 0.5f, DQWH = 0.5f, DQCQ = 0.6f, DQCH = 0.4f, DDWQ = 0.5f, DDWH = 0.5f, DDCQ = 0.6f, DDCH = 0.4f, DMWQ = 0.5f, DMWH = 0.5f, DMCQ = 0.6f, DMCH = 0.4f, NormalXYPoints = normalList, NormalZPoints = normalList, InstallXYPoints = installList, InstallZPoints = installList, }; XmlUtils.Serializer(saveFileDialog.FileName, new StruCalsParasCompose(formulaParas, new List <StruLineParas>(lineParas), new List <HangingPointSettingParas> { ratioParas, })); StruCalsParasCompose calsParas = XmlUtils.Deserializer <StruCalsParasCompose>(saveFileDialog.FileName); }