- 积分
- 25214
- 明经币
- 个
- 注册时间
- 2003-6-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2013-11-1 19:10:19
|
显示全部楼层
/// <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;
}
} |
|