/// <summary> /// 导出天花DXF图纸和Cutlist /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void btnExportDxf_Click(object sender, EventArgs e) { if (subAssyExecList.Count == 0) { return; } btnExportDxf.Enabled = false; //计算时间 DateTime startTime = DateTime.Now; tspbStatus.Value = 0; tspbStatus.Step = 1; tspbStatus.Maximum = subAssyExecList.Count; //创建下料图文件夹,默认再D盘MyProjects目录下(先判断文件夹是否存在) string dxfPath = @"D:\MyProjects\" + cobODPNo.Text + @"\DXF-CUTLIST"; if (!Directory.Exists(dxfPath)) { Directory.CreateDirectory(dxfPath); } //以异步的方式开启SolidWorks程序并导图 try { tsslStatus.Text = "正在打开(/连接)SolidWorks程序..."; swApp = await SolidWorksSingleton.GetApplicationAsync(); //遍历execList,创建项目模型存放地址,判断模型类型,查询参数,执行SolidWorks foreach (var item in subAssyExecList) { tsslStatus.Text = "子装配体(" + item.SubAssyName + ")正在导图..."; //以异步的方式执行,让窗口可操作并且进度条更新 await exportCeilingDxfAsync(item, dxfPath, Program.ObjCurrentUser.UserId); tspbStatus.Value += 1; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { swApp.CommandInProgress = false;//及时关闭外部命令调用,否则影响SolidWorks的使用 } TimeSpan timeSpan = DateTime.Now - startTime; tsslStatus.Text = "导出DXF图完成,总共耗时:" + timeSpan.TotalSeconds + "秒"; tspbStatus.Value = subAssyExecList.Count; //btnSubAll_Click(null, null);//清除执行数据 foreach (var item in subAssyExecList) { subAssyWaitingList.Add(item); } subAssyExecList.Clear(); btnExportDxf.Enabled = true; }
/// <summary> /// 执行SolidWorks作图程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void btnExec_Click(object sender, EventArgs e) { if (execList.Count == 0) { return; } btnExec.Enabled = false; //计算时间 DateTime startTime = DateTime.Now; tspbStatus.Value = 0; tspbStatus.Step = 1; tspbStatus.Maximum = execList.Count; //创建项目文件夹,默认再D盘MyProjects目录下(先判断文件夹是否存在) string projectPath = @"D:\MyProjects\" + cobODPNo.Text; if (!Directory.Exists(projectPath)) { Directory.CreateDirectory(projectPath); } //以异步的方式开启SolidWorks程序并自动作图 try { tsslStatus.Text = "正在打开(/连接)SolidWorks程序..."; swApp = await SolidWorksSingleton.GetApplicationAsync(); //遍历execList,创建项目模型存放地址,判断模型类型,查询参数,执行SolidWorks foreach (var item in execList) { tsslStatus.Text = item.Item + "(" + item.Module + ")正在作图..."; //6.根据工厂提供的选择,执行具体的接口实现方式 //以异步的方式执行,让窗口可操作并且进度条更新 await AutoDrawingAsync(item, projectPath); tspbStatus.Value += 1; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { swApp.CommandInProgress = false;//及时关闭外部命令调用,否则影响SolidWorks的使用 } TimeSpan timeSpan = DateTime.Now - startTime; tsslStatus.Text = "作图完成,总共耗时:" + timeSpan.TotalSeconds + "秒"; tspbStatus.Value = execList.Count; btnSubAll_Click(null, null);//清除执行数据 btnExec.Enabled = true; }
/// <summary> /// 导出天花烟罩发货清单按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void btnCeilingPackingList_Click(object sender, EventArgs e) { //计算时间 DateTime startTime = DateTime.Now; tspbStatus.Value = 0; tspbStatus.Step = 1; tspbStatus.Maximum = 2; btnCeilingPackingList.Enabled = false; List <CeilingAccessory> ceilingAccessoriesList = null; List <CeilingAccessory> ceilingPackingList = null; if (dgvCeilingPackingList.RowCount > 0) { DialogResult result = MessageBox.Show("发货清单有内容,标准配件将不会重复添加,如果需要添加标准件请手动添加或者删除本数据后再生成发货清单,继续请按YES,不生成发货清单请按NO?", "生成发货清单询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.No) { btnCeilingPackingList.Enabled = true; return; } } else { //【1】查询项目的所有配件部分 if (txtTypeName.Text == "日本项目") { ceilingAccessoriesList = objCeilingAccessoryService.GetCeilingAccessoriesForJapan(); } else { ceilingAccessoriesList = objCeilingAccessoryService.GetCeilingAccessoriesForNotJapan(); } foreach (var item in ceilingAccessoriesList) { item.ProjectId = objProject.ProjectId; item.UserId = Program.ObjCurrentUser.UserId; item.Location = objDrawingPlanService.GetDrawingPlanByProjectId(objProject.ProjectId.ToString())[0].Item; } //将查询到的标准配件统一提交到SQL服务器 objCeilingAccessoryService.ImportCeilingPackingListByTran(ceilingAccessoriesList); } tspbStatus.Value = 1; //【2】打开装配体,获得所有零件名,查询配件和数量导入SQL //预先将装配体的关键字写入到零件中 //以异步的方式开启SolidWorks程序并导图 try { tsslStatus.Text = "正在打开(/连接)SolidWorks程序..."; swApp = await SolidWorksSingleton.GetApplicationAsync(); //执行SolidWorks,打开总装并执行导出发货清单程序 tsslStatus.Text = "正在导出发货清单..."; //以异步的方式执行,让窗口可操作并且进度条更新 await exportCeilingPackingListAsync(txtMainAssyPath.Text, objProject); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { swApp.CommandInProgress = false;//及时关闭外部命令调用,否则影响SolidWorks的使用 } //更新发货清单显示 dgvCeilingPackingList.DataSource = objCeilingAccessoryService.GetCeilingPackingListByProjectId(objProject.ProjectId.ToString()); //MessageBox.Show("发货清单导出成功!", "提示信息"); TimeSpan timeSpan = DateTime.Now - startTime; tsslStatus.Text = "导出发货清单完成,总共耗时:" + timeSpan.TotalSeconds + "秒"; tspbStatus.Value = 2; btnCeilingPackingList.Enabled = true; }