aws 发表于 2024-1-10 14:05:48

直线延长到边界?

请教下,这种该怎么写?
自带的EX命令,能不能实现,是不是我不会用?


lisp的目前思路是:
1、内部对象先,延长1万米。
2、利用边界再给它裁剪掉。(裁剪完,判断内部,外部,或许是个问题)(或者也会干扰到其他图元)
。。。
感觉有点太无脑了。

有没有其他好办法呢?

飞雪神光 发表于 2024-1-10 15:46:11

这是延伸的方法(setq sslst (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex (ssget)))))
(foreach ty sslst
      (setq pt1 (vlax-curve-getStartPoint ty))
      (setq pt2 (vlax-curve-getEndPoint ty))
      (command "_extend" "" (list ty pt1) "")
      (command "_extend" "" (list ty pt2) "")
)
或者这样

(setq ty0(car(entsel "\n选择外框:")))
(setq sslst (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex (ssget)))))
(foreach ty sslst
(setq pt1 (vlax-curve-getStartPoint ty))
(setq pt2 (vlax-curve-getEndPoint ty))
(command "_extend" ty0 "" (list ty pt1) "")
(command "_extend" ty0 "" (list ty pt2) "")
)

飞雪神光 发表于 2024-1-10 15:36:14

我觉得是在起点和端点处用延伸就可以 或者 求交点后entmod

liuhe 发表于 2024-1-10 14:39:42

本帖最后由 liuhe 于 2024-1-10 15:59 编辑

不要用trim,而是用求交点,再缩回去


你有种再说一遍 发表于 2024-1-10 16:33:26

两直线的点斜式联立方程求交点本身就是两个射线,曲线方程也可以和直线方程联立,但是样条曲线是多项式方程,这样太耗时了,所以曲线是先利用包围盒求交点减少运算量

xyp1964 发表于 2024-1-10 17:05:59

求最近延伸点




aws 发表于 2024-1-10 17:12:37

飞雪神光 发表于 2024-1-10 15:36
我觉得是在起点和端点处用延伸就可以 或者 求交点后entmod

一语惊醒梦中人,我想起来了,求交点可以求虚拟交点,只是我一直没用过,给忘了,哈哈,虚拟交点求出后,用entmake重新画就行了

aws 发表于 2024-1-10 17:24:47

liuhe 发表于 2024-1-10 14:39
不要用trim,而是用求交点,再缩回去

感谢感谢,我明白了,谢谢
页: [1]
查看完整版本: 直线延长到边界?