直线延长到边界?
请教下,这种该怎么写?自带的EX命令,能不能实现,是不是我不会用?
lisp的目前思路是:
1、内部对象先,延长1万米。
2、利用边界再给它裁剪掉。(裁剪完,判断内部,外部,或许是个问题)(或者也会干扰到其他图元)
。。。
感觉有点太无脑了。
有没有其他好办法呢?
这是延伸的方法(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) "")
)
我觉得是在起点和端点处用延伸就可以 或者 求交点后entmod 本帖最后由 liuhe 于 2024-1-10 15:59 编辑
不要用trim,而是用求交点,再缩回去
两直线的点斜式联立方程求交点本身就是两个射线,曲线方程也可以和直线方程联立,但是样条曲线是多项式方程,这样太耗时了,所以曲线是先利用包围盒求交点减少运算量 求最近延伸点
飞雪神光 发表于 2024-1-10 15:36
我觉得是在起点和端点处用延伸就可以 或者 求交点后entmod
一语惊醒梦中人,我想起来了,求交点可以求虚拟交点,只是我一直没用过,给忘了,哈哈,虚拟交点求出后,用entmake重新画就行了 liuhe 发表于 2024-1-10 14:39
不要用trim,而是用求交点,再缩回去
感谢感谢,我明白了,谢谢
页:
[1]