请教一下这个函数有时候返回不了任意一个距离起点的距离
本帖最后由 永不言弃 于 2024-4-28 21:18 编辑请教一下vlax-curve-getDistAtPoint函数有时候返回不了多段线上任意一个距离起点的距离,怎么完善一下,谢谢
(defun c:tt()
(if (and
(setq ent1 (car (entsel "\n 选择线")))
(setq ss (ssget (list (cons 0 "INSERT"))))
)
(progn
(setvar"OSMODE" 0)
(setq obj (vlax-ename->vla-object ent1))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq pt1 (cdr (assoc 10 (entget ent))))
(setq pt2 (vlax-curve-getClosestPointTo obj pt1))
(setq dis (vlax-curve-getDistAtPoint obj pt2))
(if (= dis nil)
(entmake (list '(0 . "CIRCLE") (cons 62 3)(cons 10 pt1) (cons 40 2.5)))
)
)
)
)
)
vlax函数有时候会这样,
加vl-catch-all-apply会过,
不是有速度要求还是用command. getpoint之后要求曲线最近点 你有种再说一遍 发表于 2024-4-27 16:43
getpoint之后要求曲线最近点
用了vlax-curve-getClosestPointTo,还是会有少部分返回空的情况 永不言弃 发表于 2024-4-27 21:06
用了vlax-curve-getClosestPointTo,还是会有少部分返回空的情况
那真是见鬼了....超过双精度浮点数范围?平移到0,0再进行? 没啥问题!! (vlax-curve-getDistAtPoint
(setq s1 (car (entsel "\n选择曲线: ")))
(setq pt (vlax-curve-getclosestpointto s1 (setq pt (getpoint "\n曲线上点: "))))
) xyp1964 发表于 2024-4-28 19:40
院长,你用这个图试试,有两个点返回不了
(defun c:tt()
(if (and
(setq ent1 (car (entsel "\n 选择线")))
(setq ss (ssget (list (cons 0 "INSERT"))))
)
(progn
(setvar"OSMODE" 0)
(setq obj (vlax-ename->vla-object ent1))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq pt1 (cdr (assoc 10 (entget ent))))
(setq pt2 (vlax-curve-getClosestPointTo obj pt1))
(setq dis (vlax-curve-getDistAtPoint obj pt2))
(if (= dis nil)
(entmake (list '(0 . "CIRCLE") (cons 62 3)(cons 10 pt1) (cons 40 2.5)))
)
)
)
)
)
曲线离原点'(0 0)太远
xyp1964 发表于 2024-4-29 12:45
曲线离原点'(0 0)太远
:handshake:handshake谢谢院长
页:
[1]