Aller au contenu

Messages recommandés

Posté(e)

J'ai dessiné un plan de réseaux sur AutoCad 2004 avec des fil d'eau dans un repère NGF. Ces niveaux sont de simples textes.

 

Aujourd'hui le chantier me demande (à juste titre) de mettre ces fil d'eau non pas en NGF mais par rapport à un niveau donné.

 

Par exemple, j'ai un fil d'eau avec 358.62NGF et je voudrais obtenir -0.60.

 

Je pense que c'est faisable en Lisp mais je n'ai pas le temps de me pencher dessus et je suis sûr que quelqu'un peut me venir en aide ;)

Posté(e)

Salut

C'est l'expérience qui rentre. ;)

Ton niveau, tu le veux à la place de la cote NGF ou juste en dessous, au dessus, à sa droite ou encore à sa gauche ? :exclam:

Encore une chose, tes niveaux, tu les sélectionnes un par un ou on automatise la sélection, dans ce cas, il faut quelque chose que distingue ton texte des autres (calque, style, hauteur et j'en passe)

 

@+

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

Posté(e)

Salut Patrick

 

En fait je pense garder mes niveaux NGF et rajouter les autres niveaux en dessous.

Tous mes textes sont dans un calque bien défini. :

Par exemple, Calque EP dans lequel j'ai mes textes niveau ainsi que les réseaux en eux-mêmes.

 

MErci d'avance

Posté(e)

Tout chaud, tout frais

(setq nivbase (getreal "\nNiveau de référence : "))
(setq sel (ssget "x" (list (cons 0 "TEXT") (cons 8 "0")))) ; sélectionne les textes sur le calque 0, à modifier en fonction des besoins
(setq n 0)
(while (ssname sel n)
 (setq obj (entget (ssname sel n)))
 (setq txt (vl-string-subst "" "NGF" (cdr (assoc 1 obj))))
 (setq val_txt (rtos (- (atof txt) nivbase) 2))
 (setq pos_y (- (caddr (assoc 11 obj)) (* (cdr (assoc 40 obj)) 1.5)))
 (setq ent (vl-remove (assoc -1 obj) obj))
 (setq ent (vl-remove (assoc 330 ent) ent ))
 (setq ent (vl-remove (assoc 5 ent) ent ))
 (setq ent (subst (cons 11 (list (cadr (assoc 11 ent)) pos_y (cadddr (assoc 11 ent)))) (assoc 11 ent) ent))
 (setq ent (subst (cons 1 val_txt) (assoc 1 ent) ent))
 (entmake ent)
 (setq n (1+ n))
)

@+

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

Posté(e)

hello,

la réponse de Patrick_35 est très bonne,

mais pour une efficacité maximale,

je pense qu'il faudrait en profiter pour,

créer un bloc avec trois attributs,

un : l'altitude NGF du Fil d'Eau,

deux : L'altitude NGF du point de référence local

trois : la différence entre ces deux points.

 

Ainsi traité, le fichier deviendra "intelligent",

car si on change le point de référence pour une raison ou une autre,

il n'y a plus qu'à faire un petit lisp qui va re-coter Tous les Fil d'Eau.

étonnant non ?

et tonnant non ?

Posté(e)

Bonjour à vous deux

Je suis bien d'accord avec toi didier, rien ne vaut les attributs, mais bon, on fait avec ce que l'on a ;)

 

Pour ldidber

Je viens de voir qu'il y avait un oubli dans le lisp. Je n'ai pas tenu compte des justifications

Normalement, ton texte se positionne en dessous du texte d'origine.

(setq nivbase (getreal "\nNiveau de référence : "))
(setq sel (ssget "x" (list (cons 0 "TEXT") (cons 8 "0")))) ; sélectionne les textes sur le calque 0, à modifier en fonction des besoins
(setq n 0)
(while (ssname sel n)
 (setq obj (entget (ssname sel n)))
 (setq txt (vl-string-subst "" "NGF" (cdr (assoc 1 obj))))
 (setq val_txt (rtos (- (atof txt) nivbase) 2))
 (if (and (/= (cadr (assoc 11 obj)) 0) (/= (caddr (assoc 11 obj)) 0))
   (setq codedxf 11)
   (setq codedxf 10)
 )
 (setq pos_y (- (caddr (assoc codedxf obj)) (* (cdr (assoc 40 obj)) 1.5)))
 (setq ent (vl-remove (assoc -1 obj) obj))
 (setq ent (vl-remove (assoc 330 ent) ent ))
 (setq ent (vl-remove (assoc 5 ent) ent ))
 (setq ent (subst (cons codedxf (list (cadr (assoc codedxf ent)) pos_y (cadddr (assoc codedxf ent)))) (assoc codedxf ent) ent))
 (setq ent (subst (cons 1 val_txt) (assoc 1 ent) ent))
 (entmake ent)
 (setq n (1+ n))
)

 

ps : Tous les textes qui sont sélectionnés sont sur le calques 0 (code dxf 8)

 

@+

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

Posté(e)

SUPER PATRIIIIIICK ;)

 

ça fonctionne mieux :D

 

Une question me taraude: dans le lisp, je vois un NGF entre guillemets, normalement ça devrait bien NGF non :exclam: mais je n'ai pas de texte NGF dans mon dessin après exécution du lisp

Posté(e)

Quand je récupère le texte, je ne sais pas ce qui est écrit dedans et d'après ta demande, tu indiquais un niveau de 358.62NGF et comme j'ai besoin d'une valeur numérique pour faire une soustraction, je dois virer le NGF afin de convertir le texte 358.62 en réel. Voilà pourquoi c’est là

 

@+

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

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é