本帖最后由 飞雪神光 于 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)
- )
- )
- )
|