Aller au contenu

TEXTES PREFIXE & SUFFIXE


lili2006

Messages recommandés

Bonjour à toutes et tous,

 

Voici la raison de ma demande. Sur l'image ci-dessous, en exemple, un reperage de Semelle Filante (SF) avec son N° (à incrémenter) et son équarissage largeur x hauteur (à pouvoir modifier durant l'insertion).

J'ai donc plusieurs besoins :

 

1) Le texte du repérage (ici SF) doit rester fixe avec un certain style de texte et une certaine hauteur;

2) Le N° de repérage (ici 1 par défaut) doit pouvoir s'incrémenter éventuellement avec le même style et le même hauteur de texte que le repère (SF dans notre exemple);

3) L'équarissage doit pouvoir avoir un style de tetxe (ou tout du moins la hauteur !) différent du repérage et du N° et l'on doit pouvoir prendre la main sur la largeur et la hauteur (en attributs ou en texte, peu importe car trés souvent les équarissages sont identiques Mais, peuvent aussi ponctuellement varier dans une série à incrémenter !).

 

Pour lre momment, comment je pratique :

 

C'est élément est un bloc, que j'insère une fois (avec ou non possibilité de remplir le ou les attribut(s)) et puis que je copie => Inconvénient : il faut ensuite modifier un par un les N° et de temps à autres l'équarissage, bof !

 

Ou bien, j'insère (depuis la palette d'outils) un à un les repérages et je remplie le ou les attribut(s) tout de suite à l'insertion. Rebof !

 

Quoi qu'il en soit les deux méthodes ne me conviennent pas car longue.

 

L'idéal aurait été une incrémentation automatique d'un bloc qui a un préfixe et un suffixe constitué de styles de textes différents, ...

avec possibilité durant la chaine d'incrémentation de prendre la main sur l'équarissage.

 

En un mot, un bloc (ou même du texte, plus difficile cependant pour métré ensuite,...) qui pourrait avoir un attribut (ou plusieurs ??!!) qui s'incrémente.

 

 

<!--url{0}-->

 

Cela existe peut-être, mais je n'ai pas trouvé ou bien cela est impossible (ce qui m'étonnerai vu les spécialistes sur ce site). Ce qui me surprend le plus, c'est que l'on n'ai pas cette possibilité par défaut sur AutoCAD, pas vous ??

 

Merci à ceux qui tenterons de trouver une solution.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il me semble bien avoir lu de nombreux sujet à propos de cette demande récurrente et des réponses en LISP ont été données par Bonuscad et Patrick_35.

Fais une recherche dans les forums avec "incrémentation" ou "incrément" dans les nombreuses réponses tu dois bien trouver une routine qui, si elle ne répond pas directement à ta demande, doit pouvoir y être adaptée.

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

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Merci (gile) de ta réponse. J'ai bien trouvé des choses mais avec les contraintes que je me suis imposés, j'ai encore rien trouvé. Je vais donc poursuivre mes recherches,...

 

si elle ne répond pas directement à ta demande, doit pouvoir y être adaptée.

 

Hum, j'suis loin d'en être là !

 

Bon dimanche.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Tu touveras un petit lisp ci-dessous qui incrémente de +1 un attribut.

Pour faire ce que tu cherches à réaliser, il faut que tu créés un bloc ayant un texte "SF", à côté un attribut constant REPERAGE pour le reperage, et un attribut que tu renseignes à l'insertion pour la dimension.

Par contrelaisse de la place entre l'attribut REPERAGE etl'attribut de dimension car si tu dépasses la dixaine il risque d'y avoir superposition.

 

(defun c:inc+ (/ BLC LST)
  (while (not blc)
   (setq blc (car (entsel "\n Choix du Bloc avec attribut 'REPERAGE' :")))
   (if (not (equal (cdr (assoc 0 (entget blc))) "INSERT"))
     (setq blc nil)
     )
   )
(setq lst (safearray-value
      (vlax-variant-value (vla-getAttributes (vlax-ename->vla-object blc)))))
 (foreach n lst
   (if (equal (strcase (vla-get-TagString n)) "REPERAGE")
     (vla-put-TextString n (rtos (+ (atoi (vla-get-TextString (nth 0 lst))) 1)))
     (princ "\nPas d'attribut 'REPERAGE'"))
   )
 )

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

