;DIET.LSP routine to reduce vertexes of a lwpoly ; written by Yorgos Angelopoulos aggior@panafonet.gr (Defun C:DIET (/ osm old oldpl i n nodpl pllst ptyp lastel k pcol pltp play ) (setvar "cmdecho" 0) (setq osm(getvar "osmode")) (setvar "osmode" 0) (setq old(entsel "\nSelect lwpoly to diet : ")) (setq oldpl(entget(car old))) (setq nodpl(cdr(assoc 90 oldpl))) (setq ptyp (cdr(assoc 70 oldpl))) (setq pcol (cdr(assoc 62 oldpl))) (setq pltp (cdr(assoc 6 oldpl))) (setq play (cdr(assoc 8 oldpl))) (setq pllst '()) (setq i 0) (while (car(nth i oldpl)) (if (= (car(nth i oldpl)) 10) (progn (setq pllst (append pllst (list (cdr(nth i oldpl))))) (setq lastel (list (cdr(nth i oldpl)))) );endprogn );endif (setq i (+ i 1)) );endwhile (setq pllst '()) (setq i 0) (setq k -1) (while (car(nth i oldpl)) (if (= (car(nth i oldpl)) 10) (if (= k -1) (progn (setq pllst (append pllst (list (cdr(nth i oldpl))))) (setq k (* k -1)) );endprogn (setq k (* k -1)) );endif );endif (setq i (+ i 1)) );endwhile (setq pllst (append pllst lastel)) (if (= ptyp 1) (progn (setq pllst (append pllst (list(nth 0 pllst)))) (setq pllst (cdr pllst)) );endprogn );endif (setvar "blipmode" 0) (command "pline") (foreach n pllst (command n)) (if (= ptyp 1) (command "c") (command "") );endif (if (= pcol nil) (setq pcol "bylayer") );endif (if (= pltp nil) (setq pltp "bylayer") );endif (command "change" "l" "" "p" "la" play "c" pcol "lt" pltp "" ) (entdel (car old)) (setvar "osmode" osm) (setvar "cmdecho" 1) (setvar "blipmode" 1) (princ) );close defun