;| These enhanced input functions prompt for user input External dependencies: WIKI-3PTTOBULGE WIKI-SEGMENT-LENGTH |; (DEFUN WIKI-GETANGLEX (GX-STARTINGPOINT GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE / GX-INPUT ) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) (0.0) ) ) (COND ((AND GX-STARTINGPOINT (SETQ GX-INPUT (GETANGLE GX-STARTINGPOINT (STRCAT "\n" GX-PROMPT " <" (ANGTOS GX-DEFAULTVALUE) ">: " ) ) ) ) GX-INPUT ) ((AND (NOT GX-STARTINGPOINT) (SETQ GX-INPUT (GETANGLE (STRCAT "\n" GX-PROMPT " <" (ANGTOS GX-DEFAULTVALUE) ">: " ) ) ) ) GX-INPUT ) (GX-DEFAULTVALUE) ) ) ;;;WIKI-GETDISTX ;;;Returns a distance (DEFUN WIKI-GETDISTX (GX-POINT1 GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE) (CAR (WIKI-GETDISTPOINT GX-POINT1 GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE)) ) ;;;WIKI-GETDISTPOINT ;;;Returns a distance, the endpoint of the distance, and the bulge used for the distance. ;;;'(distance endpoint bulge) (DEFUN WIKI-GETDISTPOINT (GX-POINT1 GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE / GX-POINT2 GX-POINT3 GX-BULGE GX-DISTANCE ) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) ) ) ;;If starting point wasn't provided, get it. (COND ((NOT GX-POINT1) (SETQ GX-POINT1 (GETPOINT "\nSpecify first point: ")) ) ) ;;If there is now a starting point, get the second point or Arc keyword. (COND (GX-POINT1 (INITGET "Arc") (SETQ GX-POINT2 (GETPOINT GX-POINT1 (STRCAT "\n" GX-PROMPT " [Arc]" (IF GX-DEFAULTVALUE (STRCAT " <" (RTOS GX-DEFAULTVALUE) ">") "" ) ": " ) ) ) ) ) (SETQ GX-DISTANCE (COND ;;If ( ;;point2 was not entered (NOT GX-POINT2) ;;then return the default value. GX-DEFAULTVALUE ) ;;Else if point2 isn't "Arc" ((/= "Arc" GX-POINT2) ;;then return the distance between point1 and point2 (DISTANCE GX-POINT1 GX-POINT2) ) ;;Else enter arc mode. (T ;;Prompt for the second and third arc points (SETQ GX-POINT2 (GETPOINT (STRCAT "\nSpecify point on arc: ") ) GX-POINT3 (GETPOINT (STRCAT "\nSpecify end point of arc: ") ) ) (COND ;;If the second and third arc point were provided, then ((AND GX-POINT2 GX-POINT3) ;;Return the length of the arc. (WIKI-SEGMENT-LENGTH GX-POINT1 GX-POINT3 (SETQ GX-BULGE (WIKI-3PTTOBULGE (WIKI-FLATTEN GX-POINT1) (WIKI-FLATTEN GX-POINT2) (WIKI-FLATTEN GX-POINT3) ) ) ) ) ) ) ) ) (LIST GX-DISTANCE (COND (GX-POINT3) (GX-POINT2) ) GX-BULGE ) ) ;;WIKI-GETINTX ;;Provided for legacy compatability and user experience. (DEFUN WIKI-GETINTX (GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE) (WIKI-GETINTXX GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE 0) ) ;;;WIKI-GETINTXX ;;;Extended (getint) with default value and drawing text selection ;;;Three modes: ;;;1. If a default or initial value is supplied, GETINTX prompts with it and allows user to enter Select from drawing text mode. ;;;2. If no default is supplied and MODE is 0, the first prompt is for standard input, with fallback to selecting value from drawing text. ;;;3. If no default is supplied and MODE is 1, the first prompt is for drawing text selection, with fallback to standard input. ;;;Returns an INT or nil if nothing provided. (DEFUN WIKI-GETINTXX (GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE GX-PROMPTMODE / GX-RESPONSE ) ;;Log all calls to this function. (WIKI-LOG (STRCAT "WIKI-GETINTX GX-PROMPT=" GX-PROMPT " GX-DEFAULT=" (IF GX-DEFAULTVALUE (ITOA GX-DEFAULTVALUE) "nil" ) " GX-INITIALVALUE=" (IF GX-INITIALVALUE (ITOA GX-INITIALVALUE) "nil" ) ) ) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) ) ) ;;First prompt (COND ;;If a default value was supplied, prompt with it and allow user to enter Select from drawing text mode. (GX-DEFAULTVALUE (INITGET "Select") (SETQ GX-RESPONSE (GETINT (STRCAT "\n" GX-PROMPT " or [Select from drawing] <" (ITOA GX-DEFAULTVALUE) ">: " ) ) ) ) ;;Else if mode is 0, prompt for standard input ((= GX-PROMPTMODE 0) (SETQ GX-RESPONSE (GETINT (STRCAT "\n" GX-PROMPT " or <Select from drawing>: " ) ) ) ) ;;Else if mode is 1, prompt for object select ((= GX-PROMPTMODE 1) (SETQ GX-RESPONSE (NENTSEL (STRCAT "\nSelect object with " GX-PROMPT " or <enter manually>: " ) ) ) ) ) ;;Second prompt if necessary (COND ;;If ((AND ;;no response (NOT GX-RESPONSE) ;;and there's a default value, GX-DEFAULTVALUE ) ;;No second prompt NIL ) ;;Else if ((OR (AND ;;no response (NOT GX-RESPONSE) ;;and mode is 0, (= GX-PROMPTMODE 0) ) ;;or response was Select (= GX-RESPONSE "Select") ) ;;Prompt for object select (SETQ GX-RESPONSE (NENTSEL (STRCAT "\nSelect object with " GX-PROMPT ": ") ) ) ) ;;Else if ((AND ;; no response (NOT GX-RESPONSE) ;;and mode is 1, (= GX-PROMPTMODE 1) ) ;;Prompt for standard input (SETQ GX-RESPONSE (GETINT (STRCAT "\n" GX-PROMPT ": "))) ) ) ;;Return the integer if provided (COND ;;If ((AND ;;there's a response GX-RESPONSE ;;and it's an integer, (= (TYPE GX-RESPONSE) 'INT) ) ;;Then return it GX-RESPONSE ) ;;Else if ((AND ;;there's a response GX-RESPONSE ;;and it's an entsel, (= (TYPE GX-RESPONSE) 'LIST) ) ;;Then return it ;;Then convert it to an integer (ATOI (CADR (WIKI-EXTRACT (CDR (ASSOC 1 (ENTGET (CAR GX-RESPONSE))))) ) ) ) ;;Else (T ;;Return the default GX-DEFAULTVALUE ) ) ) ;;WIKI-GETREALX ;;Provided for legacy compatability and user experience. (DEFUN WIKI-GETREALX (GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE) (WIKI-GETREALXX GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE 0) ) ;;;WIKI-GETREALXX ;;;Extended (getreal) with default value and drawing text selection ;;;Three modes: ;;;1. If a default or initial value is supplied, GETREALX prompts with it and allows user to enter Select from drawing text mode. ;;;2. If no default is supplied and MODE is 0, the first prompt is for standard input, with fallback to selecting value from drawing text. ;;;3. If no default is supplied and MODE is 1, the first prompt is for drawing text selection, with fallback to standard input. ;;;Returns an REAL or nil if nothing provided. (DEFUN WIKI-GETREALXX (GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE GX-PROMPTMODE / GX-RESPONSE ) ;;Log all calls to this function. (WIKI-LOG (STRCAT "WIKI-GETREALX GX-PROMPT=" GX-PROMPT " GX-DEFAULT=" (IF GX-DEFAULTVALUE (RTOS GX-DEFAULTVALUE 2) "nil" ) " GX-INITIALVALUE=" (IF GX-INITIALVALUE (RTOS GX-INITIALVALUE 2) "nil" ) ) ) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) ) ) ;;First prompt (COND ;;If a default value was supplied, prompt with it and allow user to enter Select from drawing text mode. (GX-DEFAULTVALUE (INITGET "Select") (SETQ GX-RESPONSE (GETREAL (STRCAT "\n" GX-PROMPT " or [Select from drawing] <" (RTOS GX-DEFAULTVALUE 2) ">: " ) ) ) ) ;;Else if mode is 0, prompt for standard input ((= GX-PROMPTMODE 0) (SETQ GX-RESPONSE (GETREAL (STRCAT "\n" GX-PROMPT " or <Select from drawing>: " ) ) ) ) ;;Else if mode is 1, prompt for object select ((= GX-PROMPTMODE 1) (SETQ GX-RESPONSE (NENTSEL (STRCAT "\nSelect object with " GX-PROMPT " or <enter manually>: " ) ) ) ) ) ;;Second prompt if necessary (COND ;;If ((AND ;;no response (NOT GX-RESPONSE) ;;and there's a default value, GX-DEFAULTVALUE ) ;;No second prompt NIL ) ;;Else if ((OR (AND ;;no response (NOT GX-RESPONSE) ;;and mode is 0, (= GX-PROMPTMODE 0) ) ;;or response was Select (= GX-RESPONSE "Select") ) ;;Prompt for object select (SETQ GX-RESPONSE (NENTSEL (STRCAT "\nSelect object with " GX-PROMPT ": ") ) ) ) ;;Else if ((AND ;; no response (NOT GX-RESPONSE) ;;and mode is 1, (= GX-PROMPTMODE 1) ) ;;Prompt for standard input (SETQ GX-RESPONSE (GETREAL (STRCAT "\n" GX-PROMPT ": "))) ) ) ;;Return the real number if provided (COND ;;If ((AND ;;there's a response GX-RESPONSE ;;and it's an integer, (= (TYPE GX-RESPONSE) 'REAL) ) ;;Then return it GX-RESPONSE ) ;;Else if ((AND ;;there's a response GX-RESPONSE ;;and it's an entsel, (= (TYPE GX-RESPONSE) 'LIST) ) ;;Then return it ;;Then convert it to an real (ATOF (CADR (WIKI-EXTRACT (CDR (ASSOC 1 (ENTGET (CAR GX-RESPONSE))))) ) ) ) ;;Else (T ;;Return the default GX-DEFAULTVALUE ) ) ) ;;;WIKI-GETPOINTX (DEFUN WIKI-GETPOINTX (GX-STARTINGPOINT GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE / GX-INPUT ) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) ('(0.0 0.0 0.0)) ) ) (SETQ GX-PROMPT (STRCAT GX-PROMPT " <" (RTOS (CAR GX-DEFAULTVALUE)) "," (RTOS (CADR GX-DEFAULTVALUE)) "," (RTOS (CADDR GX-DEFAULTVALUE)) ">: " ) ) (SETQ GX-INPUT (IF GX-STARTINGPOINT (GETPOINT GX-STARTINGPOINT GX-PROMPT) (GETPOINT GX-PROMPT) ) ) (IF (NOT GX-INPUT) GX-DEFAULTVALUE GX-INPUT ) ) (DEFUN WIKI-GETSTRINGX (GX-PROMPT GX-DEFAULTVALUE GX-INITIALVALUE / GX-INPUT) (SETQ GX-DEFAULTVALUE (COND (GX-DEFAULTVALUE) (GX-INITIALVALUE) ("") ) ) (COND ((/= "" (SETQ GX-INPUT (GETSTRING (STRCAT "\n" GX-PROMPT " <" GX-DEFAULTVALUE ">: ") ) ) ) GX-INPUT ) (GX-DEFAULTVALUE) ) ) ;;; WIKI-SEGMENT-LENGTH (DEFUN WIKI-SEGMENT-LENGTH ;;; Returns curve or straight length of a segment. (2DPNT1 2DPNT2 BULGE / D DELTA DOVER2 L R) (SETQ ;;Make sure points are truly 2d 2DPNT1 (WIKI-FLATTEN 2DPNT1) 2DPNT2 (WIKI-FLATTEN 2DPNT2) D (/ (DISTANCE 2DPNT1 2DPNT2) 2) ) ;_ end of setq (COND ((/= 0 BULGE) (SETQ DOVER2 (ABS (* 2 (ATAN BULGE))) DELTA (* 2 DOVER2) R (/ D (SIN DOVER2)) ) ;_ end of setq (* DELTA R) ) (T (* D 2)) ) ;_ end of cond )
Advertisement
46
pages
Enhanced input functions (AutoLISP function)
Advertisement