zoukankan      html  css  js  c++  java
  • Civil3D二次开发 启动Civil3D异常

    用Com方式启动Civil3D时,经常会在第一次启动时出现各种异常.

    1. RPC_E_CALL_REJECTED 0x80010001 被呼叫方拒绝接收呼叫

    解决方案:外部程序通过COM启动AutoCAD时RPC_E_CALL_REJECTED的问题解决办

    2. CO_E_SERVER_EXEC_FAILURE  0x80080005 服务器运行异常

     一般会在第一次启动的时候出现,第二次启动的时候就好了.网上查找了很多资料,没有找到好的解决方案.可能跟具体的系统配置有关系.

    解决办法,可以放在循环当中多次执行启动步骤.

     1         int runCount = 0;
     2             Autodesk.AutoCAD.Interop.AcadApplication cadApp = null;
     3             while (true) {
     4                 runCount++;
     5                 try {
     6                     //Get the AutoCAD which is running
     7                     cadApp = (Autodesk.AutoCAD.Interop.AcadApplication)Marshal.GetActiveObject(programID);
     8                     break;
     9                 } catch {
    10                     try {
    11                         Type sType = Type.GetTypeFromProgID(programID);
    12                         cadApp = (Autodesk.AutoCAD.Interop.AcadApplication)Activator.CreateInstance(sType, true);
    13                         cadApp.Visible = true;
    14                         break;
    15                     } catch (Exception ex) {
    16                         //MessageBox.Show(string.Format("第{0}次启动CAD失败", runCount));
    17                         if (runCount >= 3) {
    18                             MessageBox.Show("不能打开Civil3D. 
     错误信息 : " + ex.Message);
    19                             break;
    20                         }
    21                     }
    22                 }
    23             }
    View Code

    3. RPC_E_SERVERFAULT  0x80010105 服务器出现意外情况.

       0x800706BE 远程过程调用失败   

    这两个错误是在上一行的代码的基础上出现的.

    出现这个问题的步骤:

       1. 第一次成功启动程序,2.关闭CAD并在此运行启动程序.

    1 cadApp = (Autodesk.AutoCAD.Interop.AcadApplication)Marshal.GetActiveObject(programID);
    View Code

        注意这一行代码,这个是说,如果当前打开的有CAD的实例,就获得当前实例程序,不再重新打开实例.在执行第二步时,如果在CAD程序还没有关闭时,代码就运行到这一行代码,就会出现问题了.代码中已经获得当前实例,但是当前实例却是正在被关闭的.就会出现各种问题了.

     

  • 相关阅读:
    对svn分支合并类型和深度的理解
    SVN中trunk,branches,tags用法详解
    如何从dump中查找ASP.NET Session的数据【转】
    c++学习笔记
    柳永教授嫖娼案庭审记录
    C++资源之不完全导引(转载)
    不讨老婆之“不亦快哉”(三十三则)(李敖)
    在一个ajax extender 工程中实现多个 ajax extender 控件的方法
    Creating a new extender(zz)
    打标签
  • 原文地址:https://www.cnblogs.com/zhangliming/p/3277444.html
Copyright © 2011-2022 走看看