C#lisp函数读取粘贴板,提示错误,如何解决
想写一个供lisp读取粘贴板的函数 ,提示错误ads请求,请帮忙看看原因public string lsp_clipboard(ResultBuffer rb)
{
string rtnstring = "";
try
{
if (rb != null)
{
TypedValue[] TB = rb.AsArray();
if (TB.TypeCode == (int)LispDataType.Text)
{
rtnstring = TB.Value as string;
Clipboard.SetText(rtnstring);
}
}
else
rtnstring = Clipboard.GetText();
}
catch (Autodesk..Runtime.Exception ex)
{ return null; }
return rtnstring;
}
public static object readcb(ResultBuffer rb)
{
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
string str = Clipboard.GetText();
TypedValue ty = new TypedValue();
if (str != null)
{
ty = new TypedValue((int)LispDataType.Text, str);
}
else
{
ty = new TypedValue((int)LispDataType.Nil);
}
return ty;
}
速度的话,C#比lisp要快的多,分别用两种语言写过相同功能的函数,从时间上看应该只用了1/10的时间(个人估算,不同情况下应该不同);不过涉及到lispfunction的时候,很容易出问题,数据类型、精度等等都需要注意,多数时候只能自己一点点调试 @lisp()
def clipboard(doc, args):
from System.Windows.Forms import Clipboard
count = len(args)
if count == 0:
return Clipboard.GetText()
elif count == 1:
Clipboard.SetText(args) 如果是读取剪贴板内容供lisp调用的话,感觉这逻辑反了 谢谢回复,我是想当rb 为空时读取,如果有值写入粘贴板,可是在写入的时候有错误,不知道什么原因,帮忙看看 Clipboard.SetText(rtnstring);这个有问题,但是可以写入粘贴板 试试下面的写法,不确定是否可行
Clipboard.SetDataObject(rtnstring);
这样写可以了 非常感谢 奇怪了,在lisp里面只可以单次执行
这样就会出错
(repeat 10 (MM_clipboard "1235"))找不到问题的原因,请指导一下
页:
[1]
2