飞雪神光 发表于 3 天前

求交点位置不对

下图中有两根直线用这段代码求得交点 位置竟然不对 请各位看看什么原因
;; 选择两条直线并计算交点
(setq ent1 (car (entsel "\n选择第一条直线: ")))
(setq ent2 (car (entsel "\n选择第二条直线: ")))
(setq obj1 (vlax-ename->vla-object ent1))
(setq obj2 (vlax-ename->vla-object ent2))
;; 计算交点
(setq intersectPoints (vlax-invoke obj1 'IntersectWith obj2 0))
(entmake (list '(0 . "CIRCLE")'(62 . 10)(cons 10 intersectPoints) (cons 40 0.1)))





kozmosovia 发表于 3 天前

坐标数据太大,小数点前面数字太多,后面的精度就要被吃掉了,因为预留的内存长度放不下,计算精度上也就呵呵了。

lxw320 发表于 3 天前

用户坐标转一下世界坐标试试

飞雪神光 发表于 3 天前

lxw320 发表于 2025-4-27 21:24
用户坐标转一下世界坐标试试

坐标系没有问题呢

寒潮大冬瓜 发表于 3 天前




;飞雪神光于 10 分钟前 | 只看该作者 回帖奖励
;下图中有两根直线用这段代码求得交点 位置竟然不对 请各位看看什么原因
;普通浏览复制代码
;; 选择两条直线并计算交点
……

      obj1
      'IntersectWith; 相交计算方法
      obj2
      0; *******************
……


你有种再说一遍 发表于 前天 04:17

如果只是直线的话,用直线方程联立是能够破除大坐标问题的,
如果是样条的话,还是要改为这个算法+平移到原点

liuhe 发表于 前天 08:48

平移到原点吧,再转换

xyp1964 发表于 前天 10:10

可以需要优化完善IntersectWith函数

shujh1989 发表于 前天 17:49

直线长度太短,两条直线分别向两边延长后,再画就是准确的。应该是2楼说的原因。

指尖 发表于 前天 19:46

新手一枚,对于以上高深函数不太会用,,下面图片这个函数是否可行,

(inters pt1 pt2 pt3 pt4 )
所有的点都以当前 UCS 表示,如果提供的四个点都是三维点,inters 函数检查三维交点。只要所提供的点中有一个是二维点,inters 函数就将这两条线投影到当前构造平面上,仅检查二维交点。

参数

pt1

第一条直线的端点。

pt2

第一条直线的另一端点。

pt3

第二条直线的端点。

pt4

第二条直线的另一端点。

页: [1]
查看完整版本: 求交点位置不对