几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(VB.NET/C#) (http://www.dimcax.com/hust/forumdisplay.php?f=176)
-   -   【转帖】.net:定义一个可以被lisp调用的函数 (http://www.dimcax.com/hust/showthread.php?t=8717)

yang686526 2009-04-19 09:16 PM

【转帖】.net:定义一个可以被lisp调用的函数
 
.net:定义一个可以被lisp调用的函数
www.dimcax.com
.net:定义一个可以被lisp调用的函数
.net:定义一个可以被lisp调用的函数
这里要说明的是,你需要对传入的参数进行拆箱,而对输出的结果要进行装箱。 下面演示了如何处理参数以及对结果进行装箱:
<lispfunction("lispfunction")> _
public function vbfunction(byval rbfargs as resultbuffer) as resultbuffer
'获取输入的参数...
dim arinputargs as array
dim realarg1 as double
dim intarg2 as integer
dim strarg3 as string
arinputargs = rbfargs.asarray
realarg1 = ctype(arinputargs.getvalue(0), typedvalue).value
intarg2 = ctype(arinputargs.getvalue(1), typedvalue).value
strarg3 = ctype(arinputargs.getvalue(2), typedvalue).value
'在这里做你想做的事情...
'...
'...
'对结果装箱...
'对double型使用rtreal (5001)
'对string型使用rtstr (5003)
'对整型使用rtshort (5005)
dim rbfresult as resultbuffer
rbfresult = new resultbuffer( _
new typedvalue(cint(5001), 3.14159), _
new typedvalue(cint(5003), 42), _
new typedvalue(cint(5005), "goodbye!"))
return rbfresult
end function
上面的代码假定传入的第一个参数为一实数,然后是一个整数,最后为一个字符串。下面是你在lisp中调用这段代码后的结果:
command: (lispfunction 1.234 9876 "hello!")
(3.14159 42 "goodbye!")
太好了(我还没运行程序)! 能不能定义一个被vba调用的函数呢?
cad开发爱好者
对象和选择集能做参数吗?
rtename 5006 实体名 rtpicks 5007 选择集名


1


所有的时间均为北京时间。 现在的时间是 03:37 PM.