BDYCAD
发表于 2003-11-23 21:23:00
好 !
sieben
发表于 2003-12-21 20:13:00
1,当LWPOLYLINE很复杂如由几百段线组成时vla-intersectwith 方法会很慢,请问有没有特别的方法提高速度?
2,上面那个程序当两个LWPOLYLINE不相交时应该会出错吧??
meflying
发表于 2003-12-21 21:30:00
1、这是一个程序设计方法的问题,这里提供的函数是针对两个对象的,如果对象很多,必须自己另外用循环获得需要求交点的对象两两相交求交点,这个循环过程是需要好的方法来提高速度,但已与本帖的程序无关了。。。
2、不会。(为什么不试一下呢,奇怪中。。。)
sieben
发表于 2003-12-22 21:59:00
1,我说的是单个Llwpolyline即有几百段line or arc ,使用循环是另外一回事,但本人使用vla-intersectwith 的确感觉比其他函数慢得多,
2,当检查两个vla object 是否相交是本人是这样:
(setq temp (vlax-catch-all-error (vlax-safearray->list (vlax-variant-value intpoints))))
(if (vlax-catch-error-p temp)
(setq intrsect nil)
(setq intrsect t))
(setq intpoints (vlax-variant-value intpoints))
(if (> (vlax-safearray-get-u-bound intpoints 1) 0)
(setq intrsect nil)
(setq intrsect t))
此种方法我曾试过,因为出错后不再用,可能出错原因不是因为不相交
3,我是在网吧上网,故不能立时测试,不过今天上班时也忘了,
4,谢谢!!!
无痕
发表于 2003-12-23 00:09:00
那你那个intpoints又是哪儿来的呢? 天上掉下来的?
sieben
发表于 2003-12-23 18:34:00
今天我试了vlax-safearray-get-u-bound ,当safearray为nil时返回值为-1,是可以用此函数检查safearray是否为nil
龙龙仔
发表于 2003-12-30 12:31:00
(setq intpoints (vlax-variant-value intpoints))
(if (> (vlax-safearray-get-u-bound intpoints 1) 0)
(setq intrsect tl)
(setq intrsect nil))
无痕
发表于 2004-1-26 05:35:00
如果只是写两个实体的交点表
代码何需这么多?
kaixin119
发表于 2004-1-26 10:09:00
大哥 vl-load-com 在哪啊
meflying
发表于 2004-1-26 10:44:00
在程序的最前面加上(vl-load-com)
或者在命令行写:(vl-load-com)然后回车,再执行程序
(注意括号不能漏掉)