本帖最后由 ivde 于 2015-10-13 17:37 编辑
革天明 发表于 2015-10-13 16:28
好像是这个原因,请问如何定义一个.NET函数,参数为int a和int b,结果为a*b,这样的函数如何写?最终还是 ...
- [LispFunction("MyAdd")]
- public static object MyAdd(ResultBuffer rbArgs)
- {
- var arg = rbArgs.AsArray();
- if (arg.Length==2 && arg[0].TypeCode==(int)LispDataType.Double && arg[1].TypeCode==(int)LispDataType.Double)
- {
- var num1 = (double)arg[0].Value;
- var num2 = (double)arg[1].Value;
- Double result = num1 + num2;
- return result;
- }
- else {
- return null;
- }
- }
C# 是区分类型的,Acad 用到的有 5001 5003 5010 ,简单的结果转为 double,否则就要 区分
- if (arg.Length==2 && (arg[0].TypeCode==5001 || arg[0].TypeCode==5003 || arg[0].TypeCode==5010)
- && (arg[1].TypeCode == 5001 || arg[1].TypeCode == 5003 || arg[1].TypeCode == 5010))
- {
- var num1 = arg[0].Value;
- var num2 = arg[1].Value;
- var result = (double)num1 + (double)num2;
- return result;
- }
复制代码 |