Aller au contenu

numérotation


Invité samuelM

Messages recommandés

Invité samuelM
Posté(e)

Bonjour,

 

je souhaite revenir qui a été ouvert il y a quelques années mais où je ne peux avoir la réponse.

Voici le lien de la page de ce forum :

http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=6443#pid22965

 

je voudrai pouvoir numéroter avec un texte en plus le plus simplement possible et je crois que la fonction de "rebcao" me convient sauf que je ne sais pas comment la récupérer.

 

mon cas :

je dessine des maisons en ossatures bois et je veux pouvoir, sur mon dessin, indiquer "mur A", "mur B" ... en sélectionnant le dessin entier ou quelque chose comme ça. que ça soit plus simple que d'utiliser la fonction texte où il pet y avoir des erreurs sur la numérotation.

 

Merci à vous

Posté(e)

Je ne connais pas l'outil de rebcao, mais en lisp, l'un incrément alphanumérique peut se faire comme ceci:

 

(defun a+ (a / l) 
	(vl-list->string (reverse (cons (1+ (car (setq l (reverse (vl-string->list a))))) (cdr l)))))

 

avec un gros bug après le "z"

 

Si tu n'arrives pas à insérer ce code dans l'outil de Rebcao (j'imagine qu'il est en DIESEL, ca va donc pas être facile ;)

 

Sinon, entmod, subst, assoc, entget et entsel sont tes amies.

 

(entmod (subst 
  (cons 1 (a+ (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel)))))))))
  ass
  ent))

 

 

RMQ, ce dernier code te servira toute ta vie (moyennant qques modifs :-)

 

 

[Edité le 22/4/2011 par Carboleum]

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Invité samuelM
Posté(e)

Merci pour tes réponses. mais je débute avec la programmation sur autocad. je ne suis pas encore capable de réaliser un programme.

comment j'appelle ta premiere ligne de code une fois que je l'ai chargé sur autocad?

Posté(e)

 

ok!

 

je te fais une fonction complète alors:

 

(defun c:a+ ( / a+ ass ent)
  (defun a+ (a / l) 
     (vl-list->string (reverse (cons (1+ (car (setq l (reverse (vl-string->list a))))) (cdr l)))))
  (entmod (subst 
     (cons 1 (a+ (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel)))))))))
     ass
     ent)))

 

Tu charges ca, puis tu la lances en tapant "a+", alors tu cliques sur un texte.

 

Mais je vois déjà que tu vas me demander de pouvoir compter... ca arrive ;-)

 

 

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Invité samuelM
Posté(e)

Merci pour ton travail.

 

