Visual LISP, AutoLISP and General Customization

Visual LISP, AutoLISP and General Customization

Reply
Valued Contributor
66 Posts
0 Kudos
Registered: ‎01-22-2010
Post 1 of 9
Accepted Solution

Change stationing text incrementally

302 Views, 8 Replies
04-28-2011 02:31 PM

Is ther a way to change sttioning text incrementally? For example, I have text (0+00) spaced every 100 ft. along the bottom of a profile grid. I want to be able to pick the first, have it change to 1+00, then the second, have it changed to 2+00, etc. I have looked for a lisp routine online, but have not found one. I am not very good at creating them myself, so can anyone help?

paste then type Next_Station in command line

 

 

(defun C:Next_Station (/ num cent)
(vl-load-com)
(setq num (atoi (substr (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect Beginning Station: ")))) 1 1)))
(prompt "\nSelect Next Station: ")
(while (setq cent (vlax-ename->vla-object (car (entsel))))
  (setq num (1+ num))
  (vla-put-textstring cent (strcat (itoa num) (substr (vla-get-textstring cent) 2)))
);while
(princ)
);defun

(defun C:Next (/ Start TxtObject strt Next)
(vl-load-com)
(cond ((and
(setq Start (car (entsel "\nSelect Beginning Station: ")))
(eq (vla-get-ObjectName (setq TxtObject (vlax-ename->vla-object Start))) "AcDbText")
(setq num (vla-get-textstring TxtObject))
(setq strt (itoa (+ (atoi (vl-string-subst "" "+" num)) 100)))
(not (prompt "\nSelect Next Station: "))
(while (setq Next (car (entsel)))
(and
(eq (vla-get-ObjectName (setq TxtObject (vlax-ename->vla-object Next))) "AcDbText")
(not (vla-put-textstring TxtObject
(strcat
(substr strt 1 (- (strlen strt) 2))
"+"
(substr strt (1+ (- (strlen strt) 2))))))
(setq strt (itoa (+ (atoi strt) 100)))
)
)
)
)
)(princ)
)

 

 

Lee Mac has many, many wonderful lisp

 

http://lee-mac.com/numinc.html

*Expert Elite*
6,397 Posts
594 Kudos
Registered: ‎09-16-2009
Post 2 of 9

Re: Change stationing text incrementally

04-28-2011 02:57 PM in reply to: tommcgtx

Why not move them 100'  ?

Valued Contributor
66 Posts
0 Kudos
Registered: ‎01-22-2010
Post 3 of 9

Re: Change stationing text incrementally

04-28-2011 03:23 PM in reply to: tommcgtx

I am not sure I understand what you mean. I want to to pick text (0+00) already placed so that when I am finished, they read as follows:

0+00   1+00   2+00   3+00  ..... and so on, along the bottom of my profile grid. I have some routines that will increment changes, but they only produce the same result for each text (1+00  1+00 1+00), when I want the second and third and so on picks to change by 100 more then the last.

Valued Mentor
357 Posts
24 Kudos
Registered: ‎11-26-2007
Post 4 of 9

Re: Change stationing text incrementally

04-28-2011 04:35 PM in reply to: tommcgtx

paste then type Next_Station in command line

 

 

(defun C:Next_Station (/ num cent)
(vl-load-com)
(setq num (atoi (substr (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect Beginning Station: ")))) 1 1)))
(prompt "\nSelect Next Station: ")
(while (setq cent (vlax-ename->vla-object (car (entsel))))
  (setq num (1+ num))
  (vla-put-textstring cent (strcat (itoa num) (substr (vla-get-textstring cent) 2)))
);while
(princ)
);defun

---sig---------------------------------------
'(83 104 110 101 117 112 104 64 71 109 97 105 108 46 99 111 109)
*Expert Elite*
6,397 Posts
594 Kudos
Registered: ‎09-16-2009
Post 5 of 9

Re: Change stationing text incrementally

04-28-2011 07:06 PM in reply to: tommcgtx

It was a joke (If you moved the text 100' that's where it is)

Civil is my bread and butter :smileyvery-happy:

*Expert Elite*
2,535 Posts
306 Kudos
Registered: ‎11-24-2009
Post 6 of 9

Re: Change stationing text incrementally

04-28-2011 09:36 PM in reply to: Patchy
(defun C:Next (/ Start TxtObject strt Next)
  	(vl-load-com)
(cond ((and
(setq Start (car (entsel "\nSelect Beginning Station: ")))
(eq (vla-get-ObjectName (setq TxtObject (vlax-ename->vla-object Start))) "AcDbText")
(setq num (vla-get-textstring TxtObject))
(setq strt (itoa (+ (atoi (vl-string-subst  "" "+" num)) 100)))
(not (prompt "\nSelect Next Station: "))
(while (setq Next (car (entsel)))
	(and
         (eq (vla-get-ObjectName (setq TxtObject (vlax-ename->vla-object Next))) "AcDbText")
	 (not (vla-put-textstring TxtObject
		  (strcat
		    (substr strt 1 (- (strlen strt) 2))
		    "+"
		    (substr strt (1+ (- (strlen strt) 2))))))
                 (setq strt (itoa (+ (atoi strt) 100)))
			)
		)
	)
)
)(princ)
)

 

 

*Expert Elite*
6,397 Posts
594 Kudos
Registered: ‎09-16-2009
Post 7 of 9

Re: Change stationing text incrementally

04-28-2011 09:43 PM in reply to: pbejse

Lee Mac has many, many wonderful lisp

 

http://lee-mac.com/numinc.html

Valued Contributor
66 Posts
0 Kudos
Registered: ‎01-22-2010
Post 8 of 9

Re: Change stationing text incrementally

04-29-2011 07:08 AM in reply to: tommcgtx

Thank you, Sheneuph and Pbejse, the routines you both posted work great!

Valued Contributor
66 Posts
0 Kudos
Registered: ‎01-22-2010
Post 9 of 9

Re: Change stationing text incrementally

04-29-2011 07:15 AM in reply to: Patchy

Wow! Thanks, Patchy! That program is really something. I would not even begin to know how to do something like that.

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post