如果去掉函数A(),则SendStringToExecute能正常执行,否则几乎没有响应,如何解决。
如果去掉函数A(),则SendStringToExecute能正常执行,否则几乎没有响应,如何解决。看函数:private void looh(){
InsertBlock("c:\\3.dwg", new Point3d(1000, 1000, 0));
Document acDoc = Application.DocumentManager.MdiActiveDocument;
acDoc.SendStringToExecute("._zoom e ", true, false, false);
A();
}
如果去掉函数A(),则acDoc.SendStringToExecute("._zoom e ", true, false, false)能正常执行,
如果执行函数A(),则acDoc.SendStringToExecute("._zoom e ", true, false, false)几乎没有反应,
那位遇到过这个问题,是如何解决的。
还是那句话:SendStringToExecute不要用
要么平台调用Arx的acedCommand方法
要么用代码实现
代码实现的方法:
1、调用Com接口,AcadApplication有ZoomXXX方法
2、仔细看下手册,提供了Zoom命令的实现代码!
下面的代码代码是反射调用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);
}
}
}
太有才,谢谢!
页:
[1]