永不言弃 发表于 2024-4-27 11:26:49

请教一下这个函数有时候返回不了任意一个距离起点的距离

本帖最后由 永不言弃 于 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)))
    )
)
      )
    )
)

gzcsun 发表于 2024-4-27 15:42:57

vlax函数有时候会这样,
加vl-catch-all-apply会过,
不是有速度要求还是用command.

你有种再说一遍 发表于 2024-4-27 16:43:56

getpoint之后要求曲线最近点

永不言弃 发表于 2024-4-27 21:06:10

你有种再说一遍 发表于 2024-4-27 16:43
getpoint之后要求曲线最近点

用了vlax-curve-getClosestPointTo,还是会有少部分返回空的情况

你有种再说一遍 发表于 2024-4-27 21:51:41

永不言弃 发表于 2024-4-27 21:06
用了vlax-curve-getClosestPointTo,还是会有少部分返回空的情况

那真是见鬼了....超过双精度浮点数范围?平移到0,0再进行?

JUN1 发表于 2024-4-28 09:41:43

没啥问题!!

xyp1964 发表于 2024-4-28 19:40:39

(vlax-curve-getDistAtPoint
(setq s1 (car (entsel "\n选择曲线: ")))
(setq pt (vlax-curve-getclosestpointto s1 (setq pt (getpoint "\n曲线上点: "))))
)

永不言弃 发表于 2024-4-28 21:15:52

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)))
    )
)
      )
    )
)

xyp1964 发表于 2024-4-29 12:45:32

曲线离原点'(0 0)太远


永不言弃 发表于 2024-4-29 12:57:18

xyp1964 发表于 2024-4-29 12:45
曲线离原点'(0 0)太远

:handshake:handshake谢谢院长
页: [1]
查看完整版本: 请教一下这个函数有时候返回不了任意一个距离起点的距离