明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3624|回复: 9

(vlax-curve-getDistAtPoint) 函数

[复制链接]
发表于 2011-9-5 21:46 | 显示全部楼层 |阅读模式
(vlax-curve-getDistAtPoint m_ent1 p2)函数有时候返回的曲线长度为nil,不知道什么原因

望高手们帮忙
 楼主| 发表于 2011-9-5 21:56 | 显示全部楼层
下面是我的函数,作用是把曲线按照到某点的距离排序

(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
发表于 2011-9-6 08:40 | 显示全部楼层
参考:http://bbs.mjtd.com/thread-72429-1-1.html
有2种可能导致第二个参数(点)不在曲线上:
1.UCS的原因。
2.ENTSEL,getpoint等函数得到的点存在误差。
还有一种出错的可能:对象不是曲线
 楼主| 发表于 2011-9-6 13:20 | 显示全部楼层
谢谢caoyin,ucs加上程序编译通不过,对象是曲线,给定的点起点是曲线的起点,另外一点是该曲线和另外一条曲线的交点
有高手帮忙看看吗
发表于 2011-9-6 13:37 | 显示全部楼层
这个函数有出错可能的,不是程序的问题,是CAD本身有问题
 楼主| 发表于 2011-9-6 20:58 | 显示全部楼层
高版本的CAD是否要好点,我用的04和08都是这样的
发表于 2011-9-6 21:49 | 显示全部楼层
我用的02和08,也遇到过多次了,同一曲线,并不会因为采用高版本CAD就能得到正确结果
发表于 2011-9-6 22:34 | 显示全部楼层
lzgxklable 发表于 2011-9-6 20:58
高版本的CAD是否要好点,我用的04和08都是这样的

一般这样就不会返回nil了
(vlax-curve-getDistAtPoint m_ent1 (vlax-curve-getclosestpointto m_ent1 p2))
发表于 2011-9-7 14:32 | 显示全部楼层
遇到出错的曲线,上面的方法也无效
发表于 2018-2-23 17:26 | 显示全部楼层
本帖最后由 血司 于 2018-2-26 11:22 编辑
小菜123 发表于 2011-9-7 14:32
遇到出错的曲线,上面的方法也无效

应该是其他函数的问题,我遇到一次是,vlax-curve-getDistAtPoint的返回值作为参数传递给我的自定义函数,这个自定义函数的问题,导致返回值都为空,然后我重写了我的自定义函数,就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 22:16 , Processed in 0.285819 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表