Blur314 发表于 2022-7-6 06:56:52

User input: Getpoint OR real a

Hi everybody,
 
First thing I want to apologize if something that I wrote sounds strange. Im spanish and my english is not as good as it should be=P.
Im learling little by little autolisp things, mostly strugling through examples, codes, etc... many of them from this forum so I thank you a lot ^_^.
 
At this moment I'm developing a routine that breaks/trims walls in order to insert doors or windows, and, after looking for it a few days, I would like to know if there's a way to use a number that users input on the command line (in a getpoint) without getting an error.,... wich is that happends everytime =/.
 

;; HOLE-O-MaTIC 2000;;by Arturo Blanco Ureña. 2013;; Breaks "walls" in order to insert windows or doors;; Based initialy on code from Pavel Chour http://klobouk.fsv.cvut.cz/~chour/Lisp/Chapter%206.htm(defun error1 (errmsg)(command "_undo" "_end")(setvar "CMDECHO" 1)(setvar "OSMODE" osmodevar)(setq *error* temperr)(prompt "\nAchtung!!! Verboten!!! Error!!!\n") (princ) )(defun c:holes(/ );P1a P2a P1 P2 P3 P4 A1 A2) (setq osmodevar         (getvar 'OSMODE)temperr           *error**error*           error1         ) (if (not ancho) (setq ancho 1.50)) (setq Tancho (rtos ancho)P1 "Width") (setvar "CMDECHO" 0) (command "_undo" "_begin") (setvar "osmode" 512);I'm using this structure in order to go back to the menu so I can change my mind several times. ;Don't know if there's a better way =P.;--- (while (= P1 "Width")(initget 128)(setq P1 (getpoint (strcat "\nSelect Point or :")))(cond ((numberp P1)        (setq ancho P1)                        ;trying to recognice P1 as a number but always goes on error =/                (setq Tancho (rtos ancho)));cond1           ((= P1 "Width")(setvar "osmode" 35)                                  (setq ancho (getdist "\nWidth of the Door/window?:"))                        (setq Tancho (rtos ancho)));cond2   );end cond);end while ;---(cond ((= P1 "Center") (setvar "OSMODE" 518)                 ;If the user want to break from the center of the window.                 (setq P1a (getpoint (strcat "\nSelect center :")))                 (setvar "OSMODE" 128)                (setq P2a (getpoint P1a "\nSelect the other side of the wall:")                      A1 (angle P1a P2a)                      A2 (+ (* pi 1.5) A1)                      P1 (polar P1a A2 (* ancho 0.5))                      P3 (polar P1a A2 (* ancho -0.5))                      P2 (polar P2a A2 (* ancho 0.5))                      P4 (polar P2a A2 (* ancho -0.5))                      ) );end cond1(T       (setvar "osmode" 128)                         ;if he/she wants to start from one side       (setq P2 (getpoint P1 "\nSelect the other side of the wall:"))       (setvar "osmode" 512)       (setq        A1 (angle P1 P2)                A2 (+ (* pi 1.5) A1)                P3 (polar P1 A2 ancho)                P4 (polar P2 A2 ancho)                P1a (polar P1 A2 (* ancho 0.5))                P2a (polar P2 A2 (* ancho 0.5))                )   );end else);end cond(setvar "osmode" 512) (command        "_break" P1 P3                 "_break" P2 P4                    "_line" P1 P2 "") (setq L1 (entlast)) (command        "_line" P3 P4 "") (setq L2 (entlast));I add this in order to trim extra lines in the middle of the wall. (command "_trim" L1 L2 "" "B" P1a P2a "" "")(command "_undo" "_end") (setvar "CMDECHO" 1) (setvar "OSMODE" osmodevar) (setq *error* temperr) (princ));end
 
As you see You can enter the "Width" to give it, but I would like to simply write down a number when asking for a point, recognize that is a number and use it as the value of the variant. If a point is entered, then continue normally.
 
Im a bit shy and its the first time i post a code. I have used several pieces of code from others to arrange the error handling/undo and its originally based on one tutorial from Pavel Chour, so I dont know if its right that I give permission or not to use it, or even its worth it (the trim still fails and i dont really get why ) but If anyone want to use it feel free.
 
Any tips critics and opinions are welcome also
页: [1]
查看完整版本: User input: Getpoint OR real a