如何用lisp实现这样的功能
如何用lisp实现断开的部分自动补上,超出的部分自动修剪?本帖最后由 飞雪神光 于 2023-12-7 19:59 编辑
这是边界为多段线 内部为直线的重画方法 (setq
ty(car(entsel "\n选择多段线边界:"))
obj (vlax-ename->vla-object ty)
pts (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ty)))
ss (ssget "cp" pts '((0 . "LINE")))
)
(foreach ty (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss)))
(setq ptl '())
(setq obj1 (vlax-ename->vla-object ty))
(setq pts (vlax-invoke obj 'Intersectwith obj1 2))
(while pts
(setq ptl (cons (list (car pts) (cadr pts)) ptl))
(setq pts (cdddr pts))
)
(if (= (length ptl) 2)
(progn
(entmake (list '(0 . "line") (cons 62 1) (cons 10 (car ptl)) (cons 11 (cadr ptl))))
(entdel ty)
)
)
) 计算直线上两点 与边界的关系 来确定修剪和延伸 或者用交点去更新原直线点或者不做判断直接求交点去更新或重画线 需要的条件有点少,例如这是有图层区别?还是纯矩形?想要命令?还是全自动?
命令:tt5
本人不缺币,支持论坛发展,无币想要的充币吧。
直接边界内,所有直线延长超过边界线,再统一修剪:lol 厉害了,加油
页:
[1]