Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

j'aimerai faire un reperage rapide et récuperer le nom du bloc que je repère.

dois je automatiquement créer un prog (lisp, vba, script) ou y'a t'il une petite bidouille plus simple

Merci

Posté(e)

Dans le même esprit que la réponse de Tramber, mais développé dans ton sens:

 

(defun c:lead_block-name ( / ent dxf_ent typ_ent blk_name pt_lst pt)
(while (null (setq ent (entsel "\nChoix de l'entité: "))))
(setq
	dxf_ent (entget (car ent))
	typ_ent (cdr (assoc 0 dxf_ent))
)
(if (eq typ_ent "INSERT")
	(progn
		(setq 
			blk_name (cdr (assoc 2 dxf_ent))
			pt_lst (list (trans (cdr (assoc 10 dxf_ent)) (car ent) 1))
		)
		(while (setq pt (getpoint (car pt_lst) "\nIndiquez le point suivant: "))
			(setq pt_lst (cons pt pt_lst))
		)
		(command "_.leader")
		(foreach n (reverse pt_lst) (command n))
		(command "" blk_name "")
	)
	(princ "\nEntité n'est pas une insertion de bloc!")
)
(prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

  • 6 ans après...
Posté(e)

je reviens vers vous concernant ce lisp, mais, j'ai une petite question

Y-a-t'il possibilité de changer le point d'origine du nom du bloc, c'est à dire qu'au lieu que le nom du bloc parte de l'origine du bloc, il parte de la ou l'on clic sur le bloc.? (car parfois, dans mon cas, il faut que je déplace la flèche et le texte)

 

je sais pas si je me fais comprendre.

 

par avance merci

Posté(e)

justement, c'est un mélange des 2.

le principe des lignes de repères qui permet de mettre le repère la ou on veut, et la "puissance" du lisp pour donner le nom du bloc

 

pour la ligne de repère, on clique la ou on veut et on écrit le nom du bloc ou autre chose.

 

pour le lisp, on clique sur le nom du bloc et il nous place le repère sur l'origine du bloc (et on a pas le choix de l'emplacement.

 

je voudrais un mélange des 2

 

on clic sur le bloc la ou on veut et il nous ecrit le nom du bloc....

Posté(e)

Y-a-t'il possibilité de changer le point d'origine du nom du bloc, c'est à dire qu'au lieu que le nom du bloc parte de l'origine du bloc, il parte de la ou l'on clic sur le bloc.?

 

Bonjour,

 

Changes l'expression

pt_lst (list (trans (cdr (assoc 10 dxf_ent)) (car ent) 1)) 

par

pt_lst (list (osnap (trans (cadr ent) (car ent) 01) "_near")) 

 

Si la sélection se fait sur un texte ou un attribut constituant du bloc, pour que le code fonctionne, on peut l'envisager sous cette forme:

 

(defun c:lead_block-name ( / ent dxf_ent typ_ent blk_name pt_lst pt)
 (while (null (setq ent (entsel "\nChoix de l'entité: "))))
 (setq
   dxf_ent (entget (car ent))
   typ_ent (cdr (assoc 0 dxf_ent))
 )
 (if (eq typ_ent "INSERT")
   (progn
     (setq 
       blk_name (cdr (assoc 2 dxf_ent))
       pt_lst (osnap (trans (cadr ent) (car ent) 0) "_near")
     )
     (if (not pt_lst)
       (setq pt_lst (list (osnap (trans (cadr ent) (car ent) 0) "_ins")))
       (setq pt_lst (list pt_lst))
     )
     (while (setq pt (getpoint (car pt_lst) "\nIndiquez le point suivant: "))
       (setq pt_lst (cons pt pt_lst))
     )
     (command "_.leader")
     (foreach n (reverse pt_lst) (command "_none" n))
     (command "" blk_name "")
   )
   (princ "\nEntité n'est pas une insertion de bloc!")
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité