;;;***************************************** ;;; Superior Designs - Custom programming available ;;; http://www.surfersnet.com/sdi/acad.htm ;;; e-mail superior@surfersnet.com ;;;***************************************** (grtext -1 "GOOD MORNING") (GRTEXT -1 "AND MAY THE FORCE BE WITH YOU") (SETQ MYNAME "CDC") (SETQ TEXTL "DIM") ;;;; LAYER FOR TEXT ENTITIES (SETQ DIML "DIM") ;;;;; LAYER FOR DIM ENTITIES (SETQ DIMUNIT (GETVAR "LUNITS")) ;;;;; SET DIMENSION UNITS (SETQ DIMPREC (GETVAR "LUPREC")) ;;;;; SET DIMENSION PRECISION (DEFUN C:EXIT()(COMMAND "UCS" "")(COMMAND "GRID" "OFF")(COMMAND "LAYER" "S" "0" "")(command "fill" "on") (COMMAND "ZOOM" "A")(SETVAR "LUPREC" 4)(SETVAR "OSMODE" 0)(COMMAND "SAVE" "") ) ; (command "undefine" "layer") ;(DEFUN C:layer()(COMMAND "-layer" "") ) (SETQ MYVER "3.25") (DEFUN C:MYVER ()(SETVAR "CMDECHO" 0)(COMMAND "TEXTSCR") (PRINC (STRCAT "\n VERSION: " MYVER)) (PRINC "\n ") (PRINC "\n INSTALLED COMMANDS: ") (PRINC "\n --- F0 -fillet radius 0 ") (PRINC "\n LS -set or create layer --- LAY -toggle layers ") (PRINC "\n MO -match object --- MT -match text ") (PRINC "\n STR -stretch crossing --- ANGMODE -switch axes") (PRINC "\n ITEM -leader with balloons --- LE -line w/text") (PRINC "\n MID2 -midpoint of 2 lines --- INT2 -intersection of 2 lines") (PRINC "\n H -horizontal dimensions --- V -vertical dimensions ") (PRINC "\n HD -break lines & change layer --- CM -copy/move ") (PRINC "\n SQ -square --- CT -copy/change text ") (PRINC "\n ") (PRINC "\n ") (PRINC) ) ;;;;*************** (defun c:sq() (setq SQerr *error*) (Defun *error* (msg)(setq *error* SQerr)(command "ucs" "w")(COMMAND "UCS" "O" OLDORG)(setvar "cmdecho" 1)(princ)) (SETVAR "CMDECHO" 0) (IF (= SQTXT nil)(SETQ SQTXT "Pline")) (INITGET 1 "P L") (WHILE (/= (TYPE (setq SQPT1(getpoint (STRCAT "Line/Pline/<" SQTXT "> "))) ) 'LIST) (IF (= (STRCASE SQPT1) "P")(PROGN(SETQ SQTXT "Pline")(INITGET 1 "P L"))) (IF (= (STRCASE SQPT1) "L")(PROGN(SETQ SQTXT "Line") (INITGET 1 "P L"))) ) (SETQ OLDORG(GETVAR "UCSORG")) (if (or (/= (car (getvar "ucsxdir")) 1.0) (/= (cadr (getvar "ucsydir")) 1.0)) (setq SQPT2(getCORNER SQPT1 "\npick 2nd corner: ")) (progn (SETVAR "LASTPOINT" SQPT1) (COMMAND "UCS" "O" SQPT1) (setq SQPT2(getCORNER '(0 0) "\npick 2nd corner: ")) (setq SQPT2(list(+(car SQPT2)(car SQPT1))(+(cadr SQPT2)(cadr SQPT1)))) (COMMAND "UCS" "W")(COMMAND "UCS" "O" OLDORG) ) ) ;end prog end if (COMMAND SQTXT SQPT1 (LIST (CAR SQPT2) (CADR SQPT1)) SQPT2 (LIST (CAR SQPT1)(CADR SQPT2)) "C") (setq *error* SQerr) (SETVAR "CMDECHO" 1)(PRIN1)) ;;;;;;;;******************** ;;;;;;;;******************** (defun c:bp()(command "break" pause "f" "cen,end,int" pause "@")) (defun c:da ()(setq clyr(getvar "CLAYER"))(setvar "cmdecho" 0) (command "layer" "s" dimL "") (setvar "cmdecho" 1)(command "dim1" "ang" PAUSE PAUSE PAUSE "" PAUSE) (setvar "cmdecho" 0)(command "layer" "s" clyr "") (setvar "cmdecho" 1)(princ)) ;;;***************************** (DEFUN C:DL()(COMMAND "LAYER" "S" DIML "")(COMMAND "DIM" "L" PAUSE PAUSE PAUSE PAUSE "EXIT") (COMMAND "LAYER" "S" "0") ) ;;************** (defun c:f0()(command "fillet" "r" "0" "fillet")) ;;;;;;;;;;;;************ (defun c:ls () (setvar "cmdecho" 0)(setq rnlr 1 ls:err *error*) (defun *error* () (msg)(setq *error* ls:err)(setvar "cmdecho" 1)) (IF (= (SETQ lslyr(GETSTRING "\nPress RETURN to select entity ")) "") (PROGN(while rnlr(setq layrset (entsel "\nSelect enity on target layer: ")) (if (/= layrset nil) (setq rnlr nil)(princ"\nNo enity found"))) (setq lslyr (cdr(assoc 8(entget(car layrset))))) ) ;END PROGN (IF (= (TBLSEARCH "LAYER" lslyr) nil)(PROGN (PRINC (STRCAT "LAYER '" lslyr "' DOESN'T EXIST")) (INITGET 1 "C S")(SETQ LSASK(GETKWORD (STRCAT "\n(C)reate new layer<" lslyr ">/(S)earch for existing layer: "))) (IF (= LSASK "C")(PROGN (IF (= (SETQ lslyrCLR(GETSTRING (STRCAT "\nCOLOR OF LAYER " lslyr " : "))) "")(SETQ lslyrCLR "WHITE")) (IF (= (SETQ lslyrLTP(GETSTRING (STRCAT "\nLINETYPE FOR LAYER " lslyr " : "))) "")(SETQ lslyrLTP "CONTINUOUS")) (COMMAND "LAYER" "N" lslyr "C" lslyrCLR lslyr "LT" lslyrLTP lslyr "") ) ;; END "c" (PROGN (COMMAND "LAYER" "?" "" "") (SETQ lslyr(GETSTRING "\n CHOOSE EXISTING LAYER NAME: ")) ) ) ;; END "s" END IF LSASK ))) ;; END PROGN END IF TBLSEARCH ;END IF lslyr (command "layer" "s" lslyr "")(terpri)(setq *error* ls:err)(setvar "cmdecho" 1)(princ)) ;;;;************** (defun c:mo ()(setvar "cmdecho" 0)(setq mo:err *error* nd 1) (defun *error* ()(msg)(setq *error* mo:err)(setvar "cmdecho" 1)) (setq mNEW(ssget))(if(/= mNEW nil)(while nd(setq m1 (entsel "\nSelect entity to match: "))(if (/= m1 nil) (progn (setq nd nil m1 (entget(car m1)) l2 (cdr(assoc 8 m1)) lt2 (cdr(assoc 6 m1)) c2 (cdr(assoc 62 m1)))(if (= c2 nil) (setq c2 "bylayer"))(if (= lt2 nil)(setq lt2 "bylayer")) (command "chprop" mNEW "" "c" c2 "la" l2 "lt" lt2 "")) (princ "\nNo entity found")))(Princ "\nNothing selected")) (setvar "cmdecho" 1)(princ)) ;;;;************* ;;;;********** (defun c:mt()(setq rn 1 tserr *error*) (defun *error* (msg) (setq *error* tserr)(setvar "cmdecho" 1)(princ)) (setvar "cmdecho" 0)(setq a(ssget))(if (/= a nil) (progn (setq al (sslength a) newa (ssadd)) (while(> al 0)(setq tmp (ssname a (setq al (1- al)))) (if (=(cdr(assoc 0 (entget tmp))) "TEXT") (ssadd tmp newa)))(setq a newa) (while rn(setq t1(entget(car(entsel "\nSelect text style to match: ")))) (if(= "TEXT" (cdr(assoc 0 t1)))(progn(setq rn nil ts (cdr(assoc 7 t1)) th (cdr(assoc 40 t1)) n (sslength a) index 0) (repeat n(setq bl(entget(ssname a index)) index (1+ index) c (assoc 7 bl) d (assoc 40 bl) e (cons (car c) ts) f (cons (car d) th) b2 (subst f d bl))(setq b2 (subst e c b2))(entmod b2)))(princ "\nInvalid selection")))) (princ "\nNothing selected"))(setq *error* tserr)(setvar "cmdecho" 1)(princ)) ;;;;******** ;(defun c:str(); (SETVAR "CMDECHO" 0) ;(SETQ STRERR *error*) ;(DEFUN *error* (MSG)(SETQ *error* strerr) (SETVAR "CMDECHO" 1) ;(SETVAR "LUNITS" OUNITS)(SETVAR "LUPREC" OLUPREC) (PRINC)) ;(SETQ OUNITS (GETVAR "LUNITS"))(SETQ OLUPREC (GETVAR "LUPREC")) ;(SETVAR "LUNITS" DIMUNIT)(SETVAR "LUPREC" DIMPREC) ;(command "stretch" "c" pause PAUSE "" PAUSE PAUSE) ;(SETVAR "LUNITS" OUNITS)(SETVAR "LUPREC" OLUPREC)(SETVAR "CMDECHO" 1) ;(SETQ *error* strerr)(PRINC) ) ;;;************************************** ;;;;******** (defun c:str() (SETVAR "CMDECHO" 0)(SETVAR "DIMCLRT" 0) (SETQ STRERR *error*) (DEFUN *error* (MSG)(SETQ *error* strerr) (SETVAR "CMDECHO" 1) (SETVAR "LUNITS" OUNITS)(SETVAR "LUPREC" OLUPREC) (PRINC)) (SETQ OUNITS (GETVAR "LUNITS"))(SETQ OLUPREC (GETVAR "LUPREC")) (SETVAR "LUNITS" DIMUNIT)(SETVAR "LUPREC" DIMPREC) (command "stretch" "c" pause PAUSE "" PAUSE PAUSE) (setq ssdim(ssget "p")) (SETQ I 0) (WHILE (< I (SSLENGTH SSDIM)) (IF (and (= (CDR (ASSOC 0 (ENTGET(SSNAME SSDIM I)) )) "DIMENSION") (= (CDR (ASSOC 3 (ENTGET(SSNAME SSDIM I)) )) "*UNNAMED") );end and (COMMAND "CHANGE" (SSNAME SSDIM I) "" "P" "C" "GREEN" "" ) ); END IF (SETQ I(1+ I)) ) ; END WHILE (SETVAR "LUNITS" OUNITS)(SETVAR "LUPREC" OLUPREC)(SETVAR "CMDECHO" 1) (SETQ *error* strerr)(PRINC) ) ;;;************************************** ;;;***************************************** (defun c:angmode ()(setq angerr *error* rr 1) (defun *error* (msg)(setq *error* angerr)(command "ucs" "w")(setvar "ucsicon" 0)(setvar "cmdecho" 1)(princ)) (setvar "cmdecho" 0)(setvar "ucsicon" 1)(command "ucs" "w") (initget 1 "S")(setq et(getreal "\nSelect a line/: ")) (if et(cond ((= (type et) 'REAL) (if(and(/= et 90.0) (/= et 180.0)(/= et 270.0) (/= et -90.0) (/= et -180) (/= et -270)) (progn(setq et (* pi (/ et 180.0)))(if(< et -1.55334)(setq et(+ et 3.14159))) (if(and(> et 1.57079) (< et 3.14159))(setq et(- et 1.57079))) (if(and(> et 3.14159) (< et 4.71238))(setq et(+ et 3.14159))) (setq xpt(polar '(0 0) et 100.2))(command "ucs" "3" "" xpt "")) (progn(princ et)(princ " degrees is invalid")(terpri)))) ((and (= (type et) 'STR) (= (strcase et) "S"))(while rr(setq et(entsel "\nPick a line: ")) (if(/= et nil) (if(= (cdr(assoc 0 (setq ett(entget (car et))))) "LINE") (progn(setq rr nil)(setq et (angle (cdr(assoc 10 ett)) (cdr(assoc 11 ett)))) (if(< et -1.55334)(setq et(+ et 3.14159)))(if(and(> et 1.57079) (< et 3.14159)) (setq et(- et 1.57079)))(if(and(> et 3.14159) (< et 4.71238))(setq et(+ et 3.14159))) (setq ett(* 180.0 (/ et pi))) (if(or(equal ett 0.00 0.01) (equal ett 90.0 0.01) (equal ett 360.0 0.01) (equal ett 270.0 0.01) (equal ett 180.0 0.01)) (setq et 0.0))(setq xpt(polar '(0 0) et 100.0))(command "ucs" "3" "" xpt "")) (princ "\nEntity is not a LINE"))(princ "\nNo line found"))))))(setvar "ucsicon" 1) (setvar "orthomode" 1)(setvar "cmdecho" 1)(setq *error* angerr)(princ)) (defun c:qe()(command "erase" "si" "au" pause)) ;;;;;************* (DEFUN MID2() (SETQ INTERR *ERROR*) (DEFUN *ERROR* (MSG) (SETVAR "CMDECHO" 1) (PRINC)) (SETQ A(ENTGET(CAR(ENTSEL "\n PICK 1st LINE")))) (SETQ B(CDR(ASSOC 10 A))) (SETQ C(CDR(ASSOC 11 A))) (SETQ D(ENTGET(CAR(ENTSEL "\n PICK 2nd LINE\n")))) (SETQ E(CDR(ASSOC 10 D))) (SETQ F(CDR(ASSOC 11 D))) (SETQ X(/ (+ (/ (+ (CAR B) (CAR C)) 2) (/ (+ (CAR E) (CAR F)) 2)) 2)) (SETQ Y(/ (+ (/ (+ (CADR B) (CADR C)) 2) (/ (+ (CADR E) (CADR F)) 2)) 2)) (SETQ PT(LIST X Y)) (SETQ *ERROR* INTERR) (PRINC PT)) ;;;;;************* ;;;;;************* (DEFUN INT2 () (SETQ INTERR *ERROR* R 1 RR 1 A NIL D NIL) (DEFUN *ERROR* (MSG) (PRINC)) (while r(SETQ A(ENTSEL "\nPick 1st line: ")) (if (/= a nil) (progn (SETQ A(ENTGET(CAR A))) (SETQ B(CDR(ASSOC 10 A))) (SETQ C(CDR(ASSOC 11 A))) (setq r nil) ) ) ) (while rr(SETQ D(ENTSEL "\nPick 2nd line: ")) (if (/= d nil) (progn (SETQ D(ENTGET(CAR D))) (SETQ E(CDR(ASSOC 10 D))) (SETQ F(CDR(ASSOC 11 D))) (setq rr nil) ) ) ) (SETQ B1(- (CADR B) (* (SETQ M1(/ (SIN(ANGLE C B)) (COS(ANGLE C B)))) (CAR B)))) (SETQ B2(- (CADR E) (* (SETQ M2(/ (SIN(ANGLE E F)) (COS(ANGLE E F)))) (CAR E)))) (IF(NOT(EQUAL M1 M2 0.00005)) (PROGN (SETQ X(/ (- B2 B1) (- M1 M2))) (IF (= (CAR B) (CAR C)) (SETQ Y(+ (* M2 X) B2)) (SETQ Y(+ (* M1 X) B1))) (IF (= (CAR E) (CAR F)) (SETQ Y(+ (* M1 X) B1)) (SETQ Y(+ (* M2 X) B2))) (SETQ PT (LIST X Y)) ) (SETQ PT "PARALLEL-LINES") ) (IF (AND (= (CAR B) (CAR C)) (= (CAR E) (CAR F)))(SETQ PT "PARALLEL-LINES")) (SETQ *ERROR* INTERR) (PRIN1 PT)) ;;;;;****************** ;;;;;****************** ;Hd.lsp will break and create hidden line between solid lines (defun c:HD (/ p1 p2 p3) (setq olderr *error*) (setvar "cmdecho" 0) (DEFUN *error* (MSG) (SETVAR "OSMODE" 0)(SETQ *error* OLDERR) (SETVAR "CMDECHO" 1)(PRIN1)) (setq rnlr 1) (IF (= HDLAYER nil)(PROGN (SETQ HDLAYER "HID") (IF (= (TBLSEARCH "LAYER" HDLAYER) nil) (PROGN (PRINC (STRCAT "\nLAYER '" HDLAYER "' DOESN'T EXIST, DEFAULTING TO LAYER '0' \n ")) (SETQ HDLAYER "0") )) )) (IF (= HDBREAK nil)(SETQ HDBREAK "2")) (setvar "osmode" 512) (INITGET 1 "1 2 L") (WHILE (/= (TYPE (setq P1(getpoint (STRCAT "1/2/Layer/<" HDBREAK " pt break/Layer-" HDLAYER ">