;PL2thr1.lsp pline to thr conversion 6/4/05 Dublin ; (defun c:pl2thr ( / next vert vlist revlist ent cmd pltest plbit) (setq oldbm (getvar "blipmode")) (setvar "blipmode" 1) (setvar "cmdecho" 0) (setq curlay (getvar "clayer")) (while (not ent) (setq ent (car (entsel "\nSelect polyline to convert:"))) (if ent (progn (setq pltest (cdr (assoc 0 (entget ent)))) (if (/= pltest "POLYLINE") (progn (setq ent nil ) (prompt "\nSelection is not a polyline") ) ) ) ) ) (setq entlayer (cdr (assoc 8 (entget ent)))) ;(princ entlayer) (setq plbit (cdr (assoc 70 (entget ent)))) ; What kind of pline is this? (if (= (logand plbit 1 ) 1 ) ; test to see if pline closed (setq closed 1) (setq closed nil) ) (setq plbit (cdr (assoc 70 (entget ent)))) ; What kind of pline is this? (if (= (logand plbit 8 ) 8 ) ; test to see if pline is 3D (setq threed 1) (setq threed nil) ) (setq fname (getfiled "THR file to write:" "" "THR" 1)) ; (setq fname (getstring "\nEnter name of THR file to write:")) (setq f (open fname "w")) (write-line "#this is a theta r file" f) (princ (strcat "\nWriting " fname " ...")) (setq next (entnext ent)) (setq vert (cdr (assoc 10 (entget next)))) (setq firstvert vert) (setq th (car vert) r (cadr vert) ) (princ th f)(princ " " f) (princ r f) (princ "\n" f) (setq c 1) (while vert (setq next (entnext next)) (setq vert (cdr (assoc 10 (entget next)))) (if vert (progn (setq th (car vert) r (cadr vert) ) (princ th f)(princ " " f) (princ r f) (princ "\n" f) );end progn );end if (write-char 8) ;backspace (cond ((= c 1)(princ "-")) ((= c 2)(princ "\\")) ((= c 3)(princ "|")) ((= c 4)(princ "/")) ) (setq c (+ c 1)) (if (= c 5) (setq c 1)) );end while (if closed (progn (setq vert firstvert) (setq th (car vert) r (cadr vert) ) (princ th f)(princ " " f) (princ r f) (princ "\n" f) );end progn );end if (close f) (write-char 8) ;backspace (prompt "done.") (princ) ) ;(prompt "pl2thr to execute")(princ)