Aller au contenu

Incrémentation automatique


Serge1591

Messages recommandés

Bonjour.

 

Je cherche un LISP ou un ARC ou n'importe quoi d'autre qui me permette d'incrémenter automatiquement. C'est une fonction que je dois faire souvent. Je dois numéroter plusieurs pièces dans le même dessin. J'aimerais simplement sélectionner cette fonction puis, le programme me demande à quelle chifffre ou lettre je veux commencer et si j'ai un suffixe. Exemple: "débuter a" je répond 10, "Suffixe ?" je répond S, puis à chaque clic je position mon identification qui sera toujours additionné de 1 à chaque clic. Exemple 1ier clic - S10, 2ième clic -S11, etc... J'ai vue cette fonction dans logiciel ATHENA de ACOSOFT, qui s,ajoute à Autocad qui m'avais bien épatté.

 

Merci à tous de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Bonjour,

Pour information Patrick, le lisp LATT ne fonctionne pas pour incrementer au dessus de 9.

Je m'explique:

J'ai un bloc avec comme valeur d'attribut : PUI.1

Je veux incrementer le reste des attributs et continuer ensuite sur les attributs d'un bloc identique, je tapote donc LATT, je choisis Ajouter, et Croissant.

De là, je selectionne autant d'attributs que je veux incrementer, mais lorsque j'en selectionne plus de 10, alors il met un slash.

Je me retrouve avec :

PUI.1

PUI.2

.....

PUI.9

PUI/0

PUI/1

......

 

Existe-t-il un outil qui pourrait incrémenter d'autres attributs (quelque soit leur valeur à la base, chiffre ou n'importe quoi) à partir d'un attribut donné, en récupérant uniquement la dernière valeur numérique de l'attribut.

 

C'est à dire qu'il m'aurait plutôt fallu cela:

J'ai un attribut d'un bloc que je nomme PUI.1

Je lance le lisp magique, je lui montre par quel attribut commencer (PUI.1)

Ensuite je selectionne autants d'attributs que je veux et il incrémente de 1 la valeur numérique trouvée dans l'attribut source. Une pression sur Echap me permettrait de sortir de la commande.

 

Bien sûr je ne veux surtout pas indiquer un quelquonque suffixe ou prefixe.

L'outil doit aussi bien continuer à incrémenter à partir de PUI.145 comme à partir de BONJOUR-08, puisqu'il est censé récuperer les derniers chiffres uniquement...

 

Merci de m'aider s'il vous plait au pire à modifier un outil déjà existant...

Salutations.

Lien vers le commentaire
Partager sur d’autres sites

Effectivement oui si je mets 01 ça marche. Merci.

 

Maintenant imaginons que je supprime 2 attributs (je met leur valeur à rien), et que je souhaite recommencer l'incrémentation à partir d'un attribut qui est déjà "lié".

Le lisp me re-rempli les attributs !

 

Autre chose:

J'essaie de repartir du dernier attribut incrémenté par LATT, pour continuer sur d'autres que j'ai rajoutés. Mais le lisp ne me permet pas de choisir "croissant".

 

Merci de votre aide.

 

Lien vers le commentaire
Partager sur d’autres sites

Maintenant imaginons que je supprime 2 attributs (je met leur valeur à rien), et que je souhaite recommencer l'incrémentation à partir d'un attribut qui est déjà "lié".

Le lisp me re-rempli les attributs !

Ce qui est normal, car pour le lisp, ils sont toujours existants.

Dans ce cas, pour supprimer des attributs dans une chaîne --> LATT --> Sélection de la chaîne --> R (pour retirer)

 

J'essaie de repartir du dernier attribut incrémenté par LATT, pour continuer sur d'autres que j'ai rajoutés. Mais le lisp ne me permet pas de choisir "croissant".

Normal, car la chaîne est déjà définie comme croissant. Il suffit de choisir la chaîne puis les attributs à ajouter.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

J'aurais eventuellement ceci à te proposer.

 

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

(DEFUN INCREM (/ oldcmd cmdecho dev der num nbr inc ent ntxt)
(princ "\nINCREM ,VERSION 1.02 ,(c) 1996 par T.B")
(setq oldcmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ent 1)
(setq cont 1)
(setq ntxt "")
(setq dev (getstring T "\nTexte a placer devant le numero a incrementer :"))
(setq der (getstring T "\nTexte a placer derriere le numero a incrementer :"))
(setq num (getint "\nNumero de depart (par defaut 1) :"))
(if (= num nil) ; **valeur par defaut 1
  (setq num 1)
)  
(setq nbr (getint "\nNombre de numero a la suite par texte (par defaut 1) :"))
(if (or (= nbr nil) (= nbr 0)) ; **valeur par defaut 1
  (setq nbr 1)
)  
(setq inc (getint "\nValeur d'incrementation (par defaut 1) :"))
(if (or (= inc nil) (= inc 0)) ; **valeur par defaut 1
  (setq inc 1)
)  
(setq num (- num inc)) ; **pour partir du numero de depart
(while ent
  (setq ent (nentsel "\nSelectionner le texte ou l'attribut a incrementer : "))
  (if ent ;**si il y a selection d'une entite
    (progn
      (setq ent (car ent)) ;**nom de l'entite a modifiee
      (setq ent (entget ent))
      (if (and (/= (cdr (assoc 0 ent)) "TEXT") (/= (cdr (assoc 0 ent)) "ATTRIB"))
        (alert "ERREUR : Mauvaise selection.")
        (progn
          (if (= nbr 1)
            (setq ntxt (strcat dev (itoa (+ num inc )) der))
            (progn
              (while (< cont nbr)
                (setq ntxt (strcat ntxt (strcat dev (itoa (+ num inc )) der "-")))
                (setq num (+ num inc))
                (setq cont (+ 1 cont))
              )
              (while (= cont nbr)
                (setq ntxt (strcat ntxt (strcat dev (itoa (+ num inc )) der)))
                (setq cont (+ 1 cont))
              )
            )
          )
          (setq ent (subst (cons 1 ntxt) (assoc 1 ent) ent))
          (entmod ent);**regenere la base de donnee
          (entupd (cdar ent));**regenere les attributs a l'ecran
          (setq num (+ num inc))
          (setq cont 1)
          (setq ntxt "")
        )
      )
    )
  )
)
(setvar "cmdecho" oldcmd)
(princ "\nOPERATION TERMINEE...")
(princ)
)
(defun c:INCREM () (INCREM))
(princ)

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

 

