//调用AutoCAD命令,ARX原型:int acedCmdS(const struct resbuf * rbp);
[DllImport("accore.dll", EntryPoint = "acedCmdS", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
private extern static int acedCmdS(IntPtr rbp);
/// <summary>
/// 调用C++的acedCmdS函数
/// </summary>
/// <param name="ed">无意义,只是为了定义扩展函数</param>
/// <param name="args">命令参数列表</param>
/// <returns>返回命令执行的状态</returns>
public static int AcedCmdS(this Editor ed, ResultBuffer args)
{
//由于acedCmd只能在程序环境下运行,因此需调用此语句
if (!Application.DocumentManager.IsApplicationContext)
return acedCmdS(args.UnmanagedObject);
else
return 0;
}
由于cad2016里AcedCmd改成了AcedCmdS,Accore.dll也是2013版本后才开始改的。
所以按照书上的代码运行就不会有效果。