Multileader numbers

Multileader numbers

WeTanks
Mentor Mentor
921 Views
11 Replies
Message 1 of 12

Multileader numbers

WeTanks
Mentor
Mentor

I want automatic sequence number for Multileader, N-01, N-02, N-03...

Is it possible to lisp?

 

Please refer to the attached documnet.

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

0 Likes
Accepted solutions (1)
922 Views
11 Replies
Replies (11)
Message 2 of 12

pbejse
Mentor
Mentor

@WeTanks wrote:

I want automatic sequence number for Multileader, N-01, N-02, N-03...

Is it possible to lisp?

 

Please refer to the attached documnet.


Yes it is possible.  couple of queries:

  • Default prefix is "N-" 
  • Does it ever go higher that 99? That  will affect the rest of the tag in case it does reach beyond 99. ie. 001, 002... 098, 099, 100 ....

 

 

 

0 Likes
Message 3 of 12

WeTanks
Mentor
Mentor

Thanks Reply
There will be no more than 99.
N-01~N-99 OK

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

0 Likes
Message 4 of 12

komondormrex
Mentor
Mentor

take one. mleader style should be set as baloon.

 

 

 

(defun c:baloon_mleader (/ prefix starting_number numbering_digit_width mleader_ename zeroes_string command_terminated)

	;***************************************************************************************************************************************

	(defun baloon_mleader ( / entity_count mleader_object )
			(setq entity_count (vla-get-count (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))))
			(setvar 'cmdecho 0)
			(vl-cmdf "_.mleader" "_non" (getpoint "\nMleader origin point: ") pause)
			(setq mleader_object (vlax-ename->vla-object (entlast)))
			(if (= (1+ entity_count) (vla-get-count (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))))
				(progn
					(setvar 'cmdecho 1)
					(entlast)
				)
				nil
			)
	)

	;***************************************************************************************************************************************

	(defun get_prompted_value (initget_value get_function prompt_string var command_terminated / default_string var_saved)
	(if (/= 3 (getvar 'dynmode)) (setvar 'dynmode 3))
	(if (null command_terminated)
		(progn
			(setq var_saved (read (strcat (vl-symbol-name var) "_saved")))
			(cond
				(
					(null (vl-symbol-value var_saved))
						(setq default_string "")
				)
				(
					(= 'str (type (vl-symbol-value var_saved)))
						(setq default_string (vl-symbol-value var_saved))
				)
				(
					t
						(setq default_string (rtos (vl-symbol-value var_saved)))
				)
			)
			(initget initget_value)
 			(set var (vl-catch-all-apply get_function (list (strcat "\n" prompt_string " <" default_string ">: "))))
 			(cond
 				(
					(or
						(null (vl-symbol-value var))
						(= "" (vl-symbol-value var))
					)
 						(set var (vl-symbol-value var_saved))
 				)
 				(
 					(vl-catch-all-error-p (vl-symbol-value var))
 						(setq command_terminated t)
 				)
 				(
 					t
 						(set var_saved (vl-symbol-value var))
 				)
 			)
		)
	)
 	command_terminated
)

	;***************************************************************************************************************************************

	(and
		 (null (get_prompted_value 0 'getstring "Set Mleader prefix:" 'prefix command_terminated))
		 (null (get_prompted_value 6 'getint "Set starting number:" 'starting_number command_terminated))
		 (null (get_prompted_value 6 'getint "Set numbering digits width:" 'numbering_digit_width command_terminated))
		 (setq zeroes_string "")
		 (repeat numbering_digit_width (setq zeroes_string (strcat zeroes_string "0")))
		 (while (and
		 			(null (vl-catch-all-error-p (setq mleader_ename (vl-catch-all-apply 'baloon_mleader))))
;					(= 2 (vla-get-contentblocktype (vlax-ename->vla-object mleader_ename)))
				)

			(entmod (subst (cons 302 (strcat prefix
											(substr zeroes_string 1 (- numbering_digit_width (strlen (itoa starting_number))))
											(itoa starting_number)
									 )
						   )
						   (assoc 302 (reverse (entget mleader_ename)))
						   (entget mleader_ename)
					)
			)
			(setq starting_number (1+ starting_number)
				  starting_number_saved starting_number
				  prefix_saved prefix
			)
		 )
	)
	(princ "\nCommand ended")
	(princ)
)

 

0 Likes
Message 5 of 12

pbejse
Mentor
Mentor
Accepted solution

@WeTanks wrote:

Thanks Reply
There will be no more than 99.
N-01~N-99 OK


If you want to take the reactor approach:

  • Only works with the specific MultiLeader style
  • Only works if the "_Nozzlelist2" exists
  • The number will be determined by how many you already have on the current tab following this format "N-##" note that if the number skips, it would be the responsibility of the user. e.g. "01" "02" "04" as existing tags, the next one will be "04" as the existing "04" should be "03"

Refer to attached lsp file [ NextMleader.lsp ]

 

HTH

 

0 Likes
Message 6 of 12

WeTanks
Mentor
Mentor

PERFECT!!!

感謝いたします。

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

0 Likes
Message 7 of 12

pbejse
Mentor
Mentor

@WeTanks wrote:

PERFECT!!!

感謝いたします。


Happy to help 🙂

お力になれて、嬉しいです

 

 

0 Likes
Message 8 of 12

pascal_ostynA3UXX
Community Visitor
Community Visitor

Hi, I am looking for a similar solution.

I have a default multileader style with a default text ("A01").

Can i use a similar "tcount" command for this multileader-style; preferrable in witch the pickorder determins the number. Usually there are no more than 30 numbers (A01 - A30).

Hope you can help me out 🙂

 

0 Likes
Message 9 of 12

RubenS1104
Enthusiast
Enthusiast

I'm looking for the same thing.  I have wires labeled with mleaders and am looking for a way to use tcount with multileaders so that I can do a find and replace line in tcount and have it replace -00 with the numbering -01, -02, -03...

 

Anyone have something that can do this?

 

I usually have something like this in my drawings and would like to not have to go into each mleader object and do the numbering myself when I have over 50 of these

RubenS1104_0-1753465527407.png

 

Thanks

 

0 Likes
Message 10 of 12

Sea-Haven
Mentor
Mentor

You posted elsewhere and was asked for a dwg, best way to test a solution.

0 Likes
Message 11 of 12

Sea-Haven
Mentor
Mentor

Have a look here for a possible solution. https://www.cadtutor.net/forum/topic/98622-tcount-for-multileaders/

0 Likes
Message 12 of 12

RubenS1104
Enthusiast
Enthusiast

Thank you!

0 Likes