Utah_Indie Posted March 16, 2011 Posted March 16, 2011 I just can't seem to get these 3 text items not to be one on top of the other:x I have taken this base file and tried to do something more elaborate with it and it is having the same problem, but this code hasn't been modified since 1/20 so I wonder if it is a system variable or something. Even back in January, every once in a while, one piece of the 3 text objects would be off doing its own thing in the vicinity of the others or at a vertex of a polyline. I'm confused. ;adapted from code from Jeffery P. Sanders (defun C:GA() ;turn the system echo off (setvar "cmdecho" 0) ;UNITS AND PRECISION (setvar "LUPREC" 0) (setvar "LUNITS" 2) (setvar "mtextcolumn" 0) ;layer settings (if (not (tblsearch "layer" "A-FLOOR-IDEN") ) (command "-layer" "m" "A-FLOOR-IDEN" "C" "GREEN" "A-FLOOR-IDEN" "") ( ) ) (if (not (tblsearch "layer" "A-ANNO-NOTE") ) (command "-layer" "m" "A-ANNO-NOTE" "C" "8" "A-ANNO-NOTE" "") ( ) ) (if (not (tblsearch "layer" "A-AREA-IDEN") ) (command "-layer" "m" "A-AREA-IDEN" "C" "YELLOW" "A-AREA-IDEN" "") ( ) ) ;set up a variable to hold the area (while T (setq myArea 0) (setq SpaceType 0) ;select one object (setq ent(entsel)) (if (car ent) (progn ;find the area of the polyline (command "area" "Object" (car ent)) (setq x (getvar "Area")) (if(setq pt1(getpoint "\n Insertion Point: ")) (progn (SETVAR "CLAYER" "A-FLOOR-IDEN") ;SETS AREA in Square foot TEXT LAYER CLAYER VARIABLE TO A-FLOOR-IDEN (command "mtext" pt1 "@6,0" (strcat (rtos x 2 2) " sq ft")"") (SETVAR "CLAYER" "A-ANNO-NOTE") ;SETS OFFICE TYPE TEXT LAYER CLAYER VARIABLE TO A-ANNO-NOTE (setq SpaceType(getstring T "\n Enter Space Type ")) (command "mtext" (polar pt1 (* pi 1.5) (* 1.5 (getvar "textsize"))) "@6,0" (strcat SpaceType)"") (SETVAR "CLAYER" "A-AREA-IDEN") ;SETS OFFICE TYPE TEXT LAYER CLAYER VARIABLE TO A-AREA-IDEN (setq n (+ n 1)) (command "mtext" (polar pt1 (* pi 1.5) (* -1.5 (getvar "textsize"))) "@6,0" (strcat (rtos n 2 0))"") ) ) ;close the if progn for point selection ) ;close the if ) ;close the if progn for object selection ;close the if progn for space type ;close the if progn for room # ) ;close the if statement ) ; ends repeat ;reset the system echo variable (setvar "cmdecho" 1) ;supress the last echo (princ) Quote
Lee Mac Posted March 16, 2011 Posted March 16, 2011 (edited) Hi Utah_Indie, A few points about your code: I wouldn't rely on using the AREA System Variable to retrieve the area of objects, but would instead recommend either using the ActiveX Area property, or the GetArea Curve function as demonstrated by my code below. There is no need to use 'strcat' when you aren't concatenating strings. Command calls to MText will be affected by ObjectSnap - this might explain the problems you were encountering. Here is my example: [color=RED]([/color][color=BLUE]defun[/color] c:test [color=RED]([/color] [color=BLUE]/[/color] _Layer _MText a e i p s [color=RED])[/color] [color=#990099];;----------------------------------------------;;[/color] [color=#990099];; Example © Lee Mac 2011 - www.lee-mac.com ;;[/color] [color=#990099];;----------------------------------------------;;[/color] [color=RED]([/color][color=BLUE]defun[/color] _Layer [color=RED]([/color] n c [color=RED])[/color] [color=RED]([/color][color=BLUE]entmake[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"LAYER"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbSymbolTableRecord"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbLayerTableRecord"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]2[/color] n[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]62[/color] c[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]0[/color][color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]defun[/color] _MText [color=RED]([/color] p s l [color=RED])[/color] [color=RED]([/color][color=BLUE]entmakex[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"MTEXT"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbEntity"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbMText"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]8[/color] l[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]10[/color] [color=RED]([/color][color=BLUE]trans[/color] p [color=#009900]1[/color] [color=#009900]0[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]11[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]UCSXDIR[color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]1[/color] s[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]210[/color] [color=RED]([/color][color=BLUE]trans[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009999]0.[/color] [color=#009999]0.[/color] [color=#009999]1.[/color][color=RED])[/color] [color=#009900]1[/color] [color=#009900]0[/color] [color=BLUE]t[/color][color=RED]))[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=#009900]0[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]foreach[/color] x [color=DARKRED]'[/color][color=RED](([/color][color=#a52a2a]"A-FLOOR-IDEN"[/color] [color=#009900]3[/color][color=RED])[/color] [color=RED]([/color][color=#a52a2a]"A-ANNO-NOTE"[/color] [color=#009900]8[/color][color=RED])[/color] [color=RED]([/color][color=#a52a2a]"A-AREA-IDEN"[/color] [color=#009900]2[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]or[/color] [color=RED]([/color][color=BLUE]tblsearch[/color] [color=#a52a2a]"LAYER"[/color] [color=RED]([/color][color=BLUE]car[/color] x[color=RED]))[/color] [color=RED]([/color][color=BLUE]apply[/color] [color=DARKRED]'[/color]_Layer x[color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]and[/color] [color=RED]([/color][color=BLUE]setq[/color] e [color=RED]([/color][color=BLUE]ssget[/color] [color=#a52a2a]"_+.:E:S"[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"CIRCLE,ELLIPSE,*POLYLINE,SPLINE"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<NOT"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<AND"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"POLYLINE"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<OR"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"&="[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]16[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"&="[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]64[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"OR>"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"AND>"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"NOT>"[/color][color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] a [color=RED]([/color][color=BLUE]vlax-curve-getArea[/color] [color=RED]([/color][color=BLUE]ssname[/color] e [color=#009900]0[/color][color=RED])))[/color] [color=RED]([/color][color=BLUE]setq[/color] *stype* [color=RED]([/color][color=BLUE]cond[/color] [color=RED]([/color] [color=RED]([/color][color=BLUE]eq[/color] [color=#a52a2a]""[/color] [color=RED]([/color][color=BLUE]setq[/color] s [color=RED]([/color][color=BLUE]getstring[/color] [color=BLUE]t[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nEnter Space Type"[/color] [color=RED]([/color][color=BLUE]if[/color] *stype* [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]" <"[/color] *stype* [color=#a52a2a]">: "[/color][color=RED])[/color] [color=#a52a2a]": "[/color][color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] *stype* [color=RED])[/color] [color=RED]([/color] s [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] p [color=RED]([/color][color=BLUE]getpoint[/color] [color=#a52a2a]"\nSpecify Insertion Point: "[/color][color=RED]))[/color] [color=RED])[/color] [color=RED]([/color]_MText p [color=RED]([/color][color=BLUE]strcat[/color] [color=RED]([/color][color=BLUE]rtos[/color] a [color=#009900]2[/color] [color=#009900]2[/color][color=RED])[/color] [color=#a52a2a]" sq ft"[/color][color=RED])[/color] [color=#a52a2a]"A-FLOOR-IDEN"[/color][color=RED])[/color] [color=RED]([/color]_MText [color=RED]([/color][color=BLUE]polar[/color] p [color=RED]([/color][color=BLUE]/[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]3.[/color] [color=BLUE]pi[/color][color=RED])[/color] [color=#009999]2.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]1.5[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]TEXTSIZE[color=RED])))[/color] *stype* [color=#a52a2a]"A-ANNO-NOTE"[/color][color=RED])[/color] [color=RED]([/color]_MText [color=RED]([/color][color=BLUE]polar[/color] p [color=RED]([/color][color=BLUE]/[/color] [color=BLUE]pi[/color] [color=#009999]2.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]1.5[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]TEXTSIZE[color=RED])))[/color] [color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]1+[/color] i[color=RED])))[/color] [color=#a52a2a]"A-AREA-IDEN"[/color][color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color] [color=RED])[/color] [color=red]([/color][color=blue]vl-load-com[/color][color=red])[/color] Edited March 17, 2011 by Lee Mac Quote
Utah_Indie Posted March 17, 2011 Author Posted March 17, 2011 Lee, thank you so much. There are some new commands in there and definitely some top notch tutoring. Can I load this in the visual Lisp module? If I do so it is not recognizing vlax-curve-getArea or _Mtext as commands. Some more tutoring needed evidently, so thanks again. Randy Quote
Lee Mac Posted March 17, 2011 Posted March 17, 2011 Hi Randy, You're very welcome - happy to help. When loading the code in the Visual LISP Editor (or indeed, when using the code), be sure that (vl-load-com) has been called once during the session to load the Visual LISP functions (I should probably have added that to the code, except I have it in my ACADDOC.lsp so don't notice when it is omitted). Also, note that '_MText' will not be shown as a function, since it is a user-defined subfunction Lee EDIT: Added (vl-load-com) to the code. 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.