;;;Set X-hairs and optionally viewtwist. ;;; ;;; ;;; ;;; (defun rotx (pt1 / );abase nxent (setq abase (nentselp pt1)) (if abase (if (or (eq(cdr(assoc 0(entget(nth 0 abase))))"TEXT") (eq(cdr(assoc 0(entget(nth 0 abase))))"LINE") (eq(cdr(assoc 0(entget(nth 0 abase))))"VERTEX") (eq(cdr(assoc 0(entget(nth 0 abase))))"POLYLINE") ) (progn (setq basent (entget (nth 0 abase))) (cond ((eq(cdr(assoc 0 basent))"VERTEX") (setq nxent (entget(entnext(cdr(assoc -1 basent))))) (setvar "SNAPANG" (angle (cdr (assoc 10 basent)) (cdr (assoc 10 nxent)) );angle );setvar ) ((eq(cdr(assoc 0 basent))"LINE") (setvar "SNAPANG" (angle (cdr (assoc 10 basent)) (cdr (assoc 11 basent)) );angle );setvar ) ((eq(cdr(assoc 0 basent))"TEXT") (setvar "SNAPANG" (cdr(assoc 50 basent))) ) );cond ) (princ (strcat"\nSelection for ROTX is "(cdr(assoc 0(entget(nth 0 abase))))". ")) );if (progn (setq snap_pt2 (getpoint pt1 "\nPick second point for Snapang: ")) (setvar "SNAPANG" (angle pt1 snap_pt2)) ) );if (setq rotang (getvar"snapang") nvwang (*(/(-(* 2 pi)rotang)pi)180) ) (if (>= nvwang 180) (setq altang (- nvwang 180)) (setq altang (+ nvwang 180)) ) ; (c:svang) (princ "\nUse SVANG to set Viewtwist to X-hairs. ") (princ) );defun ROTX.LSP (defun c:rotx () (if (setq pt1 (nentselp "\nSelect Line, Text, or enter first point for Snapang: ")) nil (while (not (eq (car (setq pt1 (grread T 1 2)))5))) ) (setq pt1 (cadr pt1)) (rotx pt1) (c:svang) (setq pt1 nil) (princ) ) (defun c:svang () (if ukword nil (load "ukword")) (setq useang (ukword 1 "A B 0" (strcat "Twist Angle ="(rtos nvwang)", ="(rtos altang)" or 0; def=")"A")) (cond ((= useang "A") (setq vwang nvwang)) ((= useang "B") (setq vwang altang)) ((= useang "0") (setq vwang 0) (setvar "snapang" 0)) ) (command "._dview" "" "tw" vwang "") (princ) )