AMTONNY,sorry 了 这是全码,你帮我看看。。 (defun c:ctt (/ check_point check_point_x check_point_y del_check del_in dist end_point end_point1 end_point_x end_point_y ent_l ent_lname ltline ltss n p3 p4 point_check1 point_check2 pt_list start_angle start_point start_point1 start_point_x start_point_y tss tt tt1 tt2 ) (command "undo" "be") (setvar "cmdecho" 0) (setvar "osmode" 0) (setq ent_LNAME (car (entsel "\n请选择直线:"))) (if (= (cdr (assoc 0 (entget ent_LNAME))) "POLYLINE") (progn (command "explode" ent_LNAME) (setq ent_LNAME (entlast)) ) ) (setq ent_L (entget ent_LNAME)) (setq start_point (cdr (assoc 10 ent_L)) end_point (cdr (assoc 11 ent_L)) start_point_x (cadr (assoc 10 ent_L)) start_point_y (caddr (assoc 10 ent_L)) end_point_x (cadr (assoc 11 ent_L)) end_point_y (caddr (assoc 11 ent_L)) check_point (getpoint "\n请选择删减方向:") check_point_x (car check_point) check_point_y (cadr check_point) tt1 (* (- start_point_x check_point_x) (- end_point_y check_point_y) ) tt2 (* (- start_point_y check_point_y) (- end_point_x check_point_x) ) tt (- tt1 tt2) start_angle (angle start_point end_point) )
(setq dist (distance start_point end_point)) (setq ltline (ssget "x" '((-4 . "<or") (6 . "x3") (6 . "x4") (6 . "x5") (6 . "x6") (6 . "x49") (6 . "acadgx") (6 . "DASHDOTX2") (-4 . "or>") ) ) n 0 ) (if ltline (repeat (sslength ltline) (setq ltss (entget (ssname ltline n))) (if (= nil (assoc 48 ltss)) (progn (setq ltss (append ltss (list (cons 48 0.001)) ) ) (entmod ltss) ) ) (setq n (+ n 1)) ) ) (command "wipeout" "f" "on") (if (> tt 0) (progn (setq end_point1 (polar end_point start_angle 500)) (setq start_point1 (polar start_point (+ pi start_angle) 500)) (setq p3 (polar end_point1 (+ start_angle (/ pi 2)) (+ 1000 dist)) ) (setq p4 (polar p3 (+ start_angle pi) (+ 1000 dist))) (setq pt_list (list start_point1 end_point1 p3 p4) n 19.01 ) (command "pline" start_point1 end_point1 p3 p4 "c" "zoom" "e") (setq del_in (ssget "_WP" pt_list)) (if del_in (progn (ssdel ent_LNAME del_in) (command "erase" del_in "") ) ) (entdel (entlast)) (repeat 20 (command "offset" n ent_LNAME check_point "") (setq del_check (entlast) n (- n 1) ) (setq point_check1 (cdr (assoc 10 (entget del_check)))) (setq point_check2 (cdr (assoc 11 (entget del_check)))) (command "trim" ent_LNAME "" "f" point_check1 point_check2 "" "" ) (command "erase" del_check "") ) ) )
(setq ltline (ssget "x" '((-4 . "<or") (6 . "x3") (6 . "x4") (6 . "x5") (6 . "x6") (6 . "x49") (6 . "acadgx") (6 . "DASHDOTX2") (-4 . "or>") ) ) n 0 ) (if ltline (repeat (sslength ltline) (setq ltss (entget (ssname ltline n))) (if (= 0.001 (cdr (assoc 48 ltss))) (progn (setq ltss (subst (cons 48 1) (assoc 48 ltss) ltss ) ) (entmod ltss) ) ) (setq n (+ n 1)) ) ) (command "zoom" "e") (setvar "cmdecho" 1) (command "undo" "e") (princ) )
|