本帖最后由 xj6019 于 2019-11-23 21:10 编辑
看到 别人求助的 好几年了 ,也没高手改,下面的代码是单条直线合并的,谁帮忙改成框选合并直线啊,这样改改应该很方便作图啊
以下是代码 期盼高手出现啊
最好能实现图片的 情况的连接 同一方向和有拐角的情况 这两种情况能实现 就太完美了,期待能等到哦
(defun C:2IN1 (/ VLINE1 VLINE2 DL1DL2 PT1 PT2 PT3 PT4 PT_LIST DIST DIST1 N NN ENT ANG1 ANG2ANG3 ANG4) (defun GETLINE (MSG / A1) (INITGET 1) (setq A1 (car (entsel MSG))) (while (/= (cdr (assoc 0 (entget A1))) "LINE") (PRINC "\n您选的不是线图元,请再选一次...") (INITGET 1) (setq A1 (car (entsel MSG))) ) A1 ) (PRINC "\n请选取二条断线来接合....") (setq VLINE1 (GETLINE "\n请选取第一条线: ")) (while (or (= VLINE2 nil) (equal VLINE1VLINE2)) (if (equal VLINE1 VLINE2) (PRINC "\n线重复,请再选一次...")) (setq VLINE2 (GETLINE "\n请选取第二条线: ")) ) (SETQ DL1 (ENTGET VLINE1) DL2 (ENTGET VLINE2) PT1 (cdr (assoc 10 DL1)) PT2 (cdr (assoc 11 DL1)) PT3 (cdr (assoc 10 DL2)) PT4 (cdr (assoc 11 DL2)) ANG1 (angle PT1 PT2) ANG2 (angle PT4 PT3) ANG3 (+ PI ANG1) ANG4 (+ ANG2 PI)) (if (or (equal ANG1 ANG2 1e-9) (equal ANG1ANG4 1e-9) (equal ANG3 ANG2 1e-9) (equal ANG3ANG4 1e-9) ) (progn (setq PT_LIST (list PT1 PT2 PT3 PT4) DIST (distance PT1 PT2) N 0) (repeat 3 (setq NN 1) (repeat 3 (if (> (setq DIST1 (distance (nth N PT_LIST) (nth NN PT_LIST))) DIST) (setq DIST DIST1 PT1 (nth N PT_LIST) PT2 (nth NN PT_LIST)) ) (setq NN (1+ NN)) ) (setq N (1+ N)) ) (setq DL1 (subst (cons 10 PT1) (assoc 10 DL1) DL1) DL1 (subst (cons 11 PT2) (assoc 11 DL1)DL1)) (entmod DL1) (entdel VLINE2) ) (COMMAND "FILLET" "R" "0""FILLET" VLINE1 VLINE2) ) (PRINC) ) (PRINC)
|