[求助]有关Visual LISP函数的问题
以下这段子程序是飞老师提供的,关于求两相交曲线交点的程序,由于我对V-lisp不熟,所以对这段程序不能理解,望各位老师们帮忙解答,先谢了!(defun GetInterPoint (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)<BR> (setq ax_ent_1 (vlax-ename->vla-object ent1) <FONT color=#0909f7>;;ent_1为曲线1的图元名<BR></FONT> ax_ent_2 (vlax-ename->vla-object ent2) <FONT color=#3300ff>;;ent_2为曲线2的图元名</FONT><BR> )<BR> (setq intpoints (<FONT color=#ff0000>vla-intersectwith</FONT> ax_ent_1 ax_ent_2 <FONT color=#ff0000>acextendnone</FONT>))<BR> (setq intpoints (vlax-variant-value intpoints))<BR> (setq i 0)<BR> (if (> (vlax-safearray-get-u-bound intpoints 1) 0)<BR> (repeat (/ (+ 1<BR> (- (vlax-safearray-get-u-bound intpoints 1)<BR> (vlax-safearray-get-l-bound intpoints 1)<BR> )<BR> )<BR> 3<BR> )<BR> (setq points (append points (list (list<BR> (vlax-safearray-get-element intpoints i)<BR> (vlax-safearray-get-element intpoints (+ i 1))<BR> (vlax-safearray-get-element intpoints (+ i 2))<BR> )))<BR> )<BR> (setq i (+ 3 i))<BR> )<BR> )<BR> points<BR>)
以上程序<FONT color=#ff0000>红色部份的函数</FONT>我在帮助文件中查不到,不知道为什么,能否解释一下
(setq intpoints (<FONT color=#ff0000>vla-intersectwith</FONT> ax_ent_1 ax_ent_2 <FONT color=#ff0000>acextendnone</FONT>))这句起什么作用 对两个图元求交点。 (setq intpoints (<FONT color=#ff0000>vla-intersectwith</FONT> ax_ent_1 ax_ent_2 <FONT color=#ff0000>acextendnone</FONT>))这句是找出ax_ent_1和 ax_ent_2对象的交点, 是采用<FONT color=#ff0000>acextendnone 有真正的交点的方式. </FONT> 方法:<FONT color=#ff0000>intersectwith,查看帮助文件,怎么使用VLA函数,参考帮助文件中VLISP中的ActiveX部分</FONT> 谢谢以上几位老师,<FONT color=#ff0000>参考帮助文件</FONT><FONT color=#000000>我一直在参考,可惜VLISP部份是英文的,英语水平不太好,所以看起来比较吃力。</FONT>
另外我还想问个问题,这句话执行后返回一个这样的值,这个值代表什么,是不是VLA特定格式的一种数据形式?
(setq intpoints (<FONT color=#ff0000>vla-intersectwith</FONT> ax_ent_1 ax_ent_2 <FONT color=#ff0000>acextendnone</FONT>))
返回:#<variant 8197 ...> 是一个VLA变量,你可以使用vlax-variant-value或获得其内容 谢谢飞老师指点!不过用vlax-variant-value获得内空也是看不懂,比如运行:
(setq intpoints (vlax-variant-value intpoints)) 返回: #<safearray...>
嘿嘿,还是看不懂返回值,想学VLISP真是摸不到头脑。。。。。 如果返回的是#<safearray...>,说明是一个表,使用vlax-safearray->list就可以得到lisp的表了 我逐行运行,使用vlax-safearray->list确实得到一个交点的坐标,多谢飞老师指点!
页:
[1]