;;连接2条3dpolyline;;coord为LJ的子程序 (defun coord(en / ed) (setq ee (entsel "\n请选择要连接的线:")) (setq en (car ee)) (setq ed (enTGET en)) (print ed) (setq la (cdr (assoc 8 ed))) (setq pp (cdr (assoc 0 ed))) (if (/= pp "LINE") (progn (setq la (cdr (assoc 8 ed))) (setq c38 (assoc 38 ed)) (if (eq c38 nil) (progn (setq en1 (entnext en)) (setq ed1 (entget en1)) (setq pp (cdr (assoc 0 ed1))) (setq pt1 (assoc 10 ed1)) (if (/= pt1 nil) (progn (setq pt (cdr pt1)) )) (setq lt (list pt)) (while (/= pp "SEQEND") (progn (setq en1 (entnext en1)) (setq ed1 (entget en1)) (setq pp (cdr (assoc 0 ed1))) (setq pt1 (assoc 10 ed1)) (if (/= pt1 nil) (progn (setq pt (cdr pt1)) )) (setq lt (cons pt lt)) ) ) (setq lt (cdr lt)) ); not lwpolyline (progn (print "aaa") (setq ev38 (cdr c38)) (setq len (length ed)) (setq len (- len 3)) (setq j 0) (setq c10 (car (nth j ed))) (while (/= c10 10) (progn (setq j (+ 1 j)) (setq c10 (car (nth j ed))) )) (setq lt (list (list 0 0 0))) (while (< j len) (progn (setq lpt1 (cdr (nth j ed))) (setq lptx (nth 0 lpt1)) (setq lpty (nth 1 lpt1)) (setq lpt (list lptx lpty ev38)) (setq lt (cons lpt lt)) (setq j (+ j 4)) )) (setq lt (reverse lt)) (setq lt (cdr lt)) )); is lwpolyline ) ; not line (progn (setq lip1 (cdr (assoc 10 ed))) (setq lt (list lip1)) (setq lip2 (cdr (assoc 11 ed))) (setq lt (cons lip2 lt)) )) ; line (setq pot (cadr ee)) (setq edd ed) (setq lla la) (setq e en) (setq lt lt) ;(entdel en) ) 连接2条3dpolyline,LJ为主程序;;coord为LJ的子程序 (defun c:y() (setq lt1 (coord en)) (setq e1 e) (setq la1 lla) (setq et1 edd) (setq pot1 pot) (setq lt1 (reverse lt1)) (setq color1 (cdr c66)) ;(setq c62 (assoc 62 ed)) ;(setq cc62 (cons 62 3)) ;(setq color1 (cdr c62)) ;(setq ed (subst cc62 c62 ed)) ;(entmod ed) (command "change" e1 "" "P" "c" "3" "") ;_______________ (setq pss1 (car lt1)) (setq ps1 (list (nth 0 pss1) (nth 1 pss1))) (setq pee1 (last lt1)) (setq pe1 (list (nth 0 pee1) (nth 1 pee1))) (setq pot1 (list (nth 0 pot1) (nth 1 pot1))) (setq ds1 (distance ps1 pot1)) (setq de1 (distance pe1 pot1)) (if (> ds1 de1) (progn (setq lt1 lt1) ) (progn (setq lt1 (reverse lt1)) )) ;________________ (setq lt2 (coord en)) (setq e2 e) (setq la2 lla) (setq et2 edd) (setq pot2 pot) (setq lt2 (reverse lt2)) (command "change" e2 "" "p" "c" 3 "") ;_________________ (setq pss2 (car lt2)) (setq ps2 (list (nth 0 pss2) (nth 1 pss2))) (setq pee2 (last lt2)) (setq pe2 (list (nth 0 pee2) (nth 1 pee2))) (setq pot2 (list (nth 0 pot2) (nth 1 pot2))) (setq ds2 (distance ps2 pot2)) (setq de2 (distance pe2 pot2)) (if (< ds2 de2) (progn (setq lt2 lt2) ) (progn (setq lt2 (reverse lt2)) )) ;_________________ (if (= la1 la2) (progn (setq lt (append lt1 lt2)) (setvar "clayer" la1) (setq i 0) (setq len (length lt)) (if (NOT (EQ e1 e2)) (progn (command "3dpoly") (while (< i len) (progn (setq pt (nth i lt)) (command pt) (setq i (+ 1 i)) )) (command "") (entdel e1) (entdel e2) ) (progn (prompt "\nSORRY! 你选择了同一条线!!!!") (print) )) ) (progn (prompt "\nSORRY! 你选择的不是同一层的线!!!!") (PRINT) )) ;(command "change" "l" "" "p" "c" color1 "") )