;;;Set X-hairs and optionally viewtwist. ;;; ;;; ;;; ;;; (DEFUN rotx_error (msg /) (PRINC (STRCAT "\nError: " msg)) (SETQ *error* orig_rotxerror) (PRINC "\nViewport locks may have been left unlocked! ") (PRINC) ) ;_ end of DEFUN (DEFUN rotx (pt1 /) ;abase nxent (SETQ abase (NENTSELP pt1)) (IF (AND abase (IF(EQ (CDR (ASSOC 0 (ENTGET (NTH 0 abase)))) "VERTEX")(/=(cdr(assoc 0(entget(entnext(cdr(assoc -1 (ENTGET (NTH 0 abase))))))))"SEQEND")T)) (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") (EQ (CDR (ASSOC 0 (ENTGET (NTH 0 abase)))) "LWPOLYLINE") (EQ (CDR (ASSOC 0 (ENTGET (CAR abase)))) "LINE") ) ;_ end of or (PROGN (SETQ basent (ENTGET (NTH 0 abase))) (COND ((EQ (CDR (ASSOC 0 basent)) "LWPOLYLINE") (SETQ lwptslst nil) (FOREACH n basent (IF (EQ (CAR n) 10) (SETQ lwptlst (APPEND lwptlst (LIST (CDR n)))) ) ;_ end of if ) ;_ end of foreach (SETQ pntcnt 0 pntlen (LENGTH lwptlst) ) ;_ end of setq (WHILE (< pntcnt (1- pntlen)) ;;; (princ "\nAngle=") ;;; (princ (angle (nth pntcnt lwptlst)(nth (1+ pntcnt) lwptlst))) ;;; (princ "\nAngle=") ;;; (princ (angle (nth pntcnt lwptlst)(cadr abase))) ;;; (princ "\nSIN=") ;;; (princ (SIN(-(angle (nth pntcnt lwptlst)(nth (1+ pntcnt) lwptlst)) ;;; (angle (nth pntcnt lwptlst)(cadr abase)) ;;; ) ;;; ) ;;; ) (IF (AND (< (ABS (SIN (- (ANGLE (NTH pntcnt lwptlst) (NTH (1+ pntcnt) lwptlst) ) ;_ end of angle (ANGLE (NTH pntcnt lwptlst) (CADR abase)) ) ;_ end of - ) ;_ end of SIN ) ;_ end of ABS 0.04 ) ;_ end of < (< (DISTANCE (NTH pntcnt lwptlst) (CADR abase)) (DISTANCE (NTH pntcnt lwptlst) (NTH (1+ pntcnt) lwptlst) ) ;_ end of distance ) ;_ end of < (< (DISTANCE (NTH (1+ pntcnt) lwptlst) (CADR abase)) (DISTANCE (NTH pntcnt lwptlst) (NTH (1+ pntcnt) lwptlst) ) ;_ end of distance ) ;_ end of < ) ;_ end of AND (PROGN (SETQ pt001 (NTH pntcnt lwptlst)) (SETQ pt002 (NTH (1+ pntcnt) lwptlst)) (SETVAR "SNAPANG" (ANGLE pt001 pt002 ) ;angle ) ;setvar ) ;_ end of progn ) ;_ end of IF (SETQ pntcnt (1+ pntcnt)) ) ;_ end of while ) ((EQ (CDR (ASSOC 0 basent)) "VERTEX") (COND ((EQ (TYPE (CAR (LAST abase))) 'ENAME) (SETQ nxent (ENTGET (ENTNEXT (CDR (ASSOC -1 basent)))) xr_edata (ENTGET (CAR (LAST abase))) ) ;_ end of SETQ (SETVAR "SNAPANG" (+ (ANGLE (CDR (ASSOC 10 basent)) (CDR (ASSOC 10 nxent)) ) ;angle (CDR (ASSOC 50 xr_edata)) ) ;_ end of + ) ;setvar ) (T (SETQ nxent (ENTGET (ENTNEXT (CDR (ASSOC -1 basent))))) (SETVAR "SNAPANG" (ANGLE (CDR (ASSOC 10 basent)) (CDR (ASSOC 10 nxent)) ) ;angle ) ;setvar ) ) ;_ end of COND ) ((EQ (CDR (ASSOC 0 basent)) "LINE") (COND ((EQ (TYPE (CAR (LAST abase))) 'ENAME) (SETQ xr_edata (ENTGET (CAR (LAST abase)))) (SETVAR "SNAPANG" (+ (ANGLE (CDR (ASSOC 10 basent)) (CDR (ASSOC 11 basent)) ) ;angle (CDR (ASSOC 50 xr_edata)) ) ;_ end of + ) ;setvar ) (T (SETVAR "SNAPANG" (ANGLE (CDR (ASSOC 10 basent)) (CDR (ASSOC 11 basent)) ) ;angle ) ;setvar ) ) ;_ end of COND ) ((EQ (CDR (ASSOC 0 basent)) "TEXT") (COND ((EQ (TYPE (CAR (LAST abase))) 'ENAME) (SETQ xr_edata (ENTGET (CAR (LAST abase)))) (SETVAR "SNAPANG" (+ (CDR (ASSOC 50 basent)) (CDR (ASSOC 50 xr_edata)) ) ;_ end of + ) ;setvar ) (T (SETVAR "SNAPANG" (CDR (ASSOC 50 basent))) ) ) ;_ end of COND ) ) ;cond ) ;_ end of progn (PRINC (STRCAT "\nSelection for ROTX is " (CDR (ASSOC 0 (ENTGET (NTH 0 abase)))) ". " ) ;_ end of strcat ) ;_ end of princ ) ;if (PROGN (SETQ snap_pt2 (GETPOINT pt1 "\nPick second point for Snapang: ")) (SETVAR "SNAPANG" (ANGLE pt1 snap_pt2)) ) ;_ end of progn ) ;if (SETQ rotang (GETVAR "snapang") nvwang (* (/ (- (* 2 PI) rotang) PI) 180) ) ;_ end of setq (IF (>= nvwang 180) (SETQ altang (- nvwang 180)) (SETQ altang (+ nvwang 180)) ) ;_ end of if ; (c:svang) (PRINC "\nUse SVANG to set Viewtwist to X-hairs. ") (PRINC) ) ;defun ROTX.LSP (DEFUN c:rotx () (SETQ orig_rotxerror *error* *error* rotx_error ) ;_ end of SETQ (COMMAND ".mview" "lock" "off" "all" "") (IF (SETQ pt1 (NENTSELP "\nSelect Line, Text, or enter first point for Snapang: " ) ;_ end of nentselp ) ;_ end of setq nil (WHILE (NOT (EQ (CAR (SETQ pt1 (GRREAD T 1 2))) 5))) ) ;_ end of if (SETQ pt1 (CADR pt1)) (rotx pt1) (c:svang) (SETQ pt1 nil) (COMMAND ".mview" "lock" "on" "all" "") (SETQ *error* orig_rotxerror) (PRINC) ) ;_ end of defun (DEFUN c:svang () (IF ukword nil (LOAD "ukword") ) ;_ end of if (SETQ useang (ukword 1 "A B 0 Quit" (STRCAT "Twist Angle =" (RTOS nvwang) ", =" (RTOS altang) " 0, or Quit; def=" ) ;_ end of strcat "A" ) ;_ end of ukword ) ;_ end of setq (COND ((= useang "A") (SETQ vwang nvwang) ) ((= useang "B") (SETQ vwang altang) ) ((= useang "0") (SETQ vwang 0) (SETVAR "snapang" 0) ) ) ;_ end of cond (IF (EQ useang "Quit") NIL (COMMAND "._dview" "" "tw" vwang "") ) (PRINC) ) ;_ end of defun ;|«Visual LISP© Format Options» (72 2 40 2 T "end of " 60 9 2 0 0 T T nil T) ;*** DO NOT add text below the comment! ***|;