yanghao1 发表于 2009-8-28 12:32:00

如果去掉函数A(),则SendStringToExecute能正常执行,否则几乎没有响应,如何解决。

如果去掉函数A(),则SendStringToExecute能正常执行,否则几乎没有响应,如何解决。看函数:<p>private void looh()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InsertBlock("c:\\3.dwg", new Point3d(1000, 1000, 0));</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document acDoc = Application.DocumentManager.MdiActiveDocument;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acDoc.SendStringToExecute("._zoom e ", true, false, false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>如果去掉函数A(),则acDoc.SendStringToExecute("._zoom e ", true, false, false)能正常执行,<br/>如果执行函数A(),则acDoc.SendStringToExecute("._zoom e ", true, false, false)几乎没有反应,<br/>那位遇到过这个问题,是如何解决的。<br/></p>

雪山飞狐_lzh 发表于 2009-8-28 12:41:00

<p>还是那句话:SendStringToExecute不要用</p><p>要么平台调用Arx的acedCommand方法</p><p>要么用代码实现</p><p>代码实现的方法:</p><p>1、调用Com接口,AcadApplication有ZoomXXX方法</p><p>2、仔细看下手册,提供了Zoom命令的实现代码!</p>

yanghao1 发表于 2009-8-28 14:42:00

lzh741206发表于2009-8-28 12:41:00static/image/common/back.gif还是那句话:SendStringToExecute不要用要么平台调用Arx的acedCommand方法要么用代码实现代码实现的方法:1、调用Com接口,AcadApplication有ZoomXXX方法2、仔细看下手册,提供了Zoom命令的实现代

<p></p>

雪山飞狐_lzh 发表于 2009-8-28 16:39:00

下面的代码代码是反射调用Com的代码
当然,你也可以先引用AutoCad的类型库,
然后直接调用Application.AcadApplication.ZoomExtents()方法using System;
using System.Reflection;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;



namespace TlsCad
{
    class TlsTest
    {
      
      public static void ZoomExtents()
      {
            object app = Application.AcadApplication;
            Type acApp = Type.GetTypeFromHandle(Type.GetTypeHandle(app));
            acApp.InvokeMember(
                "ZoomExtents",
                BindingFlags.InvokeMethod,
                null,
                app,
                new object);
      }
    }
}

yanghao1 发表于 2009-8-28 17:24:00

lzh741206发表于2009-8-28 16:39:00static/image/common/back.gif下面的代码代码是反射调用Com的代码当然,你也可以先引用AutoCad的类型库,然后直接调用Application.AcadApplication.ZoomExtents()方法using System;using System.Reflection;using Autodesk.

<p>太有才,谢谢!</p>
页: [1]
查看完整版本: 如果去掉函数A(),则SendStringToExecute能正常执行,否则几乎没有响应,如何解决。