@+

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

un petit truc vite fait pour répondre à ta demande.

Les paramètres du texte (hauteur style) sont les paramètres courants.

 

(defun c:txt-inc (/ inc suf)
 (and (setq inc (getint "\nDébuter à: "))
      (setq suf (getstring T "\nSuffixe: "))
      (while (setq pt (getpoint "\Spécifiez un point: "))
 (entmake (list
	    '(0 . "TEXT")
	    (cons 10 (trans pt 1 (trans '(0 0 1) 1 0 T)))
	    (cons 40 (getvar "TEXTSIZE"))
	    (cons 7 (getvar "TEXTSTYLE"))
	    (cons 1 (strcat suf (itoa inc)))
	  )
 )
 (setq inc (1+ inc))
      )
 )
 (princ)
) 

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

Lien vers le commentaire
Partager sur d’autres sites

J'y crois à peine :o

 

mais ça devient trop compliqué pour une simple incrémentation.
Merci mais il y a beaucoup trop de "manœuvres".

Non seulement, on donne des lisp qui ne plaisent pas et en plus on fait la fine bouche :casstet:

 

Comme on dit, on n'est jamais aussi bien servit que par soi-même

 

Je continue à la main ça va plus vite.

Bonne continuation

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Salut Patrick

 

Non seulement, on donne des lisp qui ne plaisent pas et en plus on fait la fine bouche
.

 

je confirme, j'ai aussi du mal à y croire; je me suis demander sur quel ton j'allais repondre.

 

Cest pas les scrupules qui les etouffent.

:( :mad:

 

funkybebel a dit:

 

Je continue à la main ça va plus vite

 

Pas trop vite avec ta main quand meme !

 

@+[Edité le 8/10/2007 par lesourd2]

 

[Edité le 8/10/2007 par lesourd2]

Lien vers le commentaire
Partager sur d’autres sites

J'y crois à peine :o

 

mais ça devient trop compliqué pour une simple incrémentation.
Merci mais il y a beaucoup trop de "manœuvres".

Non seulement, on donne des lisp qui ne plaisent pas et en plus on fait la fine bouche :casstet:

 

Comme on dit, on n'est jamais aussi bien servit que par soi-même

 

Je continue à la main ça va plus vite.

Bonne continuation

 

Bonjour,

C'est à dire que j'ai déjà un outil d'incrémentation qui me permettait de faire moins de manœuvres (= clics de souris etc...). Donc c'est pour cela que ça me semblait ne pas pouvoir remplacer ce que j'avais déjà d'existant.

 

Gile, merci, j'essaye ton lisp et te tiens au courant.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Voici ce que j'ai déjà:

http://www.rhodes-tunes.com/misc/outils-incrementation.zip

 

Il s'agit de 3 outils (protégés malheureusement)

 

commande d'incrementation des chiffres : i123

commande d'incrementation des lettres : iabc

commande d'incrementation avancée (avec suffixe...) : icremtxt

 

L'incrémentation des chiffres ne marche que pour les chiffres SANS préfixes ni suffixes !

 

Par contre l'incrémentation avancée permet d'incrémenter n'importe quel ATTRIBUT ou texte avec possibilité de lui indiquer les chaines de suffixe ou préfixe.

Les caractères à ne pas modifier (par exemple préfixe pour ma part) sont à marquer par des points : .

Les caractères qui sont à incrémenter sont à marquer par des étoiles : *

 

Par exemple, si je dois incrémenter PUI.01

Je lance icremtxt puis je lui indique :

1/ Choix du premier texte : => mon attribut PUI.01 (cliquez sur une partie de ce texte correctement sinon la commande s'annule !)

2/ Voulez-vous changer la valeur de départ? : j'appuie sur entrée car je ne veux pas la changer

3/ Pas d'incrémentation : 1 (car je veux incrémenter de 1 à 1)

4/ Chaine d'incrément : Sachant que ma chaine sélectionnée est PUI.01 je choisi donc de taper ....** (4 points et 2 étoiles qui correspondent aux 4 premiers caractères qui doivent rester fixe et les 2 derniers qui seront incrémentés)

 

J'espère que vous avez tous compris.

 

En tout cas, ce qu'il me faudrait (si vous permettez), c'est un outil qui me permette de shunter la partie où je dois dicter au lisp qui doit rester fixe (préfixe ou suffixe) et qui dois être incrémenté.

Il faudrait que le lisp (du moins dans mon cas) repère uniquement les valeurs numériques (qui seront dans mon cas toujours à la fin) et qu'il incrémente celles-ci sans faire atetntion au préfixe quelqu'il soit.

 

Merci, si vous avez des idées...

 

Au fait Gile ton lisp ne me convient pas car il crée un text incrémenté alors que moi je dois agir sur des attributs déjà existants.

Merci quand même et beau boulot !

 

Salutations.

 

[Edité le 10/10/2007 par funkkybebel]

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...
  • 1 mois après...

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é