Beispiel #1
0
        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; // 是否需要
        }
Beispiel #2
0
        /// <summary>
        /// 初始化PCDmis应用,并设置APPEVENT事件
        /// </summary>
        public void InitialPCDmis()
        {
            ClosePCDmis();
            //try
            //{
            _pcdApplication    = null;
            _pcdProgramManager = null;
            _pcdAppEvents      = null;
            Type t = Type.GetTypeFromProgID("PCDLRN.Application");

            SetPCDmisOffline(t);                                                                   //是否以离线方式启动PCDMIS
            _pcdApplication          = (PCDLRN.Application)Activator.CreateInstance(t);
            _pcdApplication.UserExit = true;                                                       // 用户无法手动退出PCDMIS
            _IsInitialed             = _pcdApplication.WaitUntilReady((int)_timeout.TotalSeconds); // 等待初始化完成
            Thread.Sleep(5000);                                                                    // 等待PCDmils创建完成
            _pcdApplication.Visible = true;
            _pcdProgramManager      = _pcdApplication.PartPrograms;
            _pcdAppEvents           = _pcdApplication.ApplicationEvents;
            _pcdAppEvents.OnCloseExecutionDialog += _pcdAppEvents_OnCloseExecutionDialog;
            _pcdAppEvents.OnClosePartProgram     += _pcdAppEvents_OnClosePartProgram;
            _pcdAppEvents.OnSavePartProgram      += _pcdAppEvents_OnSavePartProgram;
            _pcdApplication.SetActive();
            _IsInitialed = true;
            //}
            //catch (Exception ex)
            //{
            //    // 启动失败的处理方式
            //    throw ex;
            //}
        }
Beispiel #3
0
 /// <summary>
 /// 开启并初始化PCDMIS
 /// </summary>
 public void InitialPCDmis()
 {
     // 关闭先前的PCDMIS
     ClosePCDmis();
     try
     {
         Type t = Type.GetTypeFromProgID("PCDLRN.Application");
         //SetPCDmisOffline(t); //是否以离线方式启动PCDMIS
         _pcdApp          = (PCDLRN.Application)Activator.CreateInstance(t);
         _pcdApp.UserExit = false;
         _pcdApp.Visible  = true;
         if (_pcdApp.SetActive())
         {
             _pcdApp.Maximize();
         }
         _partPrograms = _pcdApp.PartPrograms;
         _pcdAppEvents = _pcdApp.ApplicationEvents;
         _pcdAppEvents.OnCloseExecutionDialog += _pcdAppEvents_OnCloseExecutionDialog;;
     }
     catch (Exception ex)
     {
         // 启动失败的处理方式
     }
     _IsInitialed = true;
 }