(vlax-curve-getDistAtPoint) 函数
(vlax-curve-getDistAtPoint m_ent1 p2)函数有时候返回的曲线长度为nil,不知道什么原因望高手们帮忙
下面是我的函数,作用是把曲线按照到某点的距离排序
(if (and p1
ss
)
(progn
(setq i -1
lst '()
)
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq p2 ( vlax-safearray->list (vlax-variant-value (vla-intersectwith(vlax-ename->vla-object m_ent1)
(vlax-ename->vla-object s1)acExtendnone)))
;(command ".ucs" "")
;(command "_.ucs" m_ent1 "")
dist (vlax-curve-getDistAtPoint m_ent1 p2)
;dist (distance p1 p2)
lst(cons (list dist s1) lst)
)
)
(princ lst)
(gc)
(if lst
(progn
(setq lst (vl-sort lst '(lambda (a b) (< (car a) (car b))))
lst (mapcar 'cadr lst)
)
(princ "\n!lst = ")
(princ lst)
)
)
)
)
有时候返回的距离为nil
参考:http://bbs.mjtd.com/thread-72429-1-1.html
有2种可能导致第二个参数(点)不在曲线上:
1.UCS的原因。
2.ENTSEL,getpoint等函数得到的点存在误差。
还有一种出错的可能:对象不是曲线 谢谢caoyin,ucs加上程序编译通不过,对象是曲线,给定的点起点是曲线的起点,另外一点是该曲线和另外一条曲线的交点
有高手帮忙看看吗 这个函数有出错可能的,不是程序的问题,是CAD本身有问题 高版本的CAD是否要好点,我用的04和08都是这样的 我用的02和08,也遇到过多次了,同一曲线,并不会因为采用高版本CAD就能得到正确结果 lzgxklable 发表于 2011-9-6 20:58 static/image/common/back.gif
高版本的CAD是否要好点,我用的04和08都是这样的
一般这样就不会返回nil了
(vlax-curve-getDistAtPoint m_ent1 (vlax-curve-getclosestpointto m_ent1 p2)) 遇到出错的曲线,上面的方法也无效 本帖最后由 血司 于 2018-2-26 11:22 编辑
小菜123 发表于 2011-9-7 14:32
遇到出错的曲线,上面的方法也无效
应该是其他函数的问题,我遇到一次是,vlax-curve-getDistAtPoint的返回值作为参数传递给我的自定义函数,这个自定义函数的问题,导致返回值都为空,然后我重写了我的自定义函数,就好了
页:
[1]