tomals Posted June 5, 2009 Share Posted June 5, 2009 Hello I'm wondering if somebody can help me with this one. I have a 2d drawing of a land survey and each point has a piece of numeric text showing the height of that point. I would like to shift all the text values up by 10 metres i.e. text reading 19.57 now reads 29.57 etc... There are several hundred points and the only way I know how to do this at present is by hand or using something like topoGX to create a new model from 2d plan. Does anyone know a simpler and quicker way of doing this. I am using AutoCAD 2006 and we also have AutoCAD 2008LT Many thanks Tom Tom Goodliffe Anglia Land Surveys Ltd Quote Link to comment Share on other sites More sharing options...
dbroada Posted June 5, 2009 Share Posted June 5, 2009 are oyou moving the text in the Z plane or just adding 10 to the value of the text? it would be a relatively trivial task in LISP to add 10 to the value (I am sure a suitable author will be along) and the problem would only be selection. Are all the points alone on one layer or do you want to pick by hand? Quote Link to comment Share on other sites More sharing options...
tomals Posted June 5, 2009 Author Share Posted June 5, 2009 Thanks for your reply. We don't need to move the z values (these are zero), just the text label. The text is on several layers but it would be more than acceptable to move all onto one layer for ease. Would really appreciate some help however trivial to save my calculator batteries (and sanity)! Many thanks Tom Quote Link to comment Share on other sites More sharing options...
David Bethel Posted June 5, 2009 Share Posted June 5, 2009 Maybe something like this: [b][color=BLACK]([/color][/b]defun c:add2txt [b][color=FUCHSIA]([/color][/b]/ r ss i en ed[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]initget 5[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq r [b][color=NAVY]([/color][/b]getdist [color=#2f4f4f]"\nDistance To Change: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect TEXT To Change: "[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 410 [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 67 [b][color=PURPLE]([/color][/b]- 1 [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"TILEMODE"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i [b][color=NAVY]([/color][/b]sslength ss[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]minusp [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1- i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b] ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmod [b][color=MAROON]([/color][/b]subst [b][color=GREEN]([/color][/b]cons 1 [b][color=BLUE]([/color][/b]rtos [b][color=RED]([/color][/b]+ r [b][color=PURPLE]([/color][/b]atof [b][color=TEAL]([/color][/b]cdr [b][color=OLIVE]([/color][/b]assoc 1 ed[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]assoc 1 ed[b][color=GREEN])[/color][/b] ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] -David Quote Link to comment Share on other sites More sharing options...
eldon Posted June 5, 2009 Share Posted June 5, 2009 Or my favourite TEXTMATH, and here is a link http://www.cadtutor.net/forum/showthread.php?t=28952&highlight=textmath&page=2 Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted June 5, 2009 Share Posted June 5, 2009 Another Method (automatic): Specify layer name of text where indicated: (defun c:txtadd (/ dis ss) (vl-load-com) (if (and (setq dis (getdist "\nSpecify Distance: ")) (setq ss (ssget "_X" (list (cons 0 "*TEXT") (cons 8 "[b][color=Red]layername[/color][/b]") (cons 410 (getvar "CTAB")))))) (foreach x (mapcar 'vlax-ename->vla-object (mapcar 'cadr (ssnamex ss))) (vla-put-TextString x (rtos (+ dis (distof (vla-get-TextString x))))))) (princ)) Quote Link to comment Share on other sites More sharing options...
tomals Posted June 5, 2009 Author Share Posted June 5, 2009 Thank you thank you thank you That has saved me hours Tom Quote Link to comment Share on other sites More sharing options...
alanjt Posted June 5, 2009 Share Posted June 5, 2009 i wanna play too... (defun c:TextAdd (/ #ChangeValue #SSList #TextValue) (vl-load-com) (cond ;; state amount to change values by and select text ((and (setq #ChangeValue (getreal "\nValue to increase/decrease text by: ")) (setq #SSList (AT:SS->List (ssget ":L" (list (cons 0 "TEXT,MTEXT") (if (eq 2 (getvar "cvport")) (cons 410 "Model") (cons 410 (getvar "ctab")) ) ;_ if ) ;_ list ) ;_ ssget T ) ;_ AT:SS->List ) ;_ setq ) ;_ and ;; have value amount and selection set, time to modify (mapcar '(lambda (x) ;; skip if text has no numbers (or (zerop (setq #TextValue (atof (vla-get-textstring x)))) (vla-put-textstring x (vl-princ-to-string (+ #TextValue #ChangeValue) ) ;_ vl-princ-to-string ) ;_ vla-put-textstring ) ;_ or ) ;_ lambda #SSList ) ;_ mapcar ) ) ;_ cond (princ) ) ;_ defun oh, and you'll need this subroutine: ;;; Convert selection set to list of ename or vla objects ;;; #Selection - SSGET selection set ;;; #VLAList - T for vla objects, nil for ename ;;; Alan J. Thompson, 04.20.09 (defun AT:SS->List (#Selection #VlaList / #List) (and #Selection (setq #List (vl-remove-if 'listp (mapcar 'cadr (ssnamex #Selection)) ) ;_ vl-remove-if ) ;_ setq (if #VlaList (setq #List (mapcar 'vlax-ename->vla-object #List)) ) ;_ if ) ;_ and #List ) ;_ defun Quote Link to comment Share on other sites More sharing options...
dbroada Posted June 5, 2009 Share Posted June 5, 2009 (I am sure a suitable author will be along)thought so Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted June 5, 2009 Share Posted June 5, 2009 i wanna play too... Not another one like the TILEMODE thread.... Quote Link to comment Share on other sites More sharing options...
alanjt Posted June 5, 2009 Share Posted June 5, 2009 Not another one like the TILEMODE thread.... lol ........ Quote Link to comment Share on other sites More sharing options...
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.