如何用C#调用lisp程序命令啊
我想用C#驱动lisp代码或是lisp做成的fas程序,这样写为何总是不成功啊,不知如何写呢:public void MyPoly()
{
//设置标记并发送PLINE
Document doc = Application.DocumentManager.MdiActiveDocument;
doc.SendStringToExecute("_appload@"D:\s.lsp") ",false,false,false);
}
/// <summary>
/// 调用Lisp函数
/// Version:2012.03.01 Sieben
/// 注1:Lisp函数需要使用vl-acad-defun 进行注册才能从外部调用
/// Exm:
/// Lisp 的函数定义和注册
/// (defun testfunc (a) (princ "\nTESTFUNC called:" ) (prin1 a) )
/// (vl-acad-defun 'testfunc)
/// 调用Lisp函数举例
/// ResultBuffer args = new ResultBuffer();
/// int stat = 0;
/// args.Add(new TypedValue((int)LispDataType.Text, "testfunc"));
/// args.Add(new TypedValue((int)LispDataType.Text, "abc"));
///InvokeLispFun(args, ref stat);
/// </summary>
/// <param name="resBuf">输入链表,表头应该是Lisp函数名,后面是Lisp函数实参</param>
/// <param name="status">Lisp函数返回状态,成功返回RTNORM(5100),失败返回NULL(0)</param>
/// <returns>Lisp函数的返回值</returns>
public static ResultBuffer InvokeLispFun(ResultBuffer resBuf, ref int status)
{
IntPtr rb = IntPtr.Zero;
status = acedInvoke(resBuf.UnmanagedObject, out rb);
if (status == (int)PromptStatus.OK && rb != IntPtr.Zero)
{
return (ResultBuffer)DisposableWrapper.Create(typeof(ResultBuffer), rb, true);
}
else
{
return null;
}
}
extern static publicint acedInvoke(IntPtr args, out IntPtr result); 至于ObjectARX.Net对Lisp装载,我也没搞过,也没搞明白
我碰到过一个这样的问题,即在dll初始化过程即Initialize()函数里面无法调用Lisp函数,即使过程显示Lisp文件已经装载.Initialize()执行完之后,命令开始前可以调用Lisp函数 http://hi.baidu.com/swaywood/item/d5ef8b2365bb7e98b7326346 另外提供两种方法,.net程序中同步地调用command:
http://www.cnblogs.com/swtool/p/SWTOOL_00012.html 建议看一下 http://bbs.mjtd.com/thread-109357-1-1.html , 这样可以同步调用。
页:
[1]