cependant voila ce que ça me met quand je selectionne un objet :(

 Commande: a+
{kk {ii -:):-,:; {jg {rn |") (1 . ":;8: {rn rn {rn {ih o {jo nmo {ij {gn 
90-(>-; _h *1410(1 |") (1 . "):-+:' {rn rn {rn {hh {gm |") (1 . ",+->687+r<*-): 
{rn rn {rn nhgqlhj lfkn kj o o n V V |") (1 . "/061+ {rn rn {rn nhgqlhj lfkn fo 
|") (1 . "<0:;8: {rn rn {rn {kg {hi {jm {hl -:):-,:; {jg {rn |") (1 . 
",+->687+r<*-): {rn rn {rn jgqlhj lfkn kj o rn o V V |") (1 . "/061+ {rn rn {rn 
jgqlhj lfkn kj |") (1 . ":;8: {rn rn {rn {jl o {hg nmo {ho {gl 90-(>-; _h 
*1410(1 |") (1 . "/061+ {rn rn {rn jgqlhj jf kj |") (1 . ",+->687+r<*-): {rn rn 
{rn jgqlhj jf fo rn o o V V |") (1 . "<0:;8: {rn rn {rn {ho {ij {in {hh 
-:):-,:; {jg {rn |") (1 . ":;8: {rn rn {rn {hg o {ih lggm {hi {gk 90-(>-; _h 
*1410(1 |") (1 . "):-+:' {rn rn {rn {hl {gj |") (1 . ",+->687+r<*-): {rn rn {rn 
nhgqlhj jf kj o o n V V |") (1 . "/061+ {rn rn {rn nhgqlhj jf fo |") (1 . 
",+->687+r<*-): {rn rn {rn nhgqlhj lfkn kj rn o o V V |") (1 . "/061+ {rn rn 
{rn nhgqlhj lfkn kj |") (1 . ",+->687+r<*-): {rn rn {rn jgqlhj jf kj n o o V V 
|") (1 . ",+->687+r<*-): {rn rn {rn nhgqlhj jf kj o n o V V |") (1 . "/061+ {rn 
rn {rn nhgqlhj jf kj |"))>1:r,*-9><: {rn rn {rn nhgqlhj lfkn kj n o o o o rn 
90-(>-;@) V V V V |") (1 . "<0:;8: {rn rn {rn {mk {mj {mi {mh 90-(>-; {f {rn 
|") (1 . "<0:;8: {rn rn {rn {mg {nn {mj {mf -:):-,:; {i {rn |") (1 . "<0:;8: 
{rn rn {rn {nn {mg {lo {ln 90-(>-; {i {rn |") (1 . "<0:;8: {rn rn {rn {lm {mi 
{nn {nf -:):-,:; {ll {rn |") (1 . ":;8: {rn rn {rn {lk rlggm {lj o {nn {li 
90-(>-; _h *1410(1 |") (1 . "9><: {rn rn {rn {lh {ll {l {rn {lg 90-(>-; ,6183: 
|") (1 . "300/ {rn rn {rn {rn {lf {nm |") (1 . "/3>1:r,*-9><: {rn rn {rn 
nhgqlhj jf kj o rn o o o rn 90-(>-;@) V V V V |") (1 . "<0:;8: {rn rn {rn {ko 
{kn {km {kl 90-(>-; {nl {rn |") (1 . "<0:;8: {rn rn {rn {kk {nj {kn {kj 
-:):-,:; {f {rn |") (1 . "<0:;8: {rn rn {rn {nj {kk {ni {mf 90-(>-; {f {rn |") 
(1 . "<0:;8: {rn rn {rn {ng {km {nj {mh -:):-,:; {ll {rn |") (1 . ":;8: {rn rn 
{rn {lj rnmo {ki o {nj {kh 90-(>-; _h *1410(1 |") (1 . "<0:;8: {rn rn {rn {nh 
{ni {kg {kf 90-(>-; {i {rn |") (1 . ":;8: {rn rn {rn {jo o {lj kj {mj {jn 
90-(>-; _h *1410(1 |") (1 . "<0:;8: {rn rn {rn {jm {lf {nh {ln -:):-,:; {mn {rn 
|") (1 . ":;8: {rn rn {rn {jl o {lk kj {nh {jk 90-(>-; _h *1410(1 |") (1 . 
"<0:;8: {rn rn {rn {km {ng {lf {jj -:):-,:; {ll {rn |") (1 . "300/ {rn rn {rn 
{rn {ng {mo |") (1 . "):-+:' {rn rn {rn {ln {ji |") (1 . "):-+:' {rn rn {rn {mf 
{jh |") (1 . ",+->687+r<*-): {rn rn {rn jgqlhj lfkn fo o n o V V |") (1 . "9><: 
{rn rn {rn {rn {jg {l {rn {jf -:):-,:; ,6183: |") (1 . "/3>1:r,*-9><: {rn rn 
{rn nngqlhj mooo fo o o n n o o 90-(>-;@) V V V V |") (1 . "<0:;8: {rn rn {rn 
{lo {io {lm {jj 90-(>-; {mn {rn |") (1 . "<0:;8: {rn rn {rn {in {ml {io {im 
-:):-,:; {nl {rn |") (1 . "<0:;8: {rn rn {rn {ml {in {mk {kj 90-(>-; {nl {rn 
|") (1 . "<0:;8: {rn rn {rn {mi {lm {ml {kl -:):-,:; {ll {rn |") (1 . ":;8: {rn 
rn {rn {ki rlggm {il o {ml {ik 90-(>-; _h *1410(1 |") (1 . "<0:;8: {rn rn {rn 
{mj {mk {ij {ii 90-(>-; {f {rn |") (1 . ":;8: {rn rn {rn {ih o {ki kj {kn {ig 
90-(>-; _h *1410(1 |") (1 . "):-+:' {rn rn {rn {kj {if |") (1 . ",+->687+r<*-): 
{rn rn {rn nhgqlhj lfkn fo n o o V V |") (1 . "<0:;8: {rn rn {rn {ij {ho {mg 
{kf -:):-,:; {jg {rn |") (1 . ":;8: {rn rn {rn {jo o {jl lggm {kg {hn 90-(>-; 
_h *1410(1 |") (1 . "):-+:' {rn rn {rn {ii {hm |") (1 . ",+->687+r<*-): {rn rn 
{rn jgqlhj lfkn kj o o n V V |") (1 . "<0:;8: {rn rn {rn {io {lo {ho {hl 
90-(>-; {mn {rn |") (1 . "):-+:' {rn rn {rn {hl {hk |") (1 . ",+->687+r<*-): 
{rn rn {rn jgqlhj jf kj o o n V V |") (1 . ":;8: {rn rn {rn {il rnmo {lk o {lf 
{hj 90-(>-; _h *1410(1 |") (1 . "/061+ {rn rn {rn jgqlhj jf fo |") (1 . "/061+ 
{rn rn {rn jgqlhj lfkn fo |") (1 . "300/ {rn rn {rn {rn {ho {lh |") (1 . 
"/3>1:r,*-9><: {rn rn {rn nngqlhj mooo kj o o n n o o 90-(>-;@) V V V V |") (1 
. "<0:;8: {rn rn {rn {lf {jm {ko {im 90-(>-; {mn {rn |") (1 . "<0:;8: {rn rn 
{rn {kn {ko {hi {hh 90-(>-; {nl {rn |") (1 . ":;8: {rn rn {rn {hg o {il kj {io 
{hf 90-(>-; _h *1410(1 |") (1 . "):-+:' {rn rn {rn {im {go |") (1 . 
",+->687+r<*-): {rn rn {rn nhgqlhj jf fo o rn o V V |") (1 . "<0:;8: {rn rn {rn 
{hi {kg

 

 

Invité samuelM
Posté(e)

Enfin sans les smils!!!

 

que dois je faire?

 

Invité samuelM
Posté(e)

Je vais expliquer plus en détail ce que je souhaiterai pouvoir faire.

 

je dessine de la maison. la maison à des murs que je crée sur des calques différents.

un mur est composé de plusieurs polyligne donc plusieurs objets.

je voudrai, par l'aide d'une fonction, accrocher à un mur (ou un objet du mur) du texte (Mur n) mais qu'il n'y est pas la possibilité d'avoir deux texte pareil. donc faire +1 à chaque fois.

 

je sais pas si je me suis bien expliqué.

 

Posté(e)

Tu avais parlé de texte, hum...

 

(defun c:a++ ( / a++)
(defun a+n (n a / l) 
	(vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l)))))
(setq *n* (cond (*n*) (1)))
(entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel))))))))) ass ent)))

 

Bon,

 

Tu écris un texte (pas un texte multiple), 'Mur A", tu le copie partout où tu veux, puis tu utilise la routine a++ sur chacun des textes;

 

Pour réinitiliser le comptage:

(setq *n* nil)

 

 

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Invité samuelM
Posté(e)

j'avais sélectionné une polyligne et voila ce que çà fait que je sélections un texte

 Commande: a+
Choix de l'objet: ((-1 . ) (0 . "MTEXT") (330 . d'entité: 7ef56cf8>) (5 . "564") (100 . "AcDbEntity") (67 . 0) (410 . "Model") 
(8 . "3ossature") (100 . "AcDbMText") (10 3129.78 2494.98 45.0) (40 . 50.0) (41 
. 432.612) (71 . 1) (72 . 5) (1 . "Mur C") (7 . "Standard") (210 0.0 0.0 1.0) 
(11 1.0 0.0 0.0) (42 . 233.333) (43 . 50.0) (50 . 0.0) (73 . 1) (44 . 1.0))

Invité samuelM
Posté(e)

Merci c'est super. merci de ton aide. il faut maintenant que j'arrive à le réinitialiser avec ton code.

encore merci

Posté(e)

Salut,

 

Regarde le LISP Increment.lsp sur cette page, plusieurs commandes y sont définies, tu devrais bien en trouver une qui fait ton bonheur (INCTXT pour insérer un texte contenant une valeur incrémentée, INCSEL pour incrémenter une valeur dans des textes existants, INCADD pour ajouter un préfixe ou un suffixe incrémenté à des textes existants).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Invité samuelM
Posté(e)

Merci Gille pour cette page, en effet il y a des truc intéressant. j'ai pris inctxt et incsel mais je n'arrive pas bien à m'en servir.

 

Est ce que dans un premier temps quelqu'un peu m'aider à modifier le lisp de Carboleum pour réinitialiser le comptage avec sa ligne de code?

Merci d'avance

Posté(e)

 

Si quelqu'un pouvais modifier mon lisp ;-) comme suit....

 

(defun c:a++ ( / a++ ent)
(defun a+n (n a / l) 
	(vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l)))))

(setq *n* (cond (*n*) (0)))
(initget "Init")
(if (= "Init" (setq ent (entsel "Pick text (i for initialisation): "))) (setq *n* 0 ent (entsel "Pick text: ")))	
(entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car ent)))))))) ass ent)))

 

Pour réinitialiser, tapes i puis au lieu de sélectionner un texte.

 

 

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Invité samuelM
Posté(e)

merci ça fonctionne comme je veux.

 

merci encore

Invité samuelM
Posté(e)

en faite, serai il possible d'apporter une modification? (si ça ne te prend pas trop de temps et si c'est pas trop dur)

garder le même principe que ton programme mais pouvoir faire comme l'outil "copier les propriétés".

 

je m'explique car je suis rarement clair!

après avoir édité mon texte de base, puis l'avoir copié au endroit voulu, je voudrai pour éviter de relancer toujours le programme, pouvoir le lancer une fois, et sélectionner les textes auxquels je voudrai que ça s'applique dans l'ordre que je sélectionne.

 

Est ce assez ensoleillé?

 

Posté(e)

 

 

On va mettre une petite boucle while alors:

 

(defun c:a++ ( / a++ ent)
(defun a+n (n a / l) 
	(vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l)))))

(setq *n* (cond (*n*) (0)))
(while
	(progn
		(initget "Init")
		(if (= "Init" (setq ent (entsel "Pick text (i for initialisation): "))) (setq *n* 0 ent (entsel "Pick text: ")))
		ent)
	(entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car ent)))))))) ass ent))))

 

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Posté(e)

Salut,

 

Carboleum est bien sympa d'essayer de répondre à ta demande (j'espère que ça l'amuse).

 

Je viens d'essayer sa dernière routine elle fait ce que fait INCSUF (dans Increment) avec moins d'options et sans dépasser 9.

 

Si tu prenais la peine de lire les commentaires dans le code qui décrivent les commandes de Increment et de les essayer, je serai étonné que tu ne trouves pas ce que tu cherches (voire plus).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
Salut,

 

Carboleum est bien sympa d'essayer de répondre à ta demande (j'espère que ça l'amuse).

 

???...

 

Je viens d'essayer sa dernière routine elle fait ce que fait INCSUF (dans Increment) avec moins d'options et sans dépasser 9.

 

en fait, ca ne dépasse pas z, car c'est pour numéroter avec des lettres. Je l'avais prévenu au début.

 

Si tu prenais la peine de lire les commentaires dans le code qui décrivent les commandes de Increment et de les essayer, je serai étonné que tu ne trouves pas ce que tu cherches (voire plus).

 

t'es faché ?!??

 

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Posté(e)

???...

Je pense être assez bien placé pour savoir qu'il peut être très amusant d'écrire des routines pour répondre à des demandes. ;)

 

t'es faché ?!??

Certainement pas après toi.

Mais le fait que certains réclament du "sur mesure" à coup de modifications successives plutôt que d'essayer d'utiliser ce qui existe m'agace un peu.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é