re,

 

Merci Bred. J'ai testé en fonction de tes remarques et c'est déjà mieux que ce que je faisais avant, donc .....

 

Cela est bizarre tout de même de ne pas pouvoir réalisé le genre de repérage comme je décris ci-dessous. On peut faire des trucs super balaise avec AutoCAD (Blocs Dyn, 3D, jeu de feuilles,...) et pour un simple bloc, galère,.... (et j'en ai un paquet comme ça !). Si cette méthode me convient, j'ai estimé à une trentaine de blocs de repérage à modifier, d'ou l'importance pour moi, de cette question,...

 

Autre question que je me pose, du coup, comment font les autres pour utiliser ce genre d'outils ? Moi je ne m'en sers qu'à l'occasion puisqu'en topo, on a pas trop le pb, mais je pense à tous les autres corps de métier qui utilisent autant la représentation que l'appelation,...

 

La question est donc lancé, et vous autres, projeteurs, comment faites-vous ??

 

Je teste plus profondément dés que j'ai l'occasion et donne mon sentiment.

 

[Edité le 7/10/2007 par lili2006]

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Re,

pour automatiser un peu plus l'incrémentation, tu trouveras ci-dessous un lisp qui incrémente de +1 par rapport à la valeur maxi trouvé dans les blocs déjà présent dans ton plan.

J'ai considéré que ton bloc s'appelle SF, à toi de modifier le lisp si ce n'est pas le cas.

 

(defun c:inc+ (/ BLC I INC LST SEL SF)  
 (setq sel (ssget "_X" '((2 . "[b]sf[/b]")))
inc 1)
 (if sel
   (progn
     (repeat (setq i (sslength sel))
(setq sf (vlax-ename->vla-object (ssname sel (setq i (1- i))))
      lst (safearray-value (vlax-variant-value (vla-getAttributes sf))))
(foreach n lst
  (if (equal (strcase (vla-get-TagString n)) "REPERAGE")
    (if (> (atoi (vla-get-TextString n)) inc)
      (setq inc (atoi (vla-get-TextString n))))))))
   )
 (while (not blc)
   (setq blc (car (entsel "\n Choix du Bloc avec attribut 'REPERAGE' :")))
   (if (not (equal (cdr (assoc 0 (entget blc))) "INSERT"))
     (setq blc nil)
     )
   )
 (setq lst (safearray-value
      (vlax-variant-value (vla-getAttributes (vlax-ename->vla-object blc)))))
 (foreach n lst
   (if (equal (strcase (vla-get-TagString n)) "REPERAGE")
     (vla-put-TextString n (rtos (+ (atoi (vla-get-TextString (nth 0 lst))) inc)))
     )
   )
 )

 

... on pourrait encore plus automatiser la chose, en le faisant à l'insertion par exemple.

A toi de le dire.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

C'est vraiment trés sympa à toi Bred de me proposer de travailler mon problème. Ce genre de petites routines sont parfaites pour évoluer en Lisp (surtout essayer de comprendre !!).

 

... on pourrait encore plus automatiser la chose, en le faisant à l'insertion par exemple.

 

 

Ah ah, méfie-toi Bred, je suis toujours partant pour évoluer,...

 

Si tu as le temps, je veux bien voir ce que cela pourrait donner.

 

Merci encore.

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à vous

 

BRED, je souhaite obtenir une quadri incrémentation sur un bloc.

 

Je m'explique,

j'ai un bloc avec 4 attributs,

ces 4 attributs portent chaque un : (une étiquette et un invité) comme cela:

 

Attribut 1 : étiquette= T1 , invité= TERMINAL1

 

Attribut 2: étiquette= T2 , invité= TERMINAL2

 

Attribut 3 : étiquette= T3 , invité= TERMINAL3

 

Attribut 4 : étiquette= T4 , invité= TERMINAL4

 

Ma demande et d'obtenir une incrémentation de type: 1,2,3,4 en sélectionnant le 1er bloc , puis: 5,6,7,8 en sélectionnant le 2nd bloc, et ainsi de suite ...

 

A savoir je ne connais rien en LISP , c'est en lisant la demande de LILI2006, que m'est venue l'idée de poser cette question.

 

Merci

 

PS : si cela est possible , peut-on ajouter une option pour le choix du numéro du début de notre incrémenter souhaitée.

 

 

[Edité le 7/10/2007 par JUJUZAZA]

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

[surligneur]

pour automatiser un peu plus l'incrémentation, tu trouveras ci-dessous un lisp qui incrémente de +1 par rapport à la valeur maxi trouvé dans les blocs déjà présent dans ton plan. [/surligneur]

SF1xxx c'est comme les Pxxx ou les xxx tout court ou autre chxxx, Lxx etc... Tout dépend de la méthode de travaille des BE. Ce que je veux dire c'est qu'un projet peut être découpé en zone genre plan de fondation zone 1, plan de fondation zone 2...Zone 1 = n° de 100 à 199 et zone 2 n°200 à 299 etc...Et je ne parles pas du reste des hics du repérage. Mais bon...

Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à vous tous

 

Pour lili

Tu as le lisp LATT qui peut répondre à ton besoin, mais pour cala, il faut que tu divises ton attribut en 3.

A savoir :

Le premier contenant le texte de repérage.

Le second contenant la valeur à incrémenter.

Le troisième l'équarrissage.

 

Ces attributs peuvent être alignés afin que graphiquement cela ne forme qu'une ligne (comme si on avait en réalité qu'un seul attribut)

De plus, comme ils sont indépendants, plus de soucis pour faire différents styles de textes.

 

Pour JUJUZAZA

Le lisp LATT correspond exactement à ton besoin.

Tu fais une liaison (de type croissant) sur les attributs de ton premier bloc, puis avec des copier, réseaux, etc.. les attributs du bloc que tu as auparavant liés s'incrémenteront automatiquement.

Et si tu efface un de ces blocs, oh surprise, la numérotation s"ajuste :)

 

@+

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

Bonsoir à toutes et tous,

 

Bred Une fois de plus, merci. Tes écritures me permettent de rentrer gentiment dans le monde du Lisp, en essayant de comprendre le fonctionnemnt par rapport à un problème particulier.

 

Patrick_35, c'est marrant, c't'aprém, j'étais en train de me convaincre que LATT était une des solutions à ce genre de problème et ta réponse va me permettre d'aller plus vite pour la redéfinition de mes blocs et surtout me réconforter sur toute sa puissance d'utilisation. C'est ça notre problème à nous, "ignares", c'est tout simplement de ne pas savoir adapterun prog à nos propres besoins,...

Mais, une fois de plus, il suffit de faire confiance à celui qui l'à écrit, car lui c'est ce qu'on peut en faire (et autres utilsateurs confirmé, bien sûr !). Merci encore de ta réponse. J'ai suivi également le post sur "incrémentation automatique" et y ai vu un autre aspect de ce lisp. Je pense qu'il faut que les xcadiens prennent conscience qu'il faut un minimum d'investissement pour "essayer" de comprendre l'esprit dans lequel l'auteur à écrit son lisp et même si on ne comprend pas l'écriture, il nous reste le décodage et le test des différentes possibilités d'utilisation,... Trés souvent, je reste "scotché", car comme je l'ai écrit plus haut, souvent balaise AutoCAD, mais au moins aussi souvent, balaise, les lispeurs qui répondent à des problèmes basiques d'utilisation courante. LATT en un est un trés bon exemple.

 

Continuez comme ça et au plaisir de vous lire.

 

PS : Bred & Patrick_35 : Je teste dans les jours qui viennent et je revient !

 

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

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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é