;;;Auto invoke DDATTE, DDEDIT or DIM NEW based upon filtered selection. ;;; Routine will only select MTEXT, TEXT, ATTRIB, DIMENSION or ;;; INSERT w/attrib. It will report the type of entity selected ;;; select again. ;;; ;;; It was initially intended to be a command, hence the function name ;;; C:.... Note that the variable pstr is required, e.g. (c:ded pstr). ;;; pstr is simply the prompt string. It is set in redefinition ;;; of the commands that are affected in order to give the expected ;;; prompts. Invoke this routine from the redefined ddedit and ddatte. ;;; ;;; ;;; ;;; Changed selection window to set after each entsel pick. ;;; Fixes unexpected selections following transparent zooms. ;;; ;;;> Author: Henry C. Francis ;;;> 425 N. Ashe St. ;;;> Southern Pines, NC 28387 ;;;> http://paracadd.com ;;;> All rights reserved. ;;; ;;;> COPYRIGHT: 10-3-95 ;;;> EDITED: 07-26-2004 ;;; (command "undefine" "ddedit") (if (>= (READ (substr (getvar "acadver") 1 2)) 15) nil (progn (command "undefine" "ddatte") (defun c:ddatte (/ pstr) (setq pstr "\nSelect block: ") (if c:ded nil (load"ded")) (c:ded pstr) ) ) ) ;================================================================================================== (defun c:ddedit (/ pstr) (setq pstr "\n: "))) (setq scrnsz (getvar"screensize")) (IF (AND (EQ (GETVAR "TILEMODE") 0) (> (GETVAR "CVPORT") 1)) (PROGN (setq vportss (ssget "X" (LIST (CONS 0 "VIEWPORT")(CONS 69 (GETVAR "CVPORT"))))) (SETQ vpdat (ENTGET (SSNAME vportss 0))) (SETQ vp_scale (/ (CDR(ASSOC 45 vpdat))(CDR(ASSOC 41 vpdat)))) (SETQ ms_vsize (GETVAR "VIEWSIZE")) (COMMAND ".pspace") (SETQ ps_vsize (GETVAR "VIEWSIZE")) (COMMAND ".mspace") (SETQ pbscl (MIN (/ ps_vsize (/ ms_vsize vp_scale)) 1.0)) ) (SETQ pbscl 1.0) ) (setq pboxsz (*(/(GETVAR"PICKBOX")(CADR(GETVAR"SCREENSIZE")))(GETVAR"VIEWSIZE")pbscl)) (setq dvwtwst (getvar "viewtwist")) (setq tspt1 (polar tspt (- (* 1.25 pi) dvwtwst) (* (sin (* 0.25 pi)) pboxsz 2.0) ) ;_ end of polar tspt1a (polar tspt1 (- 0 dvwtwst) (* 2.0 pboxsz)) tspt2 (polar tspt (- (* 0.25 pi) dvwtwst) (* (sin (* 0.25 pi)) pboxsz 2.0) ) ;_ end of polar tspt2a (polar tspt2 (- 0 dvwtwst pi) (* 2.0 pboxsz)) ) ;_ end of setq ;;; (PRINC "\nWE SHOULD HAVE DRAWN A PLINE HERE! \n") ;;; (PRINC tspt1) ;;; (PRINC "\t") ;;; (PRINC tspt2) ;;; (PRINC) ;;; (IF (AND tspt1 tspt2) ;;; (command ".PLINE" ;;; TSPT1 ;;; (list (car TSPT2) (cadr TSPT1)) ;;; TSPT2 ;;; (list (car TSPT1) (cadr TSPT2)) ;;; "C" ;;; ) ;_ end of COMMAND ;;; ) ;;; (princ "\n\n screensize= ") ;;; (PRINC (GETVAR"SCREENSIZE")) ;;; (princ "\n\n viewsize= ") ;;; (PRINC (GETVAR"VIEWSIZE")) ;;; (princ "\n\n zoomfactor= ") ;;; (PRINC (GETVAR"ZOOMFACTOR")) ;;; (princ "\n\n dvwtwst= ") ;;; (PRINC dvwtwst) ;;; (princ "\n\n pickbox= ") ;;; (PRINC (GETVAR"PICKBOX")) ;;; (princ "\n\n pboxsz= ") ;;; (PRINC pboxsz) ;;; (princ (strcat "\n\n tspt1= (POLAR tspt1 (-(* 1.25 PI) " (RTOS DVWTWST 2 4) ") (*(SIN(* 0.25 PI)) " (RTOS PBOXSZ 2 4) " 2.0))")) ;;; (princ (strcat "\n\n tspt1a= (POLAR tspt (- 0 " (RTOS DVWTWST 2 4) ") (* 2.0 " (RTOS PBOXSZ 2 4) "))")) ;;; (PRINC) ;;; (COMMAND "PLINE" TSPT1 TSPT1A TSPT2 TSPT2A "C"); tests CP pick points for match w/ pickbox at mult. zoom MS/PS combos (setq tss (ssget "CP" (list tspt1 tspt1a tspt2 tspt2a tspt1) '((-4 . "") (-4 . "OR>"))) );setq ;;; (setq ent (entsel pstr)) (if tss (progn (setq ent (ssname tss 0)) (if (or (eq "TEXT" (cdr(assoc 0 (entget ent)))) (eq "MTEXT" (cdr(assoc 0 (entget ent)))) (eq "ATTDEF" (cdr(assoc 0 (entget ent)))) ) (progn (prompt (strcat "\n" (cdr(assoc 0 (entget ent))) " selected ")) (prompt "\n