Search the Community
Showing results for tags 'repeat'.
-
Quickly entering commands tampers with the input
benhubel posted a topic in AutoCAD 2D Drafting, Object Properties & Interface
When I enter a command quickly, it will sometimes duplicate my input into the command line. Example: after selecting, if I press "m" for move, and quickly follow it with spacebar to confirm, I will be prompted to enter a base point. Sometimes, it will input an "m" in the command line in the place where I'm supposed to enter the point. I then have to backspace it before I can pick a point. This is happening with other commands too. If I type "line" then follow the last letter quickly with a spacebar (or enter), it will ask me for the line startpoint, with the prompt immediately followed by "e" (which is the most recently input character). It seems to happen more often if I have something already selected, and I have only seen it happen when a command is requesting a point. It isn't reliable, meaning it doesn't happen every time for any command. I thought it was a problem with the keyboard because it recently had liquid spilled on it, but I tried plugging another one in and it also acted exactly the same. It's a new problem that I've never seen before today. I can't get it to happen in any other programs, so I don't think it's my input. It also happens when I open a new drawing. It doesn't happen, however, on any other computers here, only mine. I thought it might be a LISP interaction, but it continued even after disabling all custom routines. Despite being a minor issue, it's slowing me down dramatically. For reference, I've attached an image of what's happening. I didn't enter the "c" in the command line, except previously when entering "sc". Has anybody ever had this happen before, and do you know of a possible cause/solution? -
hi frids, if there is any other way to do this program in simply..please help me plpl.csv
-
I have to 2 lisp routines that I need to Loop but I need some help. This is just so the user doesn't have to hit enter to return to the command. ; TIES TO BOUNDARY (DEFUN C:DAT () (command ".osnap" "end,per") (COMMAND "LAYER" "S" "BUILDING_LABELS" "") (COMMAND "DIM" "RES" "HOUSE" "EXIT") (COMMAND "DIMALIGNED") (command ".osnap" "NOD,end,INT,CEN,mid") ) ; BUILDING DIMS (DEFUN C:DAH () (command ".osnap" "mid") (COMMAND "LAYER" "S" "BUILDING_LABELS" "") (COMMAND "DIM" "RES" "WALLS" "EXIT") (command ".osnap" "NOD,end,INT,CEN,mid") (COMMAND "DIMALIGNED" "") )
-
insert block at distance & angle from first block, then repeat until stopped
BudPerry posted a topic in AutoLISP, Visual LISP & DCL
In this portion of a continuing program I'm putting together, a 4' block is inserted at a user point at a defined angle, then it is again inserted but this time 4' away at the same angle so that the two blocks form an 8' line. This is continued until the user stops the program. However, when the second block is inserted, it is rotated correctly but inserted somewhere north of where it is supposed to be. Obviously my polar calc or something is off: (defun c:blockinsert () ; ; ; ;part 5 of overall program ; ; (setq p1 (getpoint "\nSELECT POINT: "));user inputs first point (setq p2 (getpoint "\nSELECT NEXT POINT: "));user inputs second point - for use in part 6 of program ; (setq ang1 (angle p1 p2));get angle from user points (setq angreal (* 180.0 (/ ang1 pi)));convert from radians to degrees ; (setq blockpt "@48<");create a string that puts the next block at 48 inches away at same angle - from first point ; (command "_insert" "I:/documents/pog-panel-4" P1 "1" "1" angreal "1" "category text" "lf");first insertion at first point with two attributes filled ; (setq nextpoint (polar p1 angreal 48));add 4' from p1 at same angle (setq nextp (strcat blockpt angreal));this line is wrong, but I can't figure out how to get the info into the command line... ; (command "_insert" "I:/documents/pog-panel-4" nextp "1" "1" angreal "1" "category text" texttwo) ;insert 4' from last one ; ; ;now I need to add a line that will increase the amount from 4' to 8', ;then to 12', and so on in multiples of 4' - the block is 4' long ;until the user hits escape to stop the block insertions ;maybe use the repeat function? ; );end defun Any ideas on how to correct the insertion and how to create the repeat function and user break? -
Hi All, I have figured out to combine my three Lisp rputine but it still need works, i need to repeat the last part of the routine until right clicked and i can't figure it out it's driving me nuts. Can some one please help me. Also is there a way to use the the results from the first part of the routine to run the rest of the routine? Thanks, Brian (defun c:test1( / plines ; selection set of polylines ext ; extrnal point dist ; distance to offset poly ; a polyline from plines plist ; the list of poly del ; polyline to delete int ; internal point i) (command "undo" "begin") (princ "select polylines") (setq plines (ssget) i 0 ext (getvar "limmax") dist (getdist (strcat "distance <" (if olddist (rtos olddist) ;use old value as default "") ">"))) (if (not dist) (setq dist olddist)) ;reuse old distance if user press <Enter> (repeat (sslength plines) (setq poly (ssname plines i)) (setq plist (entget poly)) (command "offset" dist poly ext "") (setq del (entlast) int (polar (cdr (assoc 10 (entget del))) (angle (cdr (assoc 10 (entget del))) (cdr (assoc 10 plist))) (* 2 (distance (cdr (assoc 10 plist)) (cdr (assoc 10 (entget del))))))) (command "offset" dist poly int "") (command "_.change" (entlast) "" "_p" "_la" (getvar 'clayer) "") (entdel del) (setq i (1+ i))) (command "undo" "end") (setq olddist dist) ;preserve current distance for next run (vl-load-com) (princ "\n>>> Select lines to extend/reduce <<< ") (if (and (setq lSet (ssget '((0 . "LINE")))); (setq lDel (getreal "\nSpecify : ")) ); end and (progn (initget 1 "Positive Negative Both") (setq doMode (getkword "\nSpecify direction [Positive/Negative/Both]: ") objLst(mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr(ssnamex lSet))))); end setq (vla-StartUndoMark (setq actDoc (vla-get-ActiveDocument (vlax-get-acad-object)))); end vla-StartUndoMark (if(member doMode '("Negative" "Both")) (foreach ln objLst (vlax-put ln 'startpoint (polar (vlax-get ln 'startpoint) (vlax-get ln 'angle)(- lDel))); end vlax-put ); end foreach ); end if (if(member doMode '("Positive" "Both")) (foreach ln objLst (vlax-put ln 'endpoint (polar (vlax-get ln 'endpoint) (vlax-get ln 'angle)lDel)) ); end foreach ); end if (vla-EndUndoMark actDoc) ); end progn ); end if (vl-load-com) (if (and (setq cEnt (car (entsel "\nSelect Object: "))) (member (cdr (assoc 0 (entget cEnt))) '("LWPOLYLINE" "POLYLINE" "LINE"))) (progn (setq tStr (strcat "1@" (rtos (- (vla-get-length (vlax-ename->vla-object cEnt)) 5.38)) (strcat "''")) tBox (textbox (list (cons 1 tStr) (cons 40 (getvar "TEXTSIZE")))) tHgt (- (cadadr tBox) (cadar tBox)) twid (- (caadr tBox) (caar tBox))) (princ "\nPosition Text...") (while (eq 5 (car (setq gr (grread t 5 0)))) (redraw) (if (listp (setq sPt (cadr gr))) (progn (setq cPt (vlax-curve-getClosestPointto cEnt sPt) lAng (angle cPt sPt) bpt (polar cPt lAng (/ (getvar "TEXTSIZE") 2.)) tpt (polar bpt lAng tHgt) mPt (polar bPt lAng (/ tHgt 2.)) pt1 (polar bpt (+ lAng (/ pi 2.)) (/ tWid 2.)) pt2 (polar bPt (- lAng (/ pi 2.)) (/ tWid 2.)) pt3 (polar tpt (+ lAng (/ pi 2.)) (/ tWid 2.)) pt4 (polar tPt (- lAng (/ pi 2.)) (/ tWid 2.))) (grvecs (list -3 pt1 pt2 pt3 pt4 pt1 pt3 pt2 pt4))))) (if (eq 3 (car gr)) (progn (setq lAng (- lAng (/ pi 2.))) (cond ((and (> lAng (/ pi 2)) (<= lAng pi)) (setq lAng (- lAng pi))) ((and (> lAng pi) (<= lAng (/ (* 3 pi) 2))) (setq lAng (+ lAng pi)))) (Make_Text mPt tStr lAng)))) (princ "\n<!> Incorrect Selection <!>")) (redraw) (princ)) (defun Make_Text (pt val rot) (entmake (list (cons 0 "TEXT") (cons 8 (getvar "CLAYER")) (cons 62 1) (cons 10 pt) (cons 40 (getvar "TEXTSIZE")) (cons 1 val) (cons 50 rot) (cons 7 (getvar "TEXTSTYLE")) (cons 71 0) (cons 72 1) (cons 73 2) (cons 11 pt))) ) (princ)