;;;Thin Polyline vertices based on user specified angles and distances. (uses UANGLE UDIST) ;;; ;;; Requires: UUTILS.LSP (uangle, udist) ;;; ;;; ;;; ;;;> Author: Henry C. Francis ;;;> 425 N. Ashe St. ;;;> Southern Pines, NC 28387 ;;;> http://paracadd.com ;;;> All rights reserved. ;;; ;;;> COPYRIGHT: 5-14-96 ;;;> EDITED: 09-06-2005 ;;; (defun c:thinpl (/ plss sslen count orgvno plent plhead ver0 ver1 ver2 verno ptint rise run plast) (if uangle nil (load "uangle" "\nFile UANGLE.LSP not loaded! ")) (if udist nil (load "udist" "\nFile UDIST.LSP not loaded! ")) (if vcnt (while (>= vcnt -1) (set (read(strcat "vent" (itoa (1+ vcnt)))) nil) (setq vcnt (1- vcnt)) ) ) (setq tstln (*(getvar"dimscale")0.06)) (setq plss (ssget '((0 . "POLYLINE"))) sslen (sslength plss) count 0 vcnt 1 orgvno 0 tstang (uangle 1 "" "Vertex Filter Angle" (if tstang tstang 0.08726646) nil) tstln (udist 1 "" "Vertex Filter Distance" (if tstln tstln 1.0) nil) );setq ; (while (not(eq count sslen)) (setq plent (ssname plss count) plhead (entget plent) plver (entnext plent) ver0 (cdr(assoc 10(entget(entnext plent)))) verno 1 );setq (while (not(eq(cdr(assoc 0(entget(entnext(entnext plver)))))"SEQEND")) (setq ver1 (cdr(assoc 10(entget(entnext plver)))) ver2 (cdr(assoc 10(entget(entnext(entnext plver))))) plast plver orgvno (1+ orgvno) );setq (if (setq ptint (inters ver0 ver1 ver2 (polar ver2 (+(angle ver1 ver2)(/ pi 2))1)nil) );setq (progn (setq rise (distance ver2 ptint) run (distance ver1 ptint) );setq );progn (progn (setq rise 0 run 1 );setq );progn );if (if (or (<(distance ver0 ver2)tstln) (equal (atan rise run) 0 0.0001) (and (<(atan rise run) tstang) (<(distance ver1 ver2)tstln) );and );or nil (progn ; (princ (strcat "\nSet VENT" (itoa verno) " Vertex ")) (set (read(strcat "vent" (itoa verno)))(entget(entnext plver))) (setq verno (1+ verno) ver0 ver1) );progn );if (setq plver (entnext plver) count (1+ count) );setq );while (setq plver (entnext plver)) ; );while (entmake plhead) (entmake (entget(entnext plent))) (while (< vcnt (1- verno)) (entmake (eval(read(strcat "vent" (itoa vcnt))))) (setq vcnt (1+ vcnt)) );while (while (not(eq(cdr(assoc 0(entget plver)))"SEQEND")) (setq plast plver plver (entnext plver) );setq );while (if (< (distance (cdr(assoc 10(eval(read(strcat "vent" (itoa vcnt)))))) (cdr(assoc 10(entget plast))) ) tstln ) (progn (entmake (entget plast)) (entmake (LIST(CONS 0 "SEQEND")));(entget plver)) );progn (progn (entmake (eval(read(strcat "vent" (itoa (1+ vcnt)))))) (entmake (entget plast)) (entmake (LIST(CONS 0 "SEQEND")));(entget plver)) );progn );if (princ (strcat "\nPolyline Thinned from " (itoa(+ 2 orgvno)) " vertices to " (itoa(+ 2 verno)) ) );princ (princ) );defun