public void MeasurePart(string partId) { _currentPartId = partId; string prgFile = FindProgFile(partId); // 返回带扩展名的零件程序 // 正常情况下不会返回空值 Debug.Assert(string.IsNullOrEmpty(prgFile)); _bladeMeasAssist = new BladeMeasAssist(); _bladeMeasAssist.Part = PartConfigManager.Instance.GetPartConfig(partId); // 创建blade.txt文件 _bladeMeasAssist.CreateBladeTxtFromNominal(); try { _partPrograms.CloseAll(); _pcdApp.Maximize(); _pcdApp.SetActive(); _partProgram = _partPrograms.Open(prgFile, _pcdApp.DefaultMachineName /*"CMM1"*/); _partProgram.OnExecuteDialogErrorMsg += _partProgram_OnExecuteDialogErrorMsg; // 获取程序中测尖直径 PCDLRN.OldBasic ob = _partProgram.OldBasic; _bladeMeasAssist.ProbeDiam = 2 * ob.GetProbeRadius(); _bladeMeasAssist.RtfFileName /*_outputFileName*/ = FindOutputFileName(); // 异步执行 _partProgram.AsyncExecute(); } catch (Exception ex) { } _IsMeasured = true; // 是否需要 }
/// <summary> /// 执行零件检测程序 /// </summary> public bool ExecutePartProgram() { if (_IsOpened) { //设置程序事件响应函数 _partProgram.OnExecuteDialogErrorMsg += _partProgram_OnExecuteDialogErrorMsg; // 开启监控线程,判断PCDMIS是否异常退出 _monitorTimer.Start(); _timerStart = DateTime.Now; // 异步执行程序 _ExeOK = _partProgram.AsyncExecute(); } return(_ExeOK); }
/// <summary> /// 定位到CMM的安全位置 /// </summary> /// <param name="movePrg">PCDMIS定位程序名</param> public void CmmMoveToSafePosition(string movePrg) { _pcdApp.SetActive(); _pcdApp.Maximize(); try { _partPrograms.CloseAll(); _partProgram = _partPrograms.Open(movePrg, _pcdApp.DefaultMachineName /*"CMM1"*/); _partProgram?.AsyncExecute(); } catch (Exception ex) { // 移动到安全位置 异常处理 } }