Tiger Posted August 14, 2009 Posted August 14, 2009 I have a lisp, actually i have several version of this lisp but it seems to have a grown a bug or something becuase it's not behaving now like it used to do. The problem is that it places the X-text and the Y-text right on top of each other, and not being able to read Lisps, I have no idea what variable it is that governs that, anyone that can help me? ;;-------------------------------------------------------------------------- ;; COORD.LSP PLACE CO-ORDINATE TEXT OF SELECTED POINT ;;========================================================================== ;;DESCRIPTION: This routine will place co-ordinate text alongside a defined ;; (user selected) point. The `x' & `y' values of the selected ;; point will be preceded with an `E' & `N' respectively. This ;; routine also places a donut at the point. The co-ord text is ;; then echoed to the screen alongside the selected point, and ;; the user is prompted to select the desired location of the ;; text. ;; ;;START COMMAND........ coord ;; ;;WRITTEN BY: ALAN CULLEN December 1994 ;; ;;AMENDED: August 1995 Error handler included ;; November 1999 Modified to read text settings from ;; configuration file "COORD.CFG" ;; October 2007 Re-written for Tiger ;; ;;---------------------------ERROR HANDLER------------------------------ (defun clerr (s) (if (/= s "Function cancelled") (if (= s "quit / exit abort") (princ) (princ (strcat "\nError: " s)) ) ) (setvar "donutid" olid) (setvar "donutod" olod) (setvar "blipmode" olblip) (setvar "LUPREC" oluprec) ;; (setvar "osmode" olsnap) (setq el1 nil el2 nil) (setvar "cmdecho" ocmd) (setvar "ANGBASE" oangbase) ;;Angle zero direction to "north" (setvar "ANGDIR" oangdir) ;;Clockwise angles (setvar "dragmode" odrag) (if olderr (setq *error* olderr)) (princ "\nERROR...CONSOLE BREAK...PREVIOUS DRAWING STATUS RESTORED...") (princ) ) ;;-----------------------------MAIN PROGRAM------------------------------ (DEFUN C:cr () (princ "\n PLACE POINT CO-ORDINATE TEXT - November 1999 - Alan CULLEN") (setq txtang 90) ;;*** Set orientation angle for text (set for 0 deg = North, angles measured clockwise) (setq lnspace 1.5) ;;*** Set text line spacing factor (generally 1. (setq olderr *error* *error* clerr) ;;Set new error handler (setq ocmd (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq olid (getvar "DONUTID")) (setvar "donutid" 0) (setq olod (getvar "DONUTOD")) (setvar "donutod" 300.0) ;;*** Sätter ytterdiameter på donut (setq oluprec (getvar "LUPREC")) (setvar "LUPREC" 3) ;;*** Sätter antal decimaler ;; (setq olsnap (getvar "osmode")) (setq ts 5) ;;*** Sätter text storlek (setq olblip (getvar "blipmode")) (setvar "blipmode" 0) ;;*** Set BLIPMODE enviroment variable 0/1 ... 0=OFF, 1=ON (setq oangbase (getvar "ANGBASE")) (setvar "ANGBASE" (/ pi 2)) ;;Angle zero direction to "north" (setq oangdir (getvar "ANGDIR")) (setvar "ANGDIR" 1) ;;Clockwise angles (setq odrag (getvar "dragmode")) (setvar "dragmode" 2) (setq pt T) (while pt (princ "\n PLACE POINT CO-ORDINATE TEXT - November 1999 - Alan CULLEN") ;; (setvar "osmode" 1) (setq pt (getpoint "\n Välj Punkt - <RETURN> för att avsluta :")) ;; (setvar "osmode" 0) (if (/= pt nil) (progn (setq ptx (car pt) pty (cadr pt)) (setq txtptx (/ ptx 1000)) (setq txtptx (strcat "Y: " (rtos txtptx))) (setq txtpty (/ pty 1000)) (setq txtpty (strcat "X: " (rtos txtpty))) (setq pt1 (list ptx pty 0)) (setq txtpt1 (list ptx (+ pty (* lnspace ts)) 0)) (command "doughnut" "" "" pt1 "") (command "text" txtpt1 ts txtang txtpty) (setq el1 (entlast)) (command "text" pt1 ts txtang txtptx) (setq el2 (entlast)) (prompt "\n Välj Plats För Koordinattext ") (command "move" el1 el2 "" pt1 pause) ))) (setvar "donutid" olid) (setvar "donutod" olod) (setvar "blipmode" olblip) (setvar "LUPREC" oluprec) ;; (setvar "osmode" olsnap) (setq el1 nil el2 nil) (setq *error* olderr) ;; Restore old error handler (setvar "cmdecho" ocmd) (setvar "ANGBASE" oangbase) (setvar "ANGDIR" oangdir) (setvar "dragmode" odrag) (princ) ) Quote
eldon Posted August 14, 2009 Posted August 14, 2009 AC might have been on the Ted Seriously though, AC always changed angles round so that they worked as survey angles, and that complicates matters if you are not used to it. Here are a couple of simple lisps that write coordinates (WC) as texts in metre coordinates. One to use when the drawing units are metres, and the other writes coordinates in metres when the drawing units are millimetres. No error checking, and you have to put in the text height into the lisp. See if they can give you an idea. ;WC.LSP is a programme to write coordinates. eldon Nov 1999 (defun C:WC (/ pt0 e east eastin n north northin) ;here begins the loop that gets the actual positions (while (setq pt0 (getpoint "\nPick co-ordinate point: ")) (setq e (car pt0) ;easting coord as number n (cadr pt0) ;northing coord as number east (rtos e 2 3) ;easting coord as string north (rtos n 2 3) ;northing coord as string eastin (strcat east "mE" ) northin (strcat north "mN") ) (command "TEXT" pt0 "0.1" "0" eastin);size of text changed manually (command "TEXT" "" northin) ) (princ) ) ;WCMM.LSP is a programme to write coordinates in m when dwg units are mm. eldon Nov 1999 (defun C:WCmm (/ pt0 e east eastin n north northin) ;here begins the loop that gets the actual positions (while (setq pt0 (getpoint "\nPick co-ordinate point: ")) (setq e (car pt0) ;easting coord as number n (cadr pt0) ;northing coord as number east (rtos (/ e 1000) 2 3) ;easting coord as string north (rtos (/ n 1000) 2 3) ;northing coord as string eastin (strcat east "mE" ) northin (strcat north "mN") ) (command "TEXT" pt0 "500" "0" eastin);size of text changed manually (command "TEXT" "" northin) ) (princ) ) Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 Hey Tiger, I'll take a look at the LISP for you - but in the meantime, here are a few others that may get you by: http://www.cadtutor.net/forum/showthread.php?t=37762 http://www.cadtutor.net/forum/showthread.php?t=36668 http://www.cadtutor.net/forum/showthread.php?t=38525 http://www.cadtutor.net/forum/showthread.php?t=19666&page=4 http://www.cadtutor.net/forum/showthread.php?t=36328 http://www.cadtutor.net/forum/showthread.php?t=36808 Some may be of more relevance than others... taken from my "links vault" lol Also, VVA has a great set of programs for the task: http://www.cadtutor.net/forum/showthread.php?t=31653 Lee EDIT: PS> Tiger, are you sure you want to be using "donuts" for your points - this makes it very hard to extract the point information from the drawing (as opposed to using ACAD points). Just a thought Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 Eldon, Just a tip - I'd be careful using the TEXT command - it can sometimes have undesired results. The prompts with the TEXT command are not consistent, and so the LISP can error out sometimes. I would instead use an entmake method Also, watch out for your Osnaps Lee Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 AC might have been on the Ted Seriously though, AC always changed angles round so that they worked as survey angles, and that complicates matters if you are not used to it. AC was always on the Ted :wink: This is one that he used and adopted for me, hence the survey-style to it - I'll take a look at yours, cheers! Lee - nah, the donut I'm not so sure I need, but I haven't bothered to remove it, sometimes good to see what point I mean. Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 OK, well if you don't find anything that suits in those links or from what Eldon has provided - I'd be happy to help you out with a LISP (this kind of program isn't too complex to make ) Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 ok, so a look at the links you provided Lee, I can't seem to find one that does what I want, most seem to want to get the points exported to a txt- or a excel-file, that is not needed for me. Really, the CR.lsp that I posted does want I want, it picks up the coordinates of a point, this particular version does so in meters even if the drawing is in millimeters, it lets me place the text where I want and it doesn't add any other text than the coordinates. It's just that wherever I place the text, it places the X and Y texts on top of each other, a bit varied depending on where I place the texts. Just want to figure out what variable it is that affects that... Quote
NBC Posted August 14, 2009 Posted August 14, 2009 from your initial code Tiger, it is using el1 as the y co-ordinate , and el2 as the x co-ordinate; then it is moving both the x and y text together to the same point using pt1 which is defined as the x and y co-ordinate Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 Tiger, Give this a try. I've spent a bit longer than usual commenting the code so that you know "what does what". I have tried to make it similar to the original code - but it may need tweaking as the original code is a little, how can I put it, "off". [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:cr [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* doc lFac tSze tLay tSty vl ov pt t1 t2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]msg[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#ff00ff]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\n** Error: "[/color][/b] msg [b][color=#ff00ff]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lFac [b][color=#009999]1.5[/color][/b] [i][color=#990099];; <<-- Line Spacing Factor[/color][/i] tSze [b][color=#009999]5.0[/color][/b] [i][color=#990099];; <<-- TextSize (nil to use TEXTSIZE sys var)[/color][/i] tLay [b][color=#ff00ff]"TEXT"[/color][/b] [i][color=#990099];; <<-- Text Layer (nil to use CLAYER sys var)[/color][/i] tSty [b][color=BLUE]nil[/color][/b] [i][color=#990099];; <<-- Text Style (nil to use TEXTSTYLE sys var)[/color][/i] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] vl [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b][b][color=RED])[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]getvar[/color][/b] vl[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];;<<-- Error Checking -->>[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]numberp[/color][/b] lFac[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]0[/color][/b] lFac[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Line Spacing not Valid **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]STR [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Layer not a String **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]t [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tSze [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tSze [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"TEXTSIZE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tSty [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tSty [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"TEXTSTYLE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LAYER"[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b] doc[b][color=RED])[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<---------------------->>[/color][/i] [i][color=#990099];; <<-- Business End -->>[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#ff00ff]"\n Välj Punkt - <RETURN> för att avsluta :"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] pt [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.point"[/color][/b] pt[b][color=RED])[/color][/b] [i][color=#990099];; << Comment this if unnecessary[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] t1 [b][color=RED]([/color][/b]Make_Text pt [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"X: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=#009999]1000.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Text is at 90 deg.[/color][/i] tSze tLay tSty[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] t2 [b][color=RED]([/color][/b]Make_Text [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] lFac tSze[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"Y: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b] [b][color=#009999]1000.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b] tSze tLay tSty[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] ov[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.move"[/color][/b] t1 t2 [b][color=#ff00ff]""[/color][/b] pt pause[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<------------------>>[/color][/i] [b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<-- Sub-Function -->> [/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Make_Text [b][color=RED]([/color][/b]pt val rot sZe lay sty[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]8[/color][/b] lay[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]40[/color][/b] sZe[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b] val[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]50[/color][/b] rot[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]7[/color][/b] sty[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]71[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]72[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; 0 = Left, 1 = Center, 2 = Right[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]73[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; 0 = Base, 1 = Bottom, 2 = Middle, 3 = Top[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]11[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 from your initial code Tiger, it is using el1 as the y co-ordinate , and el2 as the x co-ordinate; then it is moving both the x and y text together to the same point using pt1 which is defined as the x and y co-ordinate yes, I notice that you are moving the text that you have just placed - but I thought this was intentional, so I left it in the new code. It is easily seen and can be commented if necessary. Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 Tiger, Give this a try. I've spent a bit longer than usual commenting the code so that you know "what does what". I have tried to make it similar to the original code - but it may need tweaking as the original code is a little, how can I put it, "off". Thanks a bunch mate, except that the text comes in at a 90degree angle it works like a charm yeah, it's suppose to move the texts so I can place it where I want - sometimes there are a lot of points close together so I need to fiddle with the placement of the texts, and it's so much easier to do at the start than afterwards. And yes, the original code is a bit off, first becuase it's the work of AC, and very custom to him and then re-written to be custom to my settings. Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 I thought the text was set to come in at 90 degs in the original code, so implemented it in this one... but it could be that Alan changed a few other sys vars to change this... EDIT: I commented the part of the code that sets it to 90degs. It is in radians, hence (/ pi 2.) - just change this to 0. Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 from your initial code Tiger, it is using el1 as the y co-ordinate , and el2 as the x co-ordinate; then it is moving both the x and y text together to the same point using pt1 which is defined as the x and y co-ordinate el1 being the actual coordinate or the coordinate for the text position? I thought the text was set to come in at 90 degs in the original code, so implemented it in this one... but it could be that Alan changed a few other sys vars to change this... probably Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 el1 and el2 are the text entities that are being moved after the point is clicked. It just seems weird that you would click and point, then move away from it thats all :wink: Quote
eldon Posted August 14, 2009 Posted August 14, 2009 Eldon, Just a tip - I'd be careful using the TEXT command - it can sometimes have undesired results. The prompts with the TEXT command are not consistent, and so the LISP can error out sometimes. I would instead use an entmake method Also, watch out for your Osnaps Lee Thank you very much for your comments. It was written 10 years ago when I had to make it work without any help. I work without any Osnaps set, and use the F keys (accelerator keys) to set an Osnap as I need. But the code could give some ideas, even if only to show what not to do Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 el1 and el2 are the text entities that are being moved after the point is clicked. It just seems weird that you would click and point, then move away from it thats all :wink: uh...perhaps I'm not reading you right here - but the original CR.lsp and your CR.lsp works the same way from where I see it - click a point, click where you want to place the texts. If the code takes a roundabout, I have no idea. Thanks for the 90degree fix Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 Thank you very much for your comments. It was written 10 years ago when I had to make it work without any help. I work without any Osnaps set, and use the F keys (accelerator keys) to set an Osnap as I need. But the code could give some ideas, even if only to show what not to do Not a problem Eldon ~ I'm just too petty really and like to see "nice" code uh...perhaps I'm not reading you right here - but the original CR.lsp and your CR.lsp works the same way from where I see it - click a point, click where you want to place the texts. If the code takes a roundabout, I have no idea. No, its just that I would have though you would want the text to be at the point you have clicked, thats all. Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 No, its just that I would have though you would want the text to be at the point you have clicked, thats all. Ah, well, no, that's why the donut was there - to show what point the coordinates was referring to. The point in the question can't be covered with texts, that need to be visible as well. oh, and I feel like an idiot here - but I can't seem to get the 90-degree changed to 0-degree.... you mind typing it up as it should look like in the code? Edit: If I change it to (setq t2 (Make_Text (polar pt 0 (* lFac tSze)) (strcat "Y: " (rtos (/ (cadr pt) 1000.))) (/ 0 2.) tSze tLay tSty)) the text does indead come in the right way - but now they're back to being on top of each other!! Quote
Lee Mac Posted August 14, 2009 Posted August 14, 2009 Sorry Tiger, I am the idiot - I didn't explain enough.. I forgot you need to change the offset as well See here: [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:cr [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* doc lFac tSze tLay tSty vl ov pt t1 t2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]msg[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#ff00ff]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\n** Error: "[/color][/b] msg [b][color=#ff00ff]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lFac [b][color=#009999]1.5[/color][/b] [i][color=#990099];; <<-- Line Spacing Factor[/color][/i] tSze [b][color=#009999]5.0[/color][/b] [i][color=#990099];; <<-- TextSize (nil to use TEXTSIZE sys var)[/color][/i] tLay [b][color=#ff00ff]"TEXT"[/color][/b] [i][color=#990099];; <<-- Text Layer (nil to use CLAYER sys var)[/color][/i] tSty [b][color=BLUE]nil[/color][/b] [i][color=#990099];; <<-- Text Style (nil to use TEXTSTYLE sys var)[/color][/i] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] vl [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b][b][color=RED])[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]getvar[/color][/b] vl[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];;<<-- Error Checking -->>[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]numberp[/color][/b] lFac[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]0[/color][/b] lFac[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Line Spacing not Valid **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]STR [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Layer not a String **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]t [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tSze [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tSze [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"TEXTSIZE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] tSty [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tSty [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"TEXTSTYLE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] tLay [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LAYER"[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b] doc[b][color=RED])[/color][/b] tLay[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<---------------------->>[/color][/i] [i][color=#990099];; <<-- Business End -->>[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#ff00ff]"\n Välj Punkt - <RETURN> för att avsluta :"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] pt [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.point"[/color][/b] pt[b][color=RED])[/color][/b] [i][color=#990099];; << Comment this if unnecessary[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] t1 [b][color=RED]([/color][/b]Make_Text pt [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"X: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=#009999]1000.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b] [i][color=#990099];; Text is at 0 deg.[/color][/i] tSze tLay tSty[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] t2 [b][color=RED]([/color][/b]Make_Text [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009900]3[/color][/b] [b][color=BLUE]pi[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] lFac tSze[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"Y: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b] [b][color=#009999]1000.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b] tSze tLay tSty[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] ov[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.move"[/color][/b] t1 t2 [b][color=#ff00ff]""[/color][/b] pt pause[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<------------------>>[/color][/i] [b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; <<-- Sub-Function -->> [/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Make_Text [b][color=RED]([/color][/b]pt val rot sZe lay sty[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]8[/color][/b] lay[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]40[/color][/b] sZe[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b] val[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]50[/color][/b] rot[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]7[/color][/b] sty[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]71[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]72[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; 0 = Left, 1 = Center, 2 = Right[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]73[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; 0 = Base, 1 = Bottom, 2 = Middle, 3 = Top[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]11[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
Tiger Posted August 14, 2009 Author Posted August 14, 2009 Sorry Tiger, I am the idiot - I didn't explain enough.. I forgot you need to change the offset as well Thanks mate! Just the irony of it that two pages down into a problem, and the same problem occurs